123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.command = void 0;
- const backend = require("../deploy/functions/backend");
- const command_1 = require("../command");
- const projectUtils_1 = require("../projectUtils");
- const secrets_1 = require("../functions/secrets");
- const requirePermissions_1 = require("../requirePermissions");
- const deploymentTool_1 = require("../deploymentTool");
- const utils_1 = require("../utils");
- const prompt_1 = require("../prompt");
- const secretManager_1 = require("../gcp/secretManager");
- exports.command = new command_1.Command("functions:secrets:prune")
- .withForce("Destroys unused secrets without prompt")
- .description("Destroys unused secrets")
- .before(requirePermissions_1.requirePermissions, [
- "cloudfunctions.functions.list",
- "secretmanager.secrets.list",
- "secretmanager.versions.list",
- "secretmanager.versions.destroy",
- ])
- .action(async (options) => {
- const projectNumber = await (0, projectUtils_1.needProjectNumber)(options);
- const projectId = (0, projectUtils_1.needProjectId)(options);
- (0, utils_1.logBullet)("Loading secrets...");
- const haveBackend = await backend.existingBackend({ projectId });
- const haveEndpoints = backend
- .allEndpoints(haveBackend)
- .filter((e) => (0, deploymentTool_1.isFirebaseManaged)(e.labels || []));
- const pruned = await (0, secrets_1.pruneSecrets)({ projectNumber, projectId }, haveEndpoints);
- if (pruned.length === 0) {
- (0, utils_1.logBullet)("All secrets are in use. Nothing to prune today.");
- return;
- }
- (0, utils_1.logBullet)(`Found ${pruned.length} unused active secret versions:\n\t` +
- pruned.map((sv) => `${sv.secret}@${sv.version}`).join("\n\t"));
- if (!options.force) {
- const confirm = await (0, prompt_1.promptOnce)({
- name: "destroy",
- type: "confirm",
- default: true,
- message: `Do you want to destroy unused secret versions?`,
- }, options);
- if (!confirm) {
- (0, utils_1.logBullet)("Run the following commands to destroy each unused secret version:\n\t" +
- pruned
- .map((sv) => `firebase functions:secrets:destroy ${sv.secret}@${sv.version}`)
- .join("\n\t"));
- return;
- }
- }
- await Promise.all(pruned.map((sv) => (0, secretManager_1.destroySecretVersion)(projectId, sv.secret, sv.version)));
- (0, utils_1.logSuccess)("Destroyed all unused secrets!");
- });
|