UNPKG

p42

Version:

CLI wrapper for using Docker with Swarm.

131 lines (116 loc) 3.67 kB
// Generated by CoffeeScript 1.10.0 (function() { var Config, Errors, Target, Usage, YAML, abort, action, async, call, includes, isBranch, isCluster, join, read, readdir, ref, ref1, rest, write, slice = [].slice; join = require("path").join; YAML = require("js-yaml"); ref = require("fairmont"), async = ref.async, call = ref.call, read = ref.read, readdir = ref.readdir, write = ref.write, abort = ref.abort, includes = ref.includes; Errors = { invalidBranch: function(branch) { return abort("p42: Invalid branch: " + branch); }, invalidCluster: function(cluster) { return abort("p42: Invalid cluster: " + cluster); }, invalidConfig: function() { return abort("p42: Invalid application configuration.\nTry running: p42 init"); }, errorWritingConfig: function() { return abort("p42: Unexpected error updating application configuration."); } }; Usage = { main: function() { return abort("Usage: p42 target [add|rm|remove|mv|rename] <branch> <cluster>"); }, add: function() { return abort("Usage: p42 target add <branch> <cluster>"); }, remove: function() { return abort("Usage: p42 target [remove|rm] <branch> <cluster>"); }, rename: function() { return abort("Usage: p42 target [rename|mv] <branch> <branch>"); } }; isBranch = function(name) { return true; }; isCluster = async(function*(name) { return includes(name, (yield readdir(join(process.env.HOME, ".config", "p42", "clusters")))); }); Config = (function(configPath) { return { read: async(function*() { var config, error; try { config = YAML.safeLoad((yield read(configPath))); if (config.clusters == null) { config.clusters = {}; } return config; } catch (error) { return Errors.invalidConfig(); } }), write: async(function*(config) { var error; try { return (yield write(configPath, YAML.safeDump(config))); } catch (error) { return Errors.errorWritingConfig(); } }) }; })(join(".", "p42.yaml")); Target = { add: async(function*(branch, cluster) { var config; if (!((branch != null) && (cluster != null))) { Usage.add(); } if (!isBranch(branch)) { Errors.invalidBranch(branch); } if (!(yield isCluster(cluster))) { Errors.invalidCluster(cluster); } config = (yield Config.read()); config.clusters[branch] = cluster; return (yield Config.write(config)); }), remove: async(function*(branch) { var config; if (branch == null) { Usage.remove(); } if (!isBranch(branch)) { Errors.invalidBranch(branch); } config = (yield Config.read()); delete config.clusters[branch]; return (yield Config.write(config)); }), rename: async(function*(before, after) { var config; if (!((before != null) && (after != null))) { Usage.rename(); } if (!isBranch(after)) { Errors.invalidBranch(after); } config = (yield Config.read()); config.clusters[after] = config.clusters[before]; delete config.clusters[before]; return (yield Config.write(config)); }) }; Target.rm = Target.remove; Target.mv = Target.rename; ref1 = process.argv.slice(2), action = ref1[0], rest = 2 <= ref1.length ? slice.call(ref1, 1) : []; if (Target[action] != null) { Target[action].apply(Target, rest); } else { Usage.main(); } }).call(this);