UNPKG

mecano

Version:

Common functions for system deployment.

74 lines (70 loc) 2.13 kB
// Generated by CoffeeScript 1.11.1 var fs, path; module.exports = function(options, callback) { var cmd, dir, ext, format, name; options.log({ message: "Entering compress", level: 'DEBUG', module: 'mecano/lib/compress' }); if (!options.source) { return callback(new Error("Missing source: " + options.source)); } if (!options.target) { return callback(new Error("Missing target: " + options.target)); } options.source = path.normalize(options.source); options.target = path.normalize(options.target); dir = path.dirname(options.source); name = path.basename(options.source); if (options.format != null) { format = options.format; } else { if (/\.(tar\.gz|tgz)$/.test(options.target)) { format = 'tgz'; } else if (/\.tar$/.test(options.target)) { format = 'tar'; } else if (/\.zip$/.test(options.target)) { format = 'zip'; } else if (/\.bz2$/.test(options.target)) { format = 'bz2'; } else if (/\.xz$/.test(options.target)) { format = 'xz'; } else { ext = path.extname(options.source); return callback(Error("Unsupported extension, got " + (JSON.stringify(ext)))); } } cmd = null; switch (format) { case 'tgz': cmd = "tar czf " + options.target + " -C " + dir + " " + name; break; case 'tar': cmd = "tar cf " + options.target + " -C " + dir + " " + name; break; case 'bz2': cmd = "tar cjf " + options.target + " -C " + dir + " " + name; break; case 'xz': cmd = "tar cJf " + options.target + " -C " + dir + " " + name; break; case 'zip': cmd = "(cd " + dir + " && zip -r " + options.target + " " + name + " && cd -)"; } return this.execute({ cmd: cmd }, function(err, created) { if (err) { return callback(err); } return fs.exists(options.ssh, options.target, function(err, exists) { if (!exists) { return callback(new Error("Failed to create '" + options.target + "'")); } return callback(null, true); }); }); }; fs = require('ssh2-fs'); path = require('path');