UNPKG

2.04 kBJavaScriptView Raw
1var inquirer = require('inquirer');
2var Domo = require('ryuu-client-beta');
3var Manifest = require('../util/manifest');
4var Login = require('../util/login');
5var log = require('../util/log');
6var evoke = require('../util/evoke');
7var multichoice = require('../util/multichoice');
8var appStructure = require('../util/appStructure');
9var messages = require('../util/messages');
10var constants = require('../util/constants');
11
12module.exports = function(program){
13 program
14 .command('release')
15 .description('prepare a design for app store release')
16 .action(function(){
17 var login = Login.getMostRecentLogin();
18 Login.verifyLogin(login);
19 var domo = new Domo(login.instance, login.refreshToken, constants.CLIENT_ID);
20 var manifest = Manifest.get(program.manifest);
21
22 // make sure app has been published first
23 if (!manifest.id){
24 log.fail('Can\'t release until design is published.', 'Please publish your Custom App design (with the `domo publish` command) first');
25 }
26
27 // make sure there is a thumbnail.png when releasing
28 if (!appStructure.hasThumbnail()) {
29 log.fail(messages.THUMBNAIL_CREATE_WARNING, messages.CREATE_THUMBNAIL);
30 }
31
32 // prompt the user for which design version they want to release, defaulting to latest
33 domo.getVersions(manifest.id)
34 .then(function(versions){
35 versions.reverse();
36 versions.unshift('latest');
37
38 inquirer.prompt([
39 multichoice({
40 type: 'list',
41 message: 'select a version to release',
42 name: 'version',
43 choices: versions
44 })], function(answers){
45 // release the kraken
46 domo.release(manifest.id, answers.version)
47 .tap(evoke(log.ok, 'Design version ('+answers.version+') released'))
48 .catch(log.fail)
49 .finally(process.exit)
50 })
51 })
52 .catch(evoke(log.clientRequestFailed, 'Error releasing app design'))
53 })
54
55}