1 | var inquirer = require('inquirer');
|
2 | var Domo = require('ryuu-client-beta');
|
3 | var Manifest = require('../util/manifest');
|
4 | var Login = require('../util/login');
|
5 | var log = require('../util/log');
|
6 | var evoke = require('../util/evoke');
|
7 | var multichoice = require('../util/multichoice');
|
8 | var appStructure = require('../util/appStructure');
|
9 | var messages = require('../util/messages');
|
10 | var constants = require('../util/constants');
|
11 |
|
12 | module.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 |
|
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 |
|
28 | if (!appStructure.hasThumbnail()) {
|
29 | log.fail(messages.THUMBNAIL_CREATE_WARNING, messages.CREATE_THUMBNAIL);
|
30 | }
|
31 |
|
32 |
|
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 |
|
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 | }
|