import {command, help, namespace, option, optional, param} from 'oo-cli'; import {appContext} from '../../lib/AppContext'; import {die} from '../../lib/die'; import {formatReviewStatus} from '../../lib/formatReviewStatus'; import {formatVersionState} from '../../lib/formatVersionState'; import {formatError} from '../../lib/formatError'; import {Rivendell} from '../../lib/Rivendell'; import AppVersionState = Rivendell.AppVersionState; import ReviewStatus = Rivendell.ReviewStatus; @namespace('directory') export class StatusCommand { @param @optional @help('The App ID and version to look up') public appId!: string; @option('a') @help('The availability zone that will be targeted (default: us)') private availability: string = ''; @command @help('Get the status of a particular app version') public async status() { const context = appContext(this.appId); if (!context.appId || !context.version) { return die('App ID and version are required'); } try { const appVersion = await Rivendell.fetchAppVersion(context, this.availability); console.log(`Version state: ${formatVersionState(appVersion.state as AppVersionState)}`); if (appVersion.reviewStatus) { const reviewStatus = appVersion.reviewStatus as ReviewStatus; const appVersionState = appVersion.state as AppVersionState; if (appVersionState === AppVersionState.PUBLISHED) { console.log(`Review status: ${formatReviewStatus(reviewStatus, appVersionState)}`); } } } catch (e: any) { die(formatError(e)); } } }