@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
82 lines • 3.45 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const upgradeSkillOptions_schema_1 = __importDefault(require("./../../../.spruce/schemas/spruceCli/v2020_07_22/upgradeSkillOptions.schema"));
const InFlightEntertainment_1 = __importDefault(require("../../../InFlightEntertainment"));
const EsLint9Migrator_1 = __importDefault(require("../../../migration/EsLint9Migrator"));
const ScriptUpdater_1 = __importDefault(require("../../../updaters/ScriptUpdater"));
const action_utility_1 = __importDefault(require("../../../utilities/action.utility"));
const AbstractAction_1 = __importDefault(require("../../AbstractAction"));
class UpgradeAction extends AbstractAction_1.default {
invocationMessage = 'Upgrading your skill... 💪';
optionsSchema = upgradeSkillOptions_schema_1.default;
commandAliases = ['upgrade', 'update'];
async execute(options) {
const { upgradeMode } = this.validateAndNormalizeOptions(options);
await EsLint9Migrator_1.default.Migrator({
cwd: this.cwd,
}).migrate();
const isInSpruceModule = this.features.isInSpruceModule();
if (isInSpruceModule) {
await this.updateScripts({
shouldConfirm: upgradeMode !== 'forceEverything',
});
}
try {
const files = isInSpruceModule
? await this.Writer('node', {
upgradeMode,
}).writeNodeModule(this.cwd, {
shouldConfirmBeforeWriting: true,
shouldWriteIndex: false,
})
: [];
this.ui.clear();
InFlightEntertainment_1.default.start([
"Let's start the upgrade!",
'While things are going, see if you can beat 1k points!',
'Go!!!!',
]);
const dependencyResults = await this.reInstallPackageDependencies();
return action_utility_1.default.mergeActionResults(dependencyResults, {
headline: 'Upgrade',
files,
});
}
finally {
InFlightEntertainment_1.default.stop();
this.ui.renderHero('Upgrade');
}
}
async reInstallPackageDependencies() {
return this.Action('node', 'updateDependencies').execute({});
}
async updateScripts(options) {
const features = await this.features.getInstalledFeatures();
let scripts = {};
const pkg = this.Service('pkg');
if (!features.find((f) => f.code === 'skill')) {
const build = pkg.get('scripts.build');
if (build ===
'yarn run build.tsc --sourceMap ; yarn run resolve-paths') {
pkg.unset(['scripts', 'build']);
}
}
for (const feature of features) {
scripts = {
...scripts,
...feature.scripts,
};
}
const scriptUpdater = ScriptUpdater_1.default.FromFeature(this.parent, {
latestScripts: scripts,
});
await scriptUpdater.update({
shouldConfirmIfScriptExistsButIsDifferent: options.shouldConfirm,
});
}
}
exports.default = UpgradeAction;
//# sourceMappingURL=UpgradeAction.js.map