ryuu
Version:
Domo App Dev Studio CLI, The main tool used to create, edit, and publish app designs to Domo
62 lines • 2.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const manifest_1 = require("../util/manifest");
const login_1 = require("../util/login");
const log_1 = require("../util/log");
const appStructure = require("../util/appStructure");
const index_1 = require("../models/index");
const prompts_1 = require("../util/prompts");
module.exports = (program) => {
program
.command('release')
.description('prepare a design for app store release')
.option('-v, --version <value>', 'Version to release (bypasses interactive prompt, defaults to "latest")')
.action(options => {
new login_1.Login().getClient().then(client => {
const manifest = manifest_1.ManifestUtils.getManifest(program.opts().manifest, true);
// make sure app has been published first
if (!manifest.id) {
log_1.log.fail('Cannot release until design is published.', 'Please publish your Custom App design (with the `domo publish` command) first');
}
// make sure there is a thumbnail.png when releasing
if (!appStructure.hasThumbnail()) {
log_1.log.fail(index_1.constant.THUMBNAIL_CREATE_WARNING, index_1.constant.CREATE_THUMBNAIL);
}
// prompt the user for which design version they want to release, defaulting to latest
client
.getVersions(manifest.id)
.then(async (versions) => {
versions.reverse();
versions.unshift('latest');
let version;
// Check if version was provided via --version flag
if (options.version) {
// Validate the provided version
if (versions.includes(options.version)) {
version = options.version;
log_1.log.ok(`Using version: ${version}`);
}
else {
log_1.log.fail(`Invalid version: ${options.version}`, `Available versions: ${versions.join(', ')}`);
return;
}
}
else {
// Prompt for version interactively
version = await (0, prompts_1.createSelect)('select a version to release', versions);
}
// release the kraken
try {
await client.release(manifest.id, version);
log_1.log.ok('Design version (' + version + ') released');
}
catch (err) {
log_1.log.fail('Error releasing design');
console.error(err);
}
})
.catch(() => log_1.log.clientRequestFailed('Error releasing app design'));
});
});
};
//# sourceMappingURL=release.js.map