@git.zone/cli 6.10.0 → 6.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/helpers.changelog.d.ts +4 -0
- package/dist_ts/helpers.changelog.js +73 -24
- package/dist_ts/helpers.climode.js +40 -3
- package/dist_ts/helpers.workflow.d.ts +2 -2
- package/dist_ts/helpers.workflow.js +42 -6
- package/dist_ts/mod_commit/helpers.manual.d.ts +10 -0
- package/dist_ts/mod_commit/helpers.manual.js +97 -0
- package/dist_ts/mod_commit/index.js +156 -35
- package/dist_ts/mod_commit/mod.plugins.d.ts +7 -7
- package/dist_ts/mod_commit/mod.plugins.js +9 -8
- package/dist_ts/mod_release/helpers.npmartifact.d.ts +1 -3
- package/dist_ts/mod_release/helpers.npmartifact.js +88 -66
- package/dist_ts/mod_standard/index.js +2 -2
- package/dist_ts/mod_tools/classes.packagemanager.d.ts +2 -0
- package/dist_ts/mod_tools/classes.packagemanager.js +3 -3
- package/package.json +2 -2
- package/readme.md +45 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/helpers.changelog.ts +108 -32
- package/ts/helpers.climode.ts +45 -2
- package/ts/helpers.workflow.ts +46 -5
- package/ts/mod_commit/helpers.manual.ts +156 -0
- package/ts/mod_commit/index.ts +272 -53
- package/ts/mod_commit/mod.plugins.ts +8 -7
- package/ts/mod_release/helpers.npmartifact.ts +156 -77
- package/ts/mod_standard/index.ts +1 -1
- package/ts/mod_tools/classes.packagemanager.ts +2 -2
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as plugins from "./mod.plugins.js";
|
|
2
|
+
import { bucketForCommitType, inferVersionTypeFromPending, validatePendingChangelogMarkdown, } from "../helpers.changelog.js";
|
|
3
|
+
const maximumInputBytes = 128 * 1024;
|
|
4
|
+
const keys = [
|
|
5
|
+
"message",
|
|
6
|
+
"message-file",
|
|
7
|
+
"changelog",
|
|
8
|
+
"changelog-file",
|
|
9
|
+
];
|
|
10
|
+
const readArg = (argv, key) => argv[key] ??
|
|
11
|
+
argv[key.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())];
|
|
12
|
+
export const hasManualCommitInput = (argv) => keys.some((key) => readArg(argv, key) !== undefined);
|
|
13
|
+
const readInput = async (value, fromFile, cwd) => {
|
|
14
|
+
if (typeof value !== "string" || !value.trim() || value.includes("\0"))
|
|
15
|
+
throw new Error("Manual commit inputs require non-empty text or file paths.");
|
|
16
|
+
let text = value;
|
|
17
|
+
if (fromFile) {
|
|
18
|
+
const file = await plugins.fs.open(plugins.path.resolve(cwd, value), plugins.fsConstants.O_RDONLY | plugins.fsConstants.O_NONBLOCK);
|
|
19
|
+
try {
|
|
20
|
+
const stat = await file.stat();
|
|
21
|
+
if (!stat.isFile() || stat.size > maximumInputBytes)
|
|
22
|
+
throw new Error("Manual input files must be regular files of at most 128 KiB.");
|
|
23
|
+
const bytes = Buffer.alloc(maximumInputBytes + 1);
|
|
24
|
+
let length = 0;
|
|
25
|
+
while (length < bytes.length) {
|
|
26
|
+
const part = await file.read(bytes, length, bytes.length - length, null);
|
|
27
|
+
if (!part.bytesRead)
|
|
28
|
+
break;
|
|
29
|
+
length += part.bytesRead;
|
|
30
|
+
}
|
|
31
|
+
if (length > maximumInputBytes)
|
|
32
|
+
throw new Error("Manual inputs must be at most 128 KiB.");
|
|
33
|
+
text = new TextDecoder("utf-8", { fatal: true }).decode(bytes.subarray(0, length));
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
await file.close();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
text = text.replace(/\r\n/g, "\n").replace(/\n+$/, "");
|
|
40
|
+
if (!text.trim() ||
|
|
41
|
+
Buffer.byteLength(text, "utf8") > maximumInputBytes ||
|
|
42
|
+
/[\u0000-\u0008\u000b-\u001f\u007f]/.test(text)) {
|
|
43
|
+
throw new Error("Manual inputs must contain non-empty text without control characters, at most 128 KiB.");
|
|
44
|
+
}
|
|
45
|
+
return text;
|
|
46
|
+
};
|
|
47
|
+
export const loadManualCommitInput = async (argv, cwd) => {
|
|
48
|
+
if (!hasManualCommitInput(argv))
|
|
49
|
+
return undefined;
|
|
50
|
+
const message = readArg(argv, "message");
|
|
51
|
+
const messageFile = readArg(argv, "message-file");
|
|
52
|
+
const changelog = readArg(argv, "changelog");
|
|
53
|
+
const changelogFile = readArg(argv, "changelog-file");
|
|
54
|
+
if ((message === undefined) === (messageFile === undefined))
|
|
55
|
+
throw new Error("Supply exactly one of --message or --message-file for a manual commit.");
|
|
56
|
+
if (changelog !== undefined && changelogFile !== undefined)
|
|
57
|
+
throw new Error("Supply only one of --changelog or --changelog-file.");
|
|
58
|
+
const fullMessage = await readInput(message ?? messageFile, messageFile !== undefined, cwd);
|
|
59
|
+
const [subject, ...body] = fullMessage.split("\n");
|
|
60
|
+
const parsed = /^(BREAKING CHANGE|[a-z][a-z0-9-]*)(?:\(([^():\r\n]+)\))?(!)?: (\S.*)$/.exec(subject);
|
|
61
|
+
if (!parsed)
|
|
62
|
+
throw new Error("Manual messages must start with a semantic subject: type(scope): description, with optional scope and !.");
|
|
63
|
+
const [, originalType, scope = "", bang, summary] = parsed;
|
|
64
|
+
const messageBreaking = originalType === "BREAKING CHANGE" ||
|
|
65
|
+
Boolean(bang) ||
|
|
66
|
+
/^BREAKING[ -]CHANGE:\s*\S/m.test(fullMessage);
|
|
67
|
+
const type = messageBreaking ? "BREAKING CHANGE" : originalType;
|
|
68
|
+
let markdown;
|
|
69
|
+
if (changelog !== undefined || changelogFile !== undefined) {
|
|
70
|
+
const text = (await readInput(changelog ?? changelogFile, changelogFile !== undefined, cwd)).trim();
|
|
71
|
+
if (/^#{1,3}\s/m.test(text)) {
|
|
72
|
+
markdown = text;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
markdown = `### ${bucketForCommitType(type)}\n\n- ${text.replace(/\n/g, "\n ")}`;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const details = body
|
|
80
|
+
.filter((line) => line.trim())
|
|
81
|
+
.map((line) => ` - ${line.trim()}`);
|
|
82
|
+
markdown = `### ${bucketForCommitType(type)}\n\n- ${summary}${scope ? ` (${scope})` : ""}${details.length ? "\n" + details.join("\n") : ""}`;
|
|
83
|
+
}
|
|
84
|
+
validatePendingChangelogMarkdown(markdown);
|
|
85
|
+
const changelogBreaking = inferVersionTypeFromPending(markdown) === "major";
|
|
86
|
+
if (messageBreaking && !changelogBreaking)
|
|
87
|
+
throw new Error("A breaking commit requires a Breaking Changes changelog bucket.");
|
|
88
|
+
return {
|
|
89
|
+
message: fullMessage,
|
|
90
|
+
type,
|
|
91
|
+
scope,
|
|
92
|
+
summary,
|
|
93
|
+
changelog: markdown,
|
|
94
|
+
breaking: messageBreaking || changelogBreaking,
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5tYW51YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfY29tbWl0L2hlbHBlcnMubWFudWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiwyQkFBMkIsRUFDM0IsZ0NBQWdDLEdBQ2pDLE1BQU0seUJBQXlCLENBQUM7QUFXakMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLE1BQU0sSUFBSSxHQUFHO0lBQ1gsU0FBUztJQUNULGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0NBQ1IsQ0FBQztBQUVYLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBNkIsRUFBRSxHQUFjLEVBQVcsRUFBRSxDQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQTZCLEVBQVcsRUFBRSxDQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0FBRXZELE1BQU0sU0FBUyxHQUFHLEtBQUssRUFDckIsS0FBYyxFQUNkLFFBQWlCLEVBQ2pCLEdBQVcsRUFDTSxFQUFFO0lBQ25CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERB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
|
|
@@ -3,12 +3,12 @@ import * as plugins from "./mod.plugins.js";
|
|
|
3
3
|
import * as paths from "../paths.js";
|
|
4
4
|
import { logger } from "../gitzone.logging.js";
|
|
5
5
|
import * as ui from "./mod.ui.js";
|
|
6
|
-
import { getCliMode, printJson, runWithSuppressedOutput } from "../helpers.climode.js";
|
|
7
|
-
import { appendPendingChangelogEntry } from "../helpers.changelog.js";
|
|
8
|
-
import { resolveCommitWorkflow } from "../helpers.workflow.js";
|
|
6
|
+
import { getCliMode, printJson, runWithSuppressedOutput, } from "../helpers.climode.js";
|
|
7
|
+
import { appendPendingChangelogEntry, appendPendingChangelogMarkdown, } from "../helpers.changelog.js";
|
|
8
|
+
import { resolveCommitWorkflow, } from "../helpers.workflow.js";
|
|
9
|
+
import { hasManualCommitInput, loadManualCommitInput, } from "./helpers.manual.js";
|
|
9
10
|
const isNoChangesError = (error) => {
|
|
10
|
-
return
|
|
11
|
-
(error instanceof Error && error.name === "NoChangesError"));
|
|
11
|
+
return error instanceof Error && error.name === "NoChangesError";
|
|
12
12
|
};
|
|
13
13
|
export const run = async (argvArg) => {
|
|
14
14
|
const mode = await getCliMode(argvArg);
|
|
@@ -18,6 +18,8 @@ export const run = async (argvArg) => {
|
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
if (subcommand === "recommend") {
|
|
21
|
+
if (hasManualCommitInput(argvArg))
|
|
22
|
+
throw new Error("Manual input cannot be combined with commit recommend.");
|
|
21
23
|
await handleRecommend(mode);
|
|
22
24
|
return;
|
|
23
25
|
}
|
|
@@ -28,11 +30,12 @@ export const run = async (argvArg) => {
|
|
|
28
30
|
});
|
|
29
31
|
return;
|
|
30
32
|
}
|
|
31
|
-
const
|
|
33
|
+
const manual = await loadManualCommitInput(argvArg, paths.cwd);
|
|
34
|
+
const workflow = await resolveCommitWorkflow(argvArg, manual ? "manual" : "ai");
|
|
32
35
|
if (workflow.releaseFlagRequested) {
|
|
33
36
|
logger.log("warn", "`gitzone commit -r` is deprecated and no longer releases. Use `gitzone release` after committing.");
|
|
34
37
|
}
|
|
35
|
-
printCommitExecutionPlan(workflow);
|
|
38
|
+
printCommitExecutionPlan(workflow, manual);
|
|
36
39
|
if (workflow.confirmation === "plan") {
|
|
37
40
|
return;
|
|
38
41
|
}
|
|
@@ -42,6 +45,10 @@ export const run = async (argvArg) => {
|
|
|
42
45
|
});
|
|
43
46
|
let nextCommitObject;
|
|
44
47
|
let answerBucket;
|
|
48
|
+
if (manual && !(await hasManualCommitChanges(smartshellInstance)))
|
|
49
|
+
return;
|
|
50
|
+
if (manual && !(await confirmManualCommit(manual, workflow, mode)))
|
|
51
|
+
return;
|
|
45
52
|
for (const step of workflow.steps) {
|
|
46
53
|
switch (step) {
|
|
47
54
|
case "format":
|
|
@@ -66,13 +73,32 @@ export const run = async (argvArg) => {
|
|
|
66
73
|
}
|
|
67
74
|
answerBucket = await buildAnswerBucket(nextCommitObject, workflow, mode, argvArg);
|
|
68
75
|
break;
|
|
76
|
+
case "manual": {
|
|
77
|
+
if (!manual)
|
|
78
|
+
throw new Error("Manual commit input is required.");
|
|
79
|
+
if (!(await hasManualCommitChanges(smartshellInstance)))
|
|
80
|
+
return;
|
|
81
|
+
nextCommitObject = { manual: true };
|
|
82
|
+
answerBucket = createAnswerBucket({
|
|
83
|
+
commitType: manual.type,
|
|
84
|
+
commitScope: manual.scope,
|
|
85
|
+
commitDescription: manual.summary,
|
|
86
|
+
});
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
69
89
|
case "changelog":
|
|
70
90
|
assertAnalysisComplete(answerBucket, nextCommitObject);
|
|
71
|
-
|
|
91
|
+
if (manual) {
|
|
92
|
+
await appendPendingChangelogMarkdown(plugins.path.join(paths.cwd, workflow.changelogFile), workflow.changelogSection, manual.changelog);
|
|
93
|
+
logger.log("success", `Updated ${workflow.changelogFile} pending section.`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
await runChangelogStep(workflow, answerBucket, nextCommitObject);
|
|
97
|
+
}
|
|
72
98
|
break;
|
|
73
99
|
case "commit":
|
|
74
100
|
assertAnalysisComplete(answerBucket, nextCommitObject);
|
|
75
|
-
await runCommitStep(smartshellInstance, answerBucket);
|
|
101
|
+
await runCommitStep(smartshellInstance, answerBucket, manual?.message);
|
|
76
102
|
break;
|
|
77
103
|
case "push":
|
|
78
104
|
await runPushStep(smartshellInstance, workflow);
|
|
@@ -91,6 +117,28 @@ export const run = async (argvArg) => {
|
|
|
91
117
|
pushed: workflow.steps.includes("push"),
|
|
92
118
|
});
|
|
93
119
|
};
|
|
120
|
+
async function hasManualCommitChanges(smartshellInstance) {
|
|
121
|
+
const status = await smartshellInstance.execSpawn("git", ["status", "--porcelain=v1", "--untracked-files=all"], { cwd: paths.cwd, silent: true });
|
|
122
|
+
if (status.exitCode !== 0)
|
|
123
|
+
throw new Error("Cannot inspect the repository for a manual commit.");
|
|
124
|
+
if (status.stdout.trim())
|
|
125
|
+
return true;
|
|
126
|
+
logger.log("info", "No uncommitted changes found. Nothing to commit.");
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
async function confirmManualCommit(manual, workflow, mode) {
|
|
130
|
+
if (workflow.confirmation === "auto" &&
|
|
131
|
+
(!manual.breaking || workflow.allowBreaking))
|
|
132
|
+
return true;
|
|
133
|
+
if (!mode.interactive) {
|
|
134
|
+
throw new Error(manual.breaking
|
|
135
|
+
? "BREAKING CHANGE confirmation requires an interactive terminal. Use `-y --allow-breaking` to auto-accept it."
|
|
136
|
+
: "Commit confirmation requires an interactive terminal. Use `-y` or set commit.confirmation to `auto`.");
|
|
137
|
+
}
|
|
138
|
+
return plugins.smartinteract.SmartInteract.getCliConfirmation(manual.breaking
|
|
139
|
+
? "Create this breaking commit and changelog entry?"
|
|
140
|
+
: "Create this commit and changelog entry?", false);
|
|
141
|
+
}
|
|
94
142
|
async function runFormatStep() {
|
|
95
143
|
ui.printHeader("Formatting project files");
|
|
96
144
|
const formatMod = await import("../mod_format/index.js");
|
|
@@ -107,7 +155,8 @@ async function runCommandStep(smartshellInstance, label, command) {
|
|
|
107
155
|
}
|
|
108
156
|
async function runAnalyzeStep() {
|
|
109
157
|
ui.printHeader("Analyzing repository changes");
|
|
110
|
-
const
|
|
158
|
+
const tsdoc = await plugins.loadTsdoc();
|
|
159
|
+
const aidoc = new tsdoc.AiDoc();
|
|
111
160
|
await aidoc.start();
|
|
112
161
|
try {
|
|
113
162
|
const nextCommitObject = await aidoc.buildNextCommitObject(paths.cwd);
|
|
@@ -125,7 +174,8 @@ async function runAnalyzeStep() {
|
|
|
125
174
|
}
|
|
126
175
|
async function buildAnswerBucket(nextCommitObject, workflow, mode, argvArg) {
|
|
127
176
|
const isBreakingChange = nextCommitObject.recommendedNextVersionLevel === "BREAKING CHANGE";
|
|
128
|
-
const canAutoAccept = workflow.confirmation === "auto" &&
|
|
177
|
+
const canAutoAccept = workflow.confirmation === "auto" &&
|
|
178
|
+
(!isBreakingChange || workflow.allowBreaking);
|
|
129
179
|
if (canAutoAccept) {
|
|
130
180
|
logger.log(isBreakingChange ? "warn" : "info", isBreakingChange
|
|
131
181
|
? "Auto-accepting BREAKING CHANGE recommendation because --allow-breaking was provided"
|
|
@@ -136,7 +186,8 @@ async function buildAnswerBucket(nextCommitObject, workflow, mode, argvArg) {
|
|
|
136
186
|
commitDescription: nextCommitObject.recommendedNextVersionMessage,
|
|
137
187
|
});
|
|
138
188
|
}
|
|
139
|
-
if (isBreakingChange &&
|
|
189
|
+
if (isBreakingChange &&
|
|
190
|
+
(workflow.confirmation === "auto" || argvArg.y || argvArg.yes)) {
|
|
140
191
|
logger.log("warn", "BREAKING CHANGE detected - manual confirmation required");
|
|
141
192
|
}
|
|
142
193
|
if (!mode.interactive) {
|
|
@@ -185,15 +236,37 @@ async function runChangelogStep(workflow, answerBucket, nextCommitObject) {
|
|
|
185
236
|
});
|
|
186
237
|
logger.log("success", `Updated ${workflow.changelogFile} pending section.`);
|
|
187
238
|
}
|
|
188
|
-
async function runCommitStep(smartshellInstance, answerBucket) {
|
|
239
|
+
async function runCommitStep(smartshellInstance, answerBucket, manualMessage) {
|
|
189
240
|
ui.printHeader("Creating Semantic Commit");
|
|
190
|
-
const commitString = createCommitStringFromAnswerBucket(answerBucket);
|
|
241
|
+
const commitString = manualMessage ?? createCommitStringFromAnswerBucket(answerBucket);
|
|
191
242
|
ui.printCommitMessage(commitString);
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
243
|
+
let messageDirectory;
|
|
244
|
+
try {
|
|
245
|
+
let commitArgs = ["commit", "-m", commitString];
|
|
246
|
+
if (manualMessage !== undefined) {
|
|
247
|
+
messageDirectory = await plugins.fs.mkdtemp(plugins.path.join(plugins.os.tmpdir(), "gitzone-commit-message-"));
|
|
248
|
+
const messagePath = plugins.path.join(messageDirectory, "message.txt");
|
|
249
|
+
await plugins.fs.writeFile(messagePath, `${commitString}\n`, {
|
|
250
|
+
encoding: "utf8",
|
|
251
|
+
mode: 0o600,
|
|
252
|
+
flag: "wx",
|
|
253
|
+
});
|
|
254
|
+
commitArgs = ["commit", "--cleanup=verbatim", "--file", messagePath];
|
|
255
|
+
}
|
|
256
|
+
const staged = await smartshellInstance.execSpawn("git", ["add", "-A"], {
|
|
257
|
+
cwd: paths.cwd,
|
|
258
|
+
});
|
|
259
|
+
if (staged.exitCode !== 0)
|
|
260
|
+
throw new Error("git add failed; no commit was attempted.");
|
|
261
|
+
const result = await smartshellInstance.execSpawn("git", commitArgs, {
|
|
262
|
+
cwd: paths.cwd,
|
|
263
|
+
});
|
|
264
|
+
if (result.exitCode !== 0)
|
|
265
|
+
throw new Error("git commit failed.");
|
|
266
|
+
}
|
|
267
|
+
finally {
|
|
268
|
+
if (messageDirectory)
|
|
269
|
+
await plugins.fs.rm(messageDirectory, { recursive: true, force: true });
|
|
197
270
|
}
|
|
198
271
|
}
|
|
199
272
|
async function runPushStep(smartshellInstance, workflow) {
|
|
@@ -214,20 +287,23 @@ function assertAnalysisComplete(answerBucket, nextCommitObject) {
|
|
|
214
287
|
throw new Error("Commit workflow requires analyze before changelog and commit steps.");
|
|
215
288
|
}
|
|
216
289
|
}
|
|
217
|
-
function
|
|
218
|
-
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
219
|
-
}
|
|
220
|
-
function printCommitExecutionPlan(workflow) {
|
|
290
|
+
function printCommitExecutionPlan(workflow, manual) {
|
|
221
291
|
console.log("");
|
|
222
292
|
console.log("gitzone commit - resolved workflow");
|
|
223
293
|
console.log(`confirmation: ${workflow.confirmation}`);
|
|
294
|
+
console.log(`input: ${manual ? "manual" : "ai"}`);
|
|
224
295
|
console.log(`steps: ${workflow.steps.join(" -> ")}`);
|
|
225
296
|
console.log(`changelog: ${workflow.changelogFile}#${workflow.changelogSection}`);
|
|
297
|
+
if (manual) {
|
|
298
|
+
ui.printCommitMessage(manual.message);
|
|
299
|
+
console.log(manual.changelog);
|
|
300
|
+
}
|
|
226
301
|
console.log("");
|
|
227
302
|
}
|
|
228
303
|
async function handleRecommend(mode) {
|
|
229
304
|
const recommendationBuilder = async () => {
|
|
230
|
-
const
|
|
305
|
+
const tsdoc = await plugins.loadTsdoc();
|
|
306
|
+
const aidoc = new tsdoc.AiDoc();
|
|
231
307
|
await aidoc.start();
|
|
232
308
|
try {
|
|
233
309
|
return await aidoc.buildNextCommitObject(paths.cwd);
|
|
@@ -277,7 +353,7 @@ export function showHelp(mode) {
|
|
|
277
353
|
printJson({
|
|
278
354
|
command: "commit",
|
|
279
355
|
usage: "gitzone commit [recommend] [options]",
|
|
280
|
-
description: "
|
|
356
|
+
description: "Creates one semantic source commit from AI recommendations or explicit manual input.",
|
|
281
357
|
commands: [
|
|
282
358
|
{
|
|
283
359
|
name: "recommend",
|
|
@@ -285,16 +361,55 @@ export function showHelp(mode) {
|
|
|
285
361
|
},
|
|
286
362
|
],
|
|
287
363
|
flags: [
|
|
288
|
-
{
|
|
289
|
-
|
|
364
|
+
{
|
|
365
|
+
flag: "-m, --message <text>",
|
|
366
|
+
description: "Use a complete semantic commit message without AI",
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
flag: "--message-file <path>",
|
|
370
|
+
description: "Read the complete semantic message from a UTF-8 file",
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
flag: "--changelog <text>",
|
|
374
|
+
description: "Use custom Pending entry text or Markdown with a manual message",
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
flag: "--changelog-file <path>",
|
|
378
|
+
description: "Read custom Pending text or Markdown from a UTF-8 file",
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
flag: "-y, --yes",
|
|
382
|
+
description: "Confirm safe AI or manual commit input",
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
flag: "--allow-breaking",
|
|
386
|
+
description: "Allow -y/--yes to accept breaking AI or manual input",
|
|
387
|
+
},
|
|
290
388
|
{ flag: "-p, --push", description: "Push to origin after committing" },
|
|
291
|
-
{
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
{
|
|
389
|
+
{
|
|
390
|
+
flag: "-t, --test",
|
|
391
|
+
description: "Run tests as part of the commit workflow",
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
flag: "-b, --build",
|
|
395
|
+
description: "Run build as part of the commit workflow",
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
flag: "-f, --format",
|
|
399
|
+
description: "Run gitzone format before committing",
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
flag: "--plan",
|
|
403
|
+
description: "Show resolved workflow without mutating files",
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
flag: "--json",
|
|
407
|
+
description: "Emit JSON for `commit recommend` only",
|
|
408
|
+
},
|
|
296
409
|
],
|
|
297
410
|
examples: [
|
|
411
|
+
"gitzone commit -y --message 'fix(cache): expire stale entries'",
|
|
412
|
+
"gitzone commit -y --message-file /tmp/commit.txt --changelog-file /tmp/pending.md",
|
|
298
413
|
"gitzone commit recommend --json",
|
|
299
414
|
"gitzone commit -y",
|
|
300
415
|
"gitzone commit -ytbp",
|
|
@@ -312,8 +427,12 @@ export function showHelp(mode) {
|
|
|
312
427
|
console.log(" recommend Generate a commit recommendation without mutating the repository");
|
|
313
428
|
console.log("");
|
|
314
429
|
console.log("Flags:");
|
|
315
|
-
console.log(" -
|
|
316
|
-
console.log(" --
|
|
430
|
+
console.log(" -m, --message TEXT Use a complete semantic message without AI");
|
|
431
|
+
console.log(" --message-file PATH Read the complete message from a UTF-8 file");
|
|
432
|
+
console.log(" --changelog TEXT Custom Pending entry text or Markdown (requires a manual message)");
|
|
433
|
+
console.log(" --changelog-file PATH Read custom Pending text or Markdown from a UTF-8 file");
|
|
434
|
+
console.log(" -y, --yes Confirm safe AI or manual commit input");
|
|
435
|
+
console.log(" --allow-breaking Allow -y/--yes to accept breaking AI or manual input");
|
|
317
436
|
console.log(" -p, --push Push after commit");
|
|
318
437
|
console.log(" -t, --test Run tests in the configured order");
|
|
319
438
|
console.log(" -b, --build Run build in the configured order");
|
|
@@ -322,10 +441,12 @@ export function showHelp(mode) {
|
|
|
322
441
|
console.log(" --json Emit JSON for `commit recommend` only");
|
|
323
442
|
console.log("");
|
|
324
443
|
console.log("Examples:");
|
|
444
|
+
console.log(" gitzone commit -y --message 'fix(cache): expire stale entries'");
|
|
445
|
+
console.log(" gitzone commit -y --message-file /tmp/commit.txt --changelog-file /tmp/pending.md");
|
|
325
446
|
console.log(" gitzone commit recommend --json");
|
|
326
447
|
console.log(" gitzone commit -y");
|
|
327
448
|
console.log(" gitzone commit -ytbp");
|
|
328
449
|
console.log(" gitzone release");
|
|
329
450
|
console.log("");
|
|
330
451
|
}
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfY29tbWl0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0MsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RixNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDbkQsT0FBTyxDQUNMLEtBQUssWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWM7UUFDN0MsQ0FBQyxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsQ0FDNUQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWxDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxVQUFVLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2YsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUMvQixNQUFNLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsU0FBUyxDQUFDO1lBQ1IsRUFBRSxFQUFFLEtBQUs7WUFDVCxLQUFLLEVBQ0gsNkdBQTZHO1NBQ2hILENBQUMsQ0FBQztRQUNILE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxHQUFHLENBQ1IsTUFBTSxFQUNOLG1HQUFtRyxDQUNwRyxDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUNyQyxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUMzRCxRQUFRLEVBQUUsTUFBTTtRQUNoQixlQUFlLEVBQUUsRUFBRTtLQUNwQixDQUFDLENBQUM7SUFFSCxJQUFJLGdCQUFxQixDQUFDO0lBQzFCLElBQUksWUFBNEQsQ0FBQztJQUVqRSxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxRQUFRO2dCQUNYLE1BQU0sYUFBYSxFQUFFLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsTUFBTSxjQUFjLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDaEYsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixNQUFNLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqRixNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQztvQkFDSCxnQkFBZ0IsR0FBRyxNQUFNLGNBQWMsRUFBRSxDQUFDO2dCQUM1QyxDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxrREFBa0QsQ0FBQyxDQUFDO3dCQUN2RSxPQUFPO29CQUNULENBQUM7b0JBQ0QsTUFBTSxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxZQUFZLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNsRixNQUFNO1lBQ1IsS0FBSyxXQUFXO2dCQUNkLHNCQUFzQixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxZQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDbEUsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDdkQsTUFBTSxhQUFhLENBQUMsa0JBQWtCLEVBQUUsWUFBYSxDQUFDLENBQUM7Z0JBQ3ZELE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsTUFBTSxXQUFXLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2hELE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDcEYsTUFBTSxhQUFhLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BFLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDZCxXQUFXLEVBQUUsUUFBUTtRQUNyQixNQUFNLEVBQUUsYUFBYTtRQUNyQixVQUFVLEVBQUUsWUFBYSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDcEQsV0FBVyxFQUFFLFlBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQ3RELGFBQWEsRUFBRSxZQUFhLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDO1FBQzlELFNBQVMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtRQUN4QyxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0tBQ3hDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLEtBQUssVUFBVSxhQUFhO0lBQzFCLEVBQUUsQ0FBQyxXQUFXLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWMsQ0FDM0Isa0JBQWlELEVBQ2pELEtBQWEsRUFDYixPQUFlO0lBRWYsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLDJCQUEyQixDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxLQUFLLFVBQVUsY0FBYztJQUMzQixFQUFFLENBQUMsV0FBVyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BCLElBQUksQ0FBQztRQUNILE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxLQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNyQixzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQyxzQkFBc0I7WUFDL0QsMkJBQTJCLEVBQUUsZ0JBQWdCLENBQUMsMkJBQTJCO1lBQ3pFLDJCQUEyQixFQUFFLGdCQUFnQixDQUFDLDJCQUEyQjtZQUN6RSw2QkFBNkIsRUFBRSxnQkFBZ0IsQ0FBQyw2QkFBNkI7U0FDOUUsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO1lBQVMsQ0FBQztRQUNULE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLGlCQUFpQixDQUM5QixnQkFBcUIsRUFDckIsUUFBaUMsRUFDakMsSUFBYyxFQUNkLE9BQVk7SUFFWixNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLDJCQUEyQixLQUFLLGlCQUFpQixDQUFDO0lBQzVGLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxZQUFZLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFeEcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsR0FBRyxDQUNSLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFDbEMsZ0JBQWdCO1lBQ2QsQ0FBQyxDQUFDLHFGQUFxRjtZQUN2RixDQUFDLENBQUMsbUNBQW1DLENBQ3hDLENBQUM7UUFDRixPQUFPLGtCQUFrQixDQUFDO1lBQ3hCLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQywyQkFBMkI7WUFDeEQsV0FBVyxFQUFFLGdCQUFnQixDQUFDLDJCQUEyQjtZQUN6RCxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyw2QkFBNkI7U0FDbEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHlEQUF5RCxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkdBQTZHLENBQUMsQ0FBQztRQUNqSSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzR0FBc0csQ0FBQyxDQUFDO0lBQzFILENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDakUsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUMxQjtZQUNFLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFLFlBQVk7WUFDbEIsT0FBTyxFQUFFLDRCQUE0QjtZQUNyQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixDQUFDO1lBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQywyQkFBMkI7U0FDdEQ7UUFDRDtZQUNFLElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLGtDQUFrQztZQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsMkJBQTJCO1NBQ3REO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxtQkFBbUI7WUFDekIsT0FBTyxFQUFFLHdDQUF3QztZQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsNkJBQTZCO1NBQ3hEO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxPQUkzQjtJQUNDLE1BQU0sWUFBWSxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BELFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELEtBQUssVUFBVSxnQkFBZ0IsQ0FDN0IsUUFBaUMsRUFDakMsWUFBZ0QsRUFDaEQsZ0JBQXFCO0lBRXJCLE1BQU0sMkJBQTJCLENBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUNwRCxRQUFRLENBQUMsZ0JBQWdCLEVBQ3pCO1FBQ0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQzdDLEtBQUssRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUMvQyxPQUFPLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQztRQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsNkJBQTZCLElBQUksRUFBRTtLQUM5RCxDQUNGLENBQUM7SUFDRixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLFFBQVEsQ0FBQyxhQUFhLG1CQUFtQixDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELEtBQUssVUFBVSxhQUFhLENBQzFCLGtCQUFpRCxFQUNqRCxZQUFnRDtJQUVoRCxFQUFFLENBQUMsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsa0NBQWtDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsV0FBVyxDQUN4QixrQkFBaUQsRUFDakQsUUFBaUM7SUFFakMsTUFBTSxhQUFhLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQzFDLFlBQVksUUFBUSxDQUFDLFVBQVUsSUFBSSxhQUFhLEdBQUcsVUFBVSxFQUFFLENBQ2hFLENBQUM7SUFDRixJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxrQkFBaUQ7SUFFakQsTUFBTSxZQUFZLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUNoRixPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksUUFBUSxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUM3QixZQUE0RCxFQUM1RCxnQkFBcUI7SUFFckIsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYTtJQUMvQixPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxRQUFpQztJQUNqRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxRQUFRLENBQUMsYUFBYSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDakYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxJQUFjO0lBQzNDLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxLQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELENBQUM7Z0JBQVMsQ0FBQztZQUNULE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixJQUFJLGNBQW1CLENBQUM7SUFDeEIsSUFBSSxDQUFDO1FBQ0gsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ3hCLENBQUMsQ0FBQyxNQUFNLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDO1lBQ3RELENBQUMsQ0FBQyxNQUFNLHFCQUFxQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2QsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsK0JBQStCLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQixPQUFPO0lBQ1QsQ0FBQztJQUVELEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztRQUNyQixzQkFBc0IsRUFBRSxjQUFjLENBQUMsc0JBQXNCO1FBQzdELDJCQUEyQixFQUFFLGNBQWMsQ0FBQywyQkFBMkI7UUFDdkUsMkJBQTJCLEVBQUUsY0FBYyxDQUFDLDJCQUEyQjtRQUN2RSw2QkFBNkIsRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzVFLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxHQUFHLENBQ1QscUJBQXFCLGNBQWMsQ0FBQywyQkFBMkIsSUFBSSxjQUFjLENBQUMsMkJBQTJCLE1BQU0sY0FBYyxDQUFDLDZCQUE2QixFQUFFLENBQ2xLLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxrQ0FBa0MsR0FBRyxDQUN6QyxZQUFnRCxFQUNoRCxFQUFFO0lBQ0YsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdELE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3pFLE9BQU8sR0FBRyxVQUFVLElBQUksV0FBVyxNQUFNLGlCQUFpQixFQUFFLENBQUM7QUFDL0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFlO0lBQ3RDLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2YsU0FBUyxDQUFDO1lBQ1IsT0FBTyxFQUFFLFFBQVE7WUFDakIsS0FBSyxFQUFFLHNDQUFzQztZQUM3QyxXQUFXLEVBQUUsMERBQTBEO1lBQ3ZFLFFBQVEsRUFBRTtnQkFDUjtvQkFDRSxJQUFJLEVBQUUsV0FBVztvQkFDakIsV0FBVyxFQUFFLGtFQUFrRTtpQkFDaEY7YUFDRjtZQUNELEtBQUssRUFBRTtnQkFDTCxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHFDQUFxQyxFQUFFO2dCQUN6RSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsMERBQTBELEVBQUU7Z0JBQ3JHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUU7Z0JBQ3RFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsMENBQTBDLEVBQUU7Z0JBQy9FLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsMENBQTBDLEVBQUU7Z0JBQ2hGLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsc0NBQXNDLEVBQUU7Z0JBQzdFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsK0NBQStDLEVBQUU7Z0JBQ2hGLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdUNBQXVDLEVBQUU7YUFDekU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsaUNBQWlDO2dCQUNqQyxtQkFBbUI7Z0JBQ25CLHNCQUFzQjtnQkFDdEIsaUJBQWlCO2FBQ2xCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTztJQUNULENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkVBQTJFLENBQUMsQ0FBQztJQUN6RixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3RkFBd0YsQ0FBQyxDQUFDO0lBQ3RHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO0lBQzlGLE9BQU8sQ0FBQyxHQUFHLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDdkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sQ0FBQyxHQUFHLENBQUMsNERBQTRELENBQUMsQ0FBQztJQUMxRSxPQUFPLENBQUMsR0FBRyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7SUFDbkYsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDIn0=
|
|
452
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfY29tbWl0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsQyxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCx1QkFBdUIsR0FDeEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDhCQUE4QixHQUMvQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxxQkFBcUIsR0FFdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUV0QixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRTtJQUNuRCxPQUFPLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQztBQUNuRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNmLE9BQU87SUFD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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
import * as commitinfo from
|
|
3
|
-
import * as smartfile from
|
|
4
|
-
import * as smartinteract from
|
|
5
|
-
import * as smartshell from
|
|
6
|
-
|
|
7
|
-
export { commitinfo, smartfile, smartinteract, smartshell
|
|
1
|
+
export * from "../plugins.js";
|
|
2
|
+
import * as commitinfo from "@push.rocks/commitinfo";
|
|
3
|
+
import * as smartfile from "@push.rocks/smartfile";
|
|
4
|
+
import * as smartinteract from "@push.rocks/smartinteract";
|
|
5
|
+
import * as smartshell from "@push.rocks/smartshell";
|
|
6
|
+
export declare const loadTsdoc: () => Promise<typeof import("@git.zone/tsdoc")>;
|
|
7
|
+
export { commitinfo, smartfile, smartinteract, smartshell };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
import * as commitinfo from
|
|
3
|
-
import * as smartfile from
|
|
4
|
-
import * as smartinteract from
|
|
5
|
-
import * as smartshell from
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
|
|
1
|
+
export * from "../plugins.js";
|
|
2
|
+
import * as commitinfo from "@push.rocks/commitinfo";
|
|
3
|
+
import * as smartfile from "@push.rocks/smartfile";
|
|
4
|
+
import * as smartinteract from "@push.rocks/smartinteract";
|
|
5
|
+
import * as smartshell from "@push.rocks/smartshell";
|
|
6
|
+
// Manual commits must not load or initialize the AI dependency chain.
|
|
7
|
+
export const loadTsdoc = () => import("@git.zone/tsdoc");
|
|
8
|
+
export { commitinfo, smartfile, smartinteract, smartshell };
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfY29tbWl0L21vZC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBRTlCLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMifQ==
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as plugins from "./mod.plugins.js";
|
|
2
2
|
import { type IReleaseArtifact } from "./classes.releasejournal.js";
|
|
3
|
-
declare const supportedPnpmVersions: readonly ["11.25.0", "12.1.0", "12.2.1", "12.3.0", "12.3.4"];
|
|
4
3
|
export declare function assertNpmPackageName(value: unknown): asserts value is string;
|
|
5
4
|
export interface IPnpmReleaseCapability {
|
|
6
|
-
readonly version:
|
|
5
|
+
readonly version: string;
|
|
7
6
|
}
|
|
8
7
|
export declare const buildQualifiedPnpmArgs: (capabilityArg: IPnpmReleaseCapability | undefined, argsArg: readonly string[]) => string[];
|
|
9
8
|
export type TNpmArtifactProbeStatus = "absent" | "exact" | "conflict" | "inconclusive";
|
|
@@ -35,4 +34,3 @@ export declare const publishNpmArtifact: (smartshellArg: plugins.smartshell.Smar
|
|
|
35
34
|
export declare const assertNpmVersionAbsent: (registryArg: string, packageNameArg: string, versionArg: string, optionsArg?: INpmArtifactProbeOptions) => Promise<void>;
|
|
36
35
|
export declare const probeAnonymousNpmArtifact: (registryArg: string, artifactArg: IReleaseArtifact, tagArg?: string, optionsArg?: INpmArtifactProbeOptions) => Promise<INpmArtifactProbeResult>;
|
|
37
36
|
export declare const waitForAnonymousNpmArtifact: (registryArg: string, artifactArg: IReleaseArtifact, tagArg?: string, optionsArg?: INpmArtifactProbeOptions) => Promise<INpmArtifactProbeResult>;
|
|
38
|
-
export {};
|