@sap/generator-cap-project
Version:
Creates a new SAP Cloud Application Programming Model project.
464 lines (463 loc) • 11.8 kB
JavaScript
import { isPathSpec as m, toPaths as v } from "@simple-git/args-pathspec";
function* U(e, t) {
const n = t === "global";
for (const o of e)
o.isGlobal === n && (yield o);
}
const k = /* @__PURE__ */ new Set([
"--add",
"--edit",
"--remove-section",
"--rename-section",
"--replace-all",
"--unset",
"--unset-all",
"-e"
]), S = /* @__PURE__ */ new Set([
"--get",
"--get-all",
"--get-color",
"--get-colorbool",
"--get-regexp",
"--get-urlmatch",
"--list",
"-l"
]), P = /* @__PURE__ */ new Set([
"edit",
"remove-section",
"rename-section",
"set",
"unset"
]), E = /* @__PURE__ */ new Set(["get", "get-color", "get-colorbool", "list"]);
function F(e, t) {
for (const { name: o } of U(e, "task")) {
if (k.has(o))
return p(!0, t);
if (S.has(o))
return p(!1, t);
}
const n = t.at(0)?.toLowerCase();
return n === void 0 ? null : P.has(n) ? p(!0, t.slice(1)) : E.has(n) ? p(!1, t.slice(1)) : t.length === 1 ? p(!1, t) : p(!0, t);
}
function p(e = !1, t = []) {
const n = t.at(0)?.toLowerCase();
return n === void 0 ? null : {
isWrite: e,
isRead: !e,
key: n,
value: t.at(1)
};
}
function A(e, t) {
return t.isWrite && t.value !== void 0 ? { key: t.key, value: t.value, scope: e } : { key: t.key, scope: e };
}
function M(e) {
const t = e?.indexOf("=") || -1;
return !e || t < 0 ? null : {
key: e.slice(0, t).trim().toLowerCase(),
value: e.slice(t + 1)
};
}
function N(e) {
for (const { name: t } of U(e, "task"))
switch (t) {
case "--global":
return "global";
case "--system":
return "system";
case "--worktree":
return "worktree";
case "--local":
return "local";
case "--file":
case "-f":
return "file";
}
return "local";
}
function G({ name: e }) {
if (e === "-c" || e === "--config")
return "inline";
if (e === "--config-env")
return "env";
}
function* O(e) {
for (const t of e) {
const n = G(t), o = n && M(t.value);
o && (yield {
...o,
scope: n
});
}
}
function L(e, t, n) {
const o = {
read: [],
write: [...O(t)]
};
return e === "config" && $(
o,
N(t),
F(t, n)
), o;
}
function $(e, t, n) {
if (n === null)
return;
const o = A(t, n);
n.isWrite ? e.write.push(o) : e.read.push(o);
}
const x = {
short: /* @__PURE__ */ new Map([
["c", !0]
// -c <k=v> set config key for this invocation
])
}, D = {
short: new Map([
["C", !0],
// -C <path> change working directory
["P", !1],
// -P no pager (alias for --no-pager)
["h", !1],
// -h help
["p", !1],
// -p paginate
["v", !1],
// -v version
...x.short.entries()
]),
long: /* @__PURE__ */ new Set([
"attr-source",
"config-env",
"exec-path",
"git-dir",
"list-cmds",
"namespace",
"super-prefix",
"work-tree"
])
}, R = {
clone: {
short: /* @__PURE__ */ new Map([
["b", !0],
// -b <branch>
["j", !0],
// -j <n> parallel jobs
["l", !1],
// -l local
["n", !1],
// -n no-checkout
["o", !0],
// -o <name> remote name
["q", !1],
// -q quiet
["s", !1],
// -s shared
["u", !0]
// -u <upload-pack>
]),
long: /* @__PURE__ */ new Set(["branch", "config", "jobs", "origin", "upload-pack", "u", "template"])
},
commit: {
short: /* @__PURE__ */ new Map([
["C", !0],
// -C <commit> reuse message
["F", !0],
// -F <file> read message from file
["c", !0],
// -c <commit> reedit message
["m", !0],
// -m <msg>
["t", !0]
// -t <template>
]),
long: /* @__PURE__ */ new Set(["file", "message", "reedit-message", "reuse-message", "template"])
},
config: {
short: /* @__PURE__ */ new Map([
["e", !1],
// -e open editor
["f", !0],
// -f <file>
["l", !1]
// -l list
]),
long: /* @__PURE__ */ new Set(["blob", "comment", "default", "file", "type", "value"])
},
fetch: {
short: /* @__PURE__ */ new Map(),
long: /* @__PURE__ */ new Set(["upload-pack"])
},
init: {
short: /* @__PURE__ */ new Map(),
long: /* @__PURE__ */ new Set(["template"])
},
pull: {
short: /* @__PURE__ */ new Map(),
long: /* @__PURE__ */ new Set(["upload-pack"])
},
push: {
short: /* @__PURE__ */ new Map(),
long: /* @__PURE__ */ new Set(["exec", "receive-pack"])
}
}, T = { short: /* @__PURE__ */ new Map(), long: /* @__PURE__ */ new Set() };
function I(e) {
const t = R[e ?? ""] ?? T;
return {
short: new Map([...x.short.entries(), ...t.short.entries()]),
long: t.long
};
}
function b(e, t = D) {
if (e.startsWith("--")) {
const n = e.indexOf("=");
if (n > 2)
return [{ name: e.slice(0, n), value: e.slice(n + 1), needsNext: !1 }];
const o = e.slice(2);
return [{ name: e, needsNext: t.long.has(o) }];
}
if (e.length === 2) {
const n = e.charAt(1), o = t.short.get(n);
return [{ name: e, needsNext: o === !0 }];
}
return W(e, t.short);
}
function W(e, t) {
const n = e.slice(1).split(""), o = [];
for (let s = 0; s < n.length; s++) {
const r = n[s], l = t.get(r);
if (l === void 0)
return [{ name: e, needsNext: !1 }];
if (l) {
const a = n.slice(s + 1).join("");
if (a && ![...a].every((w) => t.has(w)))
return o.push({ name: `-${r}`, value: a, needsNext: !1 }), o;
}
o.push({ name: `-${r}`, needsNext: l });
}
return o;
}
function j(e, t = []) {
let n = 0;
for (; n < e.length; ) {
const o = String(e[n]);
if (!o.startsWith("-") || o.length < 2) break;
const s = b(o);
let r = n + 1;
for (const l of s) {
const a = {
name: l.name,
value: l.value,
absorbedNext: !1,
isGlobal: !0
};
l.needsNext && a.value === void 0 && r < e.length && (a.value = String(e[r]), a.absorbedNext = !0, r++), t.push(a);
}
n = r;
}
return { flags: t, taskIndex: n };
}
function B(e, t, n = []) {
const o = I(t), s = [], r = [];
let l = 0;
for (; l < e.length; ) {
const a = e[l];
if (m(a)) {
r.push(...v(a)), l++;
continue;
}
const f = String(a);
if (f === "--") {
for (let g = l + 1; g < e.length; g++) {
const u = e[g];
m(u) ? r.push(...v(u)) : r.push(String(u));
}
break;
}
if (!f.startsWith("-") || f.length < 2) {
s.push(f), l++;
continue;
}
const w = b(f, o);
let d = l + 1;
for (const g of w) {
const u = {
name: g.name,
value: g.value,
absorbedNext: !1,
isGlobal: !1
};
g.needsNext && u.value === void 0 && d < e.length && !m(e[d]) && (u.value = String(e[d]), u.absorbedNext = !0, d++), n.push(u);
}
l = d;
}
return { flags: n, positionals: s, pathspecs: r };
}
function* V({
write: e
}) {
for (const t of e)
for (const n of q) {
const o = n(t.key);
o && (yield o);
}
}
function c(e, t, n = String(e)) {
const o = typeof e == "string" ? new RegExp(`\\s*${e.toLowerCase()}`) : e;
return function(r) {
if (o.test(r))
return {
category: t,
message: `Configuring ${n} is not permitted without enabling ${t}`
};
};
}
function i(e, t) {
const n = new RegExp(`\\s*${e.toLowerCase().replace(/\./g, "(..+)?.")}`);
return c(n, t, e);
}
const q = [
c("alias", "allowUnsafeAlias"),
c("core.askPass", "allowUnsafeAskPass"),
c("core.editor", "allowUnsafeEditor"),
c("core.fsmonitor", "allowUnsafeFsMonitor"),
c("core.gitProxy", "allowUnsafeGitProxy"),
c("core.hooksPath", "allowUnsafeHooksPath"),
c("core.pager", "allowUnsafePager"),
c("core.sshCommand", "allowUnsafeSshCommand"),
i("credential.helper", "allowUnsafeCredentialHelper"),
i("diff.command", "allowUnsafeDiffExternal"),
c("diff.external", "allowUnsafeDiffExternal"),
i("diff.textconv", "allowUnsafeDiffTextConv"),
i("filter.clean", "allowUnsafeFilter"),
i("filter.smudge", "allowUnsafeFilter"),
i("gpg.program", "allowUnsafeGpgProgram"),
c("init.templateDir", "allowUnsafeTemplateDir"),
i("merge.driver", "allowUnsafeMergeDriver"),
i("mergetool.path", "allowUnsafeMergeDriver"),
i("mergetool.cmd", "allowUnsafeMergeDriver"),
i("protocol.allow", "allowUnsafeProtocolOverride"),
i("remote.receivepack", "allowUnsafePack"),
i("remote.uploadpack", "allowUnsafePack"),
c("sequence.editor", "allowUnsafeEditor")
];
function* K(e, t) {
for (const n of t)
for (const o of H) {
const s = o(e, n.name);
s && (yield s);
}
}
function h(e, t, n, o = String(t)) {
const s = typeof t == "string" ? new RegExp(`\\s*${t.toLowerCase()}`) : t, r = `Use of ${e ? `${e} with option ` : ""}${o} is not permitted without enabling ${n}`;
return function(a, f) {
if ((!e || a === e) && s.test(f))
return {
category: n,
message: r
};
};
}
const H = [
h(
null,
/--(upload|receive)-pack/,
"allowUnsafePack",
"--upload-pack or --receive-pack"
),
h("clone", /^-\w*u/, "allowUnsafePack"),
h("clone", "--u", "allowUnsafePack"),
h("push", "--exec", "allowUnsafePack"),
h(null, "--template", "allowUnsafeTemplateDir")
];
function C(e, t, n) {
return [...K(e, t), ...V(n)];
}
function Y(...e) {
const { flags: t, taskIndex: n } = j(e), o = n < e.length ? String(e[n]).toLowerCase() : null, s = o !== null ? e.slice(n + 1) : [], { positionals: r, pathspecs: l } = B(s, o, t), a = L(o, t, r);
return {
task: o,
flags: t.map(J),
paths: l,
config: a,
vulnerabilities: z(C(o, t, a))
};
}
function z(e) {
return Object.defineProperty(e, "vulnerabilities", {
value: e
});
}
function J({ value: e, name: t }) {
return e !== void 0 ? { name: t, value: e } : { name: t };
}
const y = {
editor: "allowUnsafeEditor",
git_askpass: "allowUnsafeAskPass",
git_config_global: "allowUnsafeConfigPaths",
git_config_system: "allowUnsafeConfigPaths",
git_config_count: "allowUnsafeConfigEnvCount",
git_config: "allowUnsafeConfigPaths",
git_editor: "allowUnsafeEditor",
git_exec_path: "allowUnsafeConfigPaths",
git_external_diff: "allowUnsafeDiffExternal",
git_pager: "allowUnsafePager",
git_proxy_command: "allowUnsafeGitProxy",
git_template_dir: "allowUnsafeTemplateDir",
git_sequence_editor: "allowUnsafeEditor",
git_ssh: "allowUnsafeSshCommand",
git_ssh_command: "allowUnsafeSshCommand",
pager: "allowUnsafePager",
prefix: "allowUnsafeConfigPaths",
ssh_askpass: "allowUnsafeAskPass"
};
function* Q(e) {
const t = parseInt(e.git_config_count ?? "0", 10);
for (let n = 0; n < t; n++) {
const o = e[`git_config_key_${n}`], s = e[`git_config_value_${n}`];
o !== void 0 && (yield { key: o.toLowerCase().trim(), value: s, scope: "env" });
}
}
function* X(e) {
for (const t of Object.keys(e))
if (_(t)) {
const n = y[t];
yield {
category: n,
message: `Use of "${t.toUpperCase()}" is not permitted without enabling ${n}`
};
}
}
function _(e) {
return Object.hasOwn(y, e);
}
function Z(e) {
const t = {};
for (const [n, o] of Object.entries(e)) {
const s = n.toLowerCase().trim();
(_(s) || s.startsWith("git")) && (t[s] = String(o));
}
return t;
}
function ee(e) {
const t = Z(e), n = {
read: [],
write: [...Q(t)]
}, o = [
...X(t),
...C(null, [], n)
];
return {
config: n,
vulnerabilities: o
};
}
function ne(e, t) {
return [...Y(...e).vulnerabilities, ...ee(t).vulnerabilities];
}
export {
Y as parseArgv,
ee as parseEnv,
ne as vulnerabilityCheck
};
//# sourceMappingURL=index.mjs.map