heroku
Version:
CLI to interact with Heroku
52 lines (51 loc) • 2.56 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = require("@heroku-cli/command");
const core_1 = require("@oclif/core");
const color_1 = require("@heroku-cli/color");
const output_1 = require("../../lib/releases/output");
const releases_1 = require("../../lib/releases/releases");
class Retry extends command_1.Command {
async run() {
var _a;
const { flags } = await this.parse(Retry);
const { app } = flags;
const release = await (0, releases_1.findByLatestOrId)(this.heroku, app);
const { body: formations } = await this.heroku.get(`/apps/${app}/formation`);
const releasePhase = formations.filter(formation => formation.type === 'release');
if (!release) {
return core_1.ux.error('No release found for this app.');
}
if (releasePhase.length === 0) {
return core_1.ux.error('App must have a release-phase command to use this command.');
}
core_1.ux.action.start(`Retrying ${color_1.default.green('v' + release.version)} on ${color_1.default.app(app)}`);
const { body: retry } = await this.heroku.post(`/apps/${app}/releases`, {
body: {
slug: (_a = release === null || release === void 0 ? void 0 : release.slug) === null || _a === void 0 ? void 0 : _a.id,
description: `Retry of v${release.version}: ${release.description}`,
},
});
core_1.ux.action.stop(`done, ${color_1.default.green('v' + retry.version)}`);
if (retry.output_stream_url) {
core_1.ux.log('Running release command...');
await (0, output_1.stream)(retry.output_stream_url)
.catch(error => {
var _a;
if (error.statusCode === 404 || ((_a = error.response) === null || _a === void 0 ? void 0 : _a.statusCode) === 404) {
core_1.ux.warn(`Release command starting. Use ${color_1.default.cmd('heroku releases:output --app ' + app)} to view the log.`);
return;
}
throw error;
});
}
}
}
exports.default = Retry;
Retry.topic = 'releases';
Retry.description = 'retry the latest release-phase command';
Retry.examples = ['heroku releases:retry --app happy-samurai-42'];
Retry.help = 'Copies the latest release into a new release and retries the latest release-phase command. App must have a release-phase command.';
Retry.flags = {
app: command_1.flags.app({ required: true }),
};
;