huxley-cli
Version:
CLI for Huxley Deployment Platform
114 lines (97 loc) • 3.8 kB
text/coffeescript
{resolve} = require "path"
{async} = require "fairmont"
{discover} = (require "pbx").client
{build_error} = require "./helpers"
module.exports =
cluster:
create: async (spec) ->
try
clusters = (yield discover spec.huxley.url).clusters
{response: {headers: {id}}} = yield clusters.create spec
return "Cluster creation In Progress. \nName: #{spec.cluster.name} \nCluster ID: #{id}"
catch error
throw build_error "Unable to construct Huxley cluster.", error
delete: async (spec) ->
try
cluster = (yield discover spec.huxley.url).cluster spec.cluster.name
{data} = yield cluster.delete spec
data = yield data
data.message = "Cluster deletion In Progress."
return data
catch error
throw build_error "Unable to delete Huxley cluster.", error
get: async (spec) ->
try
cluster = (yield discover spec.huxley.url).cluster spec.cluster.name
{data} = yield cluster.get
.authorize bearer: spec.huxley.token
.invoke()
return data
catch error
throw build_error "Unable to retrieve cluster data.", error
list: async (spec) ->
try
clusters = (yield discover spec.huxley.url).clusters
{data} = yield clusters.list
.authorize bearer: spec.huxley.token
.invoke()
return data
catch error
throw build_error "Unable to retrieve clusters list data.", error
remote:
create: async (spec) ->
try
remotes = (yield discover spec.huxley.url).remotes
{response: {headers: {id}}} = yield remotes.create spec
return "Githook installed on cluster #{spec.cluster.name} \nID: #{id}"
catch error
throw build_error "Unable to install remote githook.", error
delete: async (spec) ->
try
remote = (yield discover spec.huxley.url).remote {cluster_id: spec.cluster.id, repo_name: spec.app.name}
yield remote.delete
.authorize bearer: spec.huxley.token
.invoke()
return "Githook remote has been removed."
catch error
throw build_error "Unable to remove remote githook.", error
pending:
list: async (spec) ->
try
pending = (yield discover spec.huxley.url).pending
{data} = yield pending.get
.authorize bearer: spec.huxley.token
.invoke()
return yield data
catch error
throw build_error "Unable to retrieve pending commands.", error
profile:
create: async (spec) ->
try
profiles = (yield discover spec.huxley.url).profiles
{response: {headers: {token}}} = yield profiles.create spec
return {
message: "*****profile \"#{spec.profile.name}\" created. Secret token stored."
token: token
}
catch error
throw build_error "Unable to create profile.", error