diff --git a/lib/actions/app.coffee b/lib/actions/app.coffee index d858cdd0..db9cfdc9 100644 --- a/lib/actions/app.coffee +++ b/lib/actions/app.coffee @@ -2,6 +2,7 @@ _ = require('lodash') device = require('../device/device') table = require('../table/table') server = require('../server/server') +widgets = require('../widgets/widgets') applicationModel = require('../models/application') authHooks = require('../hooks/auth') config = require('../config') @@ -38,3 +39,9 @@ exports.restart = authHooks.failIfNotLoggedIn (id) -> # TODO: Move this URL to config server.post "/application/#{id}/restart", (error) -> throw error if error? + +exports.remove = authHooks.failIfNotLoggedIn (id) -> + widgets.confirmRemoval 'application', (error, confirmed) -> + return if not confirmed + applicationModel.remove(id).catch (error) -> + throw error if error? diff --git a/lib/app.coffee b/lib/app.coffee index b5dda00d..7508093e 100644 --- a/lib/app.coffee +++ b/lib/app.coffee @@ -41,6 +41,11 @@ program .description('Restart an application') .action(app.restart) +program + .command('app:rm ') + .description('Remove an application') + .action(app.remove) + # ---------- Device Module ---------- device = require('./actions/device') diff --git a/lib/models/application.coffee b/lib/models/application.coffee index fd1e3e9b..e8326a61 100644 --- a/lib/models/application.coffee +++ b/lib/models/application.coffee @@ -18,3 +18,8 @@ exports.get = (id) -> Promise.reject(new Error('Not found')) return application + +exports.remove = (id) -> + return canvas.delete + resource: 'application' + id: id diff --git a/lib/widgets/widgets.coffee b/lib/widgets/widgets.coffee index f46ca3f7..2b9eb89c 100644 --- a/lib/widgets/widgets.coffee +++ b/lib/widgets/widgets.coffee @@ -14,3 +14,14 @@ exports.login = (callback) -> message: 'Password' } ], _.partial(callback, null)) + +exports.confirmRemoval = (name, callback) -> + inquirer.prompt [ + { + type: 'confirm' + name: 'confirmed' + message: "Are you sure you want to delete the #{name}?" + default: false + } + ], (response) -> + return callback(null, response.confirmed)