GSI - Employe Self Service Mobile
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

107 lines
5.3 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.command = void 0;
const clc = require("colorette");
const { marked } = require("marked");
const TerminalRenderer = require("marked-terminal");
const checkMinRequiredVersion_1 = require("../checkMinRequiredVersion");
const command_1 = require("../command");
const error_1 = require("../error");
const extensionsApi = require("../extensions/extensionsApi");
const extensionsHelper_1 = require("../extensions/extensionsHelper");
const paramHelper = require("../extensions/paramHelper");
const updateHelper_1 = require("../extensions/updateHelper");
const refs = require("../extensions/refs");
const projectUtils_1 = require("../projectUtils");
const requirePermissions_1 = require("../requirePermissions");
const utils = require("../utils");
const experiments = require("../experiments");
const manifest = require("../extensions/manifest");
const askUserForEventsConfig = require("../extensions/askUserForEventsConfig");
marked.setOptions({
renderer: new TerminalRenderer(),
});
exports.command = new command_1.Command("ext:update <extensionInstanceId> [updateSource]")
.description(experiments.isEnabled("extdev")
? "update an existing extension instance to the latest version or from a local or URL source"
: "update an existing extension instance to the latest version")
.before(requirePermissions_1.requirePermissions, [
"firebaseextensions.instances.update",
"firebaseextensions.instances.get",
])
.before(extensionsHelper_1.ensureExtensionsApiEnabled)
.before(checkMinRequiredVersion_1.checkMinRequiredVersion, "extMinVersion")
.before(extensionsHelper_1.diagnoseAndFixProject)
.option("--local", "deprecated")
.withForce()
.action(async (instanceId, updateSource, options) => {
const projectId = (0, projectUtils_1.getProjectId)(options);
const config = manifest.loadConfig(options);
if (options.local) {
utils.logLabeledWarning(extensionsHelper_1.logPrefix, "As of firebase-tools@11.0.0, the `--local` flag is no longer required, as it is the default behavior.");
}
const oldRefOrPath = manifest.getInstanceTarget(instanceId, config);
if ((0, extensionsHelper_1.isLocalPath)(oldRefOrPath)) {
throw new error_1.FirebaseError(`Updating an extension with local source is not neccessary. ` +
`Rerun "firebase deploy" or restart the emulator after making changes to your local extension source. ` +
`If you've edited the extension param spec, you can edit an extension instance's params ` +
`interactively by running "firebase ext:configure --local {instance-id}"`);
}
const oldRef = manifest.getInstanceRef(instanceId, config);
const oldExtensionVersion = await extensionsApi.getExtensionVersion(refs.toExtensionVersionRef(oldRef));
updateSource = (0, updateHelper_1.inferUpdateSource)(updateSource, refs.toExtensionRef(oldRef));
const newSourceOrigin = (0, extensionsHelper_1.getSourceOrigin)(updateSource);
if (![extensionsHelper_1.SourceOrigin.PUBLISHED_EXTENSION, extensionsHelper_1.SourceOrigin.PUBLISHED_EXTENSION_VERSION].includes(newSourceOrigin)) {
throw new error_1.FirebaseError(`Only updating to a published extension version is allowed`);
}
const newExtensionVersion = await extensionsApi.getExtensionVersion(updateSource);
if (oldExtensionVersion.ref === newExtensionVersion.ref) {
utils.logLabeledBullet(extensionsHelper_1.logPrefix, `${clc.bold(instanceId)} is already up to date. Its version is ${clc.bold(newExtensionVersion.ref)}.`);
return;
}
utils.logLabeledBullet(extensionsHelper_1.logPrefix, `Updating ${clc.bold(instanceId)} from version ${clc.bold(oldExtensionVersion.ref)} to version ${clc.bold(newExtensionVersion.ref)}.`);
if (!(await (0, extensionsHelper_1.confirm)({
nonInteractive: options.nonInteractive,
force: options.force,
default: false,
}))) {
utils.logLabeledBullet(extensionsHelper_1.logPrefix, "Update aborted.");
return;
}
const oldParamValues = manifest.readInstanceParam({
instanceId,
projectDir: config.projectDir,
});
const newParamBindingOptions = await paramHelper.getParamsForUpdate({
spec: oldExtensionVersion.spec,
newSpec: newExtensionVersion.spec,
currentParams: oldParamValues,
projectId,
paramsEnvPath: "",
nonInteractive: options.nonInteractive,
instanceId,
});
const eventsConfig = newExtensionVersion.spec.events
? await askUserForEventsConfig.askForEventsConfig(newExtensionVersion.spec.events, "${param:PROJECT_ID}", instanceId)
: undefined;
if (eventsConfig) {
newParamBindingOptions.EVENTARC_CHANNEL = { baseValue: eventsConfig.channel };
newParamBindingOptions.ALLOWED_EVENT_TYPES = {
baseValue: eventsConfig.allowedEventTypes.join(","),
};
}
await manifest.writeToManifest([
{
instanceId,
ref: refs.parse(newExtensionVersion.ref),
params: newParamBindingOptions,
extensionSpec: newExtensionVersion.spec,
extensionVersion: newExtensionVersion,
},
], config, {
nonInteractive: options.nonInteractive,
force: true,
});
manifest.showPostDeprecationNotice();
return;
});