vercel
Version:
The command-line interface for Vercel
167 lines (165 loc) • 4.22 kB
JavaScript
import { createRequire as __createRequire } from 'node:module';
import { fileURLToPath as __fileURLToPath } from 'node:url';
import { dirname as __dirname_ } from 'node:path';
const require = __createRequire(import.meta.url);
const __filename = __fileURLToPath(import.meta.url);
const __dirname = __dirname_(__filename);
import {
emitRulesArgParseError,
handleRulesApiError,
parseRulesFlagsAndScope,
rulesItemPath
} from "./chunk-CVDYWVCD.js";
import "./chunk-FXSXQHVF.js";
import "./chunk-HTOH3MSD.js";
import {
validateJsonOutput
} from "./chunk-XPKWKPWA.js";
import {
rulesRmSubcommand
} from "./chunk-XVAEOG4L.js";
import "./chunk-KWDV5FZH.js";
import {
AGENT_REASON
} from "./chunk-E3NE4SKN.js";
import "./chunk-X775BOSL.js";
import "./chunk-4OEA5ILS.js";
import {
buildCommandWithGlobalFlags,
buildCommandWithYes,
outputAgentError
} from "./chunk-ULXHXZCZ.js";
import "./chunk-CO5D46AG.js";
import "./chunk-N2T234LO.js";
import {
getFlagsSpecification,
parseArguments,
printError
} from "./chunk-4GQQJY5Y.js";
import {
isAPIError,
packageName
} from "./chunk-UGXBNJMO.js";
import "./chunk-P4QNYOFB.js";
import {
output_manager_default
} from "./chunk-ZQKJVHXY.js";
import "./chunk-S7KYDPEM.js";
import "./chunk-TZ2YI2VH.js";
// src/commands/alerts/rules/rm.ts
async function rm(client, argv) {
let parsedArgs;
try {
parsedArgs = parseArguments(
argv,
getFlagsSpecification(rulesRmSubcommand.options)
);
} catch (e) {
emitRulesArgParseError(
client,
e,
"alerts rules rm <ruleId> --project <name-or-id> --yes"
);
printError(e);
return 1;
}
const ruleId = parsedArgs.args[0];
const fr = validateJsonOutput(parsedArgs.flags);
if (!fr.valid) {
outputAgentError(
client,
{
status: "error",
reason: AGENT_REASON.INVALID_ARGUMENTS,
message: fr.error
},
1
);
output_manager_default.error(fr.error);
return 1;
}
if (!ruleId) {
outputAgentError(
client,
{
status: "error",
reason: AGENT_REASON.MISSING_ARGUMENTS,
message: `Missing rule id. Example: ${packageName} alerts rules rm <ruleId> --yes`,
next: [
{
command: buildCommandWithGlobalFlags(
client.argv,
"alerts rules rm <ruleId> --yes"
),
when: "Replace <ruleId> with an id from `alerts rules ls`"
},
{
command: buildCommandWithGlobalFlags(
client.argv,
"alerts rules ls"
),
when: "List rule ids in the current scope"
}
]
},
1
);
output_manager_default.error("Usage: `vercel alerts rules rm <ruleId>`");
return 1;
}
const skipConfirmation = Boolean(parsedArgs.flags["--yes"]);
const scope = await parseRulesFlagsAndScope(
client,
{
"--project": parsedArgs.flags["--project"],
"--all": parsedArgs.flags["--all"]
},
fr.jsonOutput
);
if (typeof scope === "number") {
return scope;
}
if (!skipConfirmation) {
outputAgentError(
client,
{
status: "error",
reason: AGENT_REASON.CONFIRMATION_REQUIRED,
message: "Removing an alert rule requires confirmation. Re-run with --yes.",
next: [{ command: buildCommandWithYes(client.argv) }]
},
1
);
if (!await client.input.confirm(
`Delete alert rule ${ruleId}? This cannot be undone.`,
false
)) {
output_manager_default.log("Canceled");
return 0;
}
}
const path = rulesItemPath(scope, ruleId);
output_manager_default.spinner("Deleting alert rule...");
try {
await client.fetch(path, { method: "DELETE" });
if (fr.jsonOutput) {
client.stdout.write(
`${JSON.stringify({ ok: true, ruleId, deleted: true }, null, 2)}
`
);
} else {
output_manager_default.success(`Deleted alert rule ${ruleId}`);
}
return 0;
} catch (err) {
if (isAPIError(err)) {
return handleRulesApiError(client, err, fr.jsonOutput);
}
throw err;
} finally {
output_manager_default.stopSpinner();
}
}
export {
rm as default
};