@git.zone/cli 2.14.2 → 2.15.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/.smartconfig.json +36 -11
- package/assets/templates/service/npmextra.json +8 -2
- package/assets/templates/smartconfig/_smartconfig.json +5 -1
- package/assets/templates/website/npmextra.json +8 -2
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/gitzone.cli.js +8 -1
- package/dist_ts/helpers.changelog.d.ts +16 -0
- package/dist_ts/helpers.changelog.js +114 -0
- package/dist_ts/helpers.smartconfigmigrations.d.ts +7 -0
- package/dist_ts/helpers.smartconfigmigrations.js +161 -0
- package/dist_ts/helpers.workflow.d.ts +97 -0
- package/dist_ts/helpers.workflow.js +258 -0
- package/dist_ts/mod_commit/index.js +190 -303
- package/dist_ts/mod_commit/mod.helpers.d.ts +23 -0
- package/dist_ts/mod_commit/mod.helpers.js +22 -15
- package/dist_ts/mod_commit/mod.ui.d.ts +1 -1
- package/dist_ts/mod_commit/mod.ui.js +7 -2
- package/dist_ts/mod_config/classes.commitconfig.d.ts +6 -0
- package/dist_ts/mod_config/classes.commitconfig.js +28 -4
- package/dist_ts/mod_config/classes.releaseconfig.js +13 -7
- package/dist_ts/mod_config/index.js +77 -29
- package/dist_ts/mod_format/formatters/smartconfig.formatter.js +3 -57
- package/dist_ts/mod_release/index.d.ts +3 -0
- package/dist_ts/mod_release/index.js +299 -0
- package/dist_ts/mod_release/mod.plugins.d.ts +3 -0
- package/dist_ts/mod_release/mod.plugins.js +4 -0
- package/dist_ts/mod_standard/index.js +16 -3
- package/license +2 -2
- package/package.json +20 -30
- package/readme.hints.md +15 -17
- package/readme.md +239 -421
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/gitzone.cli.ts +8 -0
- package/ts/helpers.changelog.ts +165 -0
- package/ts/helpers.smartconfigmigrations.ts +192 -0
- package/ts/helpers.workflow.ts +387 -0
- package/ts/mod_commit/index.ts +233 -435
- package/ts/mod_commit/mod.helpers.ts +28 -16
- package/ts/mod_commit/mod.ui.ts +7 -2
- package/ts/mod_config/classes.commitconfig.ts +33 -3
- package/ts/mod_config/classes.releaseconfig.ts +14 -7
- package/ts/mod_config/index.ts +89 -28
- package/ts/mod_format/formatters/smartconfig.formatter.ts +2 -62
- package/ts/mod_release/index.ts +393 -0
- package/ts/mod_release/mod.plugins.ts +5 -0
- package/ts/mod_standard/index.ts +15 -2
package/.smartconfig.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"szci": {
|
|
3
|
-
"npmGlobalTools": []
|
|
4
|
-
"npmAccessLevel": "private",
|
|
5
|
-
"npmRegistryUrl": "verdaccio.lossless.one"
|
|
2
|
+
"@ship.zone/szci": {
|
|
3
|
+
"npmGlobalTools": []
|
|
6
4
|
},
|
|
7
|
-
"tsdoc": {
|
|
5
|
+
"@git.zone/tsdoc": {
|
|
8
6
|
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
|
9
7
|
},
|
|
10
8
|
"@git.zone/cli": {
|
|
9
|
+
"schemaVersion": 2,
|
|
11
10
|
"projectType": "npm",
|
|
12
11
|
"module": {
|
|
13
12
|
"githost": "gitlab.com",
|
|
@@ -35,12 +34,38 @@
|
|
|
35
34
|
"CI/CD"
|
|
36
35
|
]
|
|
37
36
|
},
|
|
37
|
+
"commit": {
|
|
38
|
+
"confirmation": "prompt",
|
|
39
|
+
"steps": ["analyze", "changelog", "commit"]
|
|
40
|
+
},
|
|
38
41
|
"release": {
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
"confirmation": "prompt",
|
|
43
|
+
"preflight": {
|
|
44
|
+
"requireCleanTree": true,
|
|
45
|
+
"test": false,
|
|
46
|
+
"build": true
|
|
47
|
+
},
|
|
48
|
+
"targets": {
|
|
49
|
+
"git": {
|
|
50
|
+
"enabled": true,
|
|
51
|
+
"remote": "origin",
|
|
52
|
+
"pushBranch": true,
|
|
53
|
+
"pushTags": true
|
|
54
|
+
},
|
|
55
|
+
"npm": {
|
|
56
|
+
"enabled": true,
|
|
57
|
+
"registries": [
|
|
58
|
+
"https://verdaccio.lossless.digital",
|
|
59
|
+
"https://registry.npmjs.org"
|
|
60
|
+
],
|
|
61
|
+
"accessLevel": "public",
|
|
62
|
+
"alreadyPublished": "success"
|
|
63
|
+
},
|
|
64
|
+
"docker": {
|
|
65
|
+
"enabled": false,
|
|
66
|
+
"images": []
|
|
67
|
+
}
|
|
68
|
+
}
|
|
44
69
|
}
|
|
45
70
|
}
|
|
46
|
-
}
|
|
71
|
+
}
|
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
"npmPackagename": "{{module.npmPackagename}}",
|
|
10
10
|
"license": "{{module.license}}",
|
|
11
11
|
"projectDomain": "{{module.projectDomain}}"
|
|
12
|
+
},
|
|
13
|
+
"release": {
|
|
14
|
+
"targets": {
|
|
15
|
+
"npm": {
|
|
16
|
+
"registries": ["{{npmPrivateRegistry}}"]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
12
19
|
}
|
|
13
20
|
},
|
|
14
21
|
"@ship.zone/szci": {
|
|
@@ -18,7 +25,6 @@
|
|
|
18
25
|
},
|
|
19
26
|
"dockerBuildargEnvMap": {
|
|
20
27
|
"NPMCI_TOKEN_NPM2": "NPMCI_TOKEN_NPM2"
|
|
21
|
-
}
|
|
22
|
-
"npmRegistryUrl": "{{npmPrivateRegistry}}"
|
|
28
|
+
}
|
|
23
29
|
}
|
|
24
30
|
}
|
|
@@ -14,7 +14,11 @@ fileName: .smartconfig.json
|
|
|
14
14
|
"projectDomain": "{{module.projectDomain}}"
|
|
15
15
|
},
|
|
16
16
|
"release": {
|
|
17
|
-
"
|
|
17
|
+
"targets": {
|
|
18
|
+
"npm": {
|
|
19
|
+
"accessLevel": "{{module.npmAccessLevel}}"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
18
22
|
}
|
|
19
23
|
},
|
|
20
24
|
"@ship.zone/szci": {
|
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
"npmPackagename": "{{module.npmPackagename}}",
|
|
10
10
|
"license": "{{module.license}}",
|
|
11
11
|
"projectDomain": "{{module.projectDomain}}"
|
|
12
|
+
},
|
|
13
|
+
"release": {
|
|
14
|
+
"targets": {
|
|
15
|
+
"npm": {
|
|
16
|
+
"registries": ["{{private.npmRegistryUrl}}"]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
12
19
|
}
|
|
13
20
|
},
|
|
14
21
|
"@ship.zone/szci": {
|
|
@@ -18,7 +25,6 @@
|
|
|
18
25
|
},
|
|
19
26
|
"dockerBuildargEnvMap": {
|
|
20
27
|
"NPMCI_TOKEN_NPM2": "NPMCI_TOKEN_NPM2"
|
|
21
|
-
}
|
|
22
|
-
"npmRegistryUrl": "{{private.npmRegistryUrl}}"
|
|
28
|
+
}
|
|
23
29
|
}
|
|
24
30
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/cli',
|
|
6
|
-
version: '2.
|
|
6
|
+
version: '2.15.0',
|
|
7
7
|
description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxlQUFlO0lBQ3JCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSwrTEFBK0w7Q0FDN00sQ0FBQSJ9
|
package/dist_ts/gitzone.cli.js
CHANGED
|
@@ -37,6 +37,13 @@ export let run = async () => {
|
|
|
37
37
|
const modCommit = await import("./mod_commit/index.js");
|
|
38
38
|
await modCommit.run(argvArg);
|
|
39
39
|
});
|
|
40
|
+
/**
|
|
41
|
+
* create a release from pending changelog entries
|
|
42
|
+
*/
|
|
43
|
+
gitzoneSmartcli.addCommand("release").subscribe(async (argvArg) => {
|
|
44
|
+
const modRelease = await import("./mod_release/index.js");
|
|
45
|
+
await modRelease.run(argvArg);
|
|
46
|
+
});
|
|
40
47
|
/**
|
|
41
48
|
* deprecate a package on npm
|
|
42
49
|
*/
|
|
@@ -124,4 +131,4 @@ export let run = async () => {
|
|
|
124
131
|
gitzoneSmartcli.startParse();
|
|
125
132
|
return await done.promise;
|
|
126
133
|
};
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0em9uZS5jbGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9naXR6b25lLmNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUV4RCxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDMUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLGFBQWEsRUFBRSxDQUFDO0lBRXpDLGtCQUFrQjtJQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxRSxvQkFBb0I7SUFDcEIsSUFBSSxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEUsTUFBTSxtQkFBbUIsQ0FBQyxLQUFLLENBQzdCLFNBQVMsRUFDVCxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFDdkIsaURBQWlELENBQ2xELENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFVBQVUs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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type TChangelogBucket = "Breaking Changes" | "Features" | "Fixes" | "Documentation" | "Maintenance";
|
|
2
|
+
export interface IChangelogEntry {
|
|
3
|
+
type: string;
|
|
4
|
+
scope: string;
|
|
5
|
+
message: string;
|
|
6
|
+
details?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface IPendingChangelog {
|
|
9
|
+
block: string;
|
|
10
|
+
isEmpty: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const ensurePendingSection: (filePath: string, sectionName?: string) => Promise<string>;
|
|
13
|
+
export declare const appendPendingChangelogEntry: (filePath: string, sectionName: string, entry: IChangelogEntry) => Promise<void>;
|
|
14
|
+
export declare const readPendingChangelog: (filePath: string, sectionName?: string) => Promise<IPendingChangelog>;
|
|
15
|
+
export declare const inferVersionTypeFromPending: (pendingBlock: string) => "patch" | "minor" | "major";
|
|
16
|
+
export declare const movePendingToVersion: (filePath: string, sectionName: string, versionHeading: string, version: string, dateString: string) => Promise<void>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import * as plugins from "./plugins.js";
|
|
2
|
+
const bucketForCommitType = (commitType) => {
|
|
3
|
+
switch (commitType) {
|
|
4
|
+
case "BREAKING CHANGE":
|
|
5
|
+
return "Breaking Changes";
|
|
6
|
+
case "feat":
|
|
7
|
+
return "Features";
|
|
8
|
+
case "fix":
|
|
9
|
+
return "Fixes";
|
|
10
|
+
case "docs":
|
|
11
|
+
return "Documentation";
|
|
12
|
+
default:
|
|
13
|
+
return "Maintenance";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const readChangelog = async (filePath) => {
|
|
17
|
+
if (!(await plugins.smartfs.file(filePath).exists())) {
|
|
18
|
+
return "# Changelog\n\n";
|
|
19
|
+
}
|
|
20
|
+
return (await plugins.smartfs.file(filePath).encoding("utf8").read());
|
|
21
|
+
};
|
|
22
|
+
const writeChangelog = async (filePath, content) => {
|
|
23
|
+
await plugins.smartfs.file(filePath).encoding("utf8").write(content.endsWith("\n") ? content : `${content}\n`);
|
|
24
|
+
};
|
|
25
|
+
const findPendingSection = (content, sectionName) => {
|
|
26
|
+
const headingRegex = new RegExp(`^##\\s+${sectionName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s*$`, "m");
|
|
27
|
+
const match = headingRegex.exec(content);
|
|
28
|
+
if (!match || match.index === undefined) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const bodyStart = match.index + match[0].length;
|
|
32
|
+
const rest = content.slice(bodyStart);
|
|
33
|
+
const nextHeadingMatch = /^##\s+/m.exec(rest);
|
|
34
|
+
const end = nextHeadingMatch ? bodyStart + nextHeadingMatch.index : content.length;
|
|
35
|
+
return { start: match.index, bodyStart, end };
|
|
36
|
+
};
|
|
37
|
+
export const ensurePendingSection = async (filePath, sectionName = "Pending") => {
|
|
38
|
+
let content = await readChangelog(filePath);
|
|
39
|
+
if (findPendingSection(content, sectionName)) {
|
|
40
|
+
return content;
|
|
41
|
+
}
|
|
42
|
+
const pendingSection = `## ${sectionName}\n\n`;
|
|
43
|
+
const titleMatch = /^#\s+.+$/m.exec(content);
|
|
44
|
+
if (titleMatch && titleMatch.index !== undefined) {
|
|
45
|
+
const insertAt = titleMatch.index + titleMatch[0].length;
|
|
46
|
+
content = `${content.slice(0, insertAt)}\n\n${pendingSection}${content.slice(insertAt).replace(/^\n+/, "")}`;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
content = `# Changelog\n\n${pendingSection}${content}`;
|
|
50
|
+
}
|
|
51
|
+
await writeChangelog(filePath, content);
|
|
52
|
+
return content;
|
|
53
|
+
};
|
|
54
|
+
export const appendPendingChangelogEntry = async (filePath, sectionName, entry) => {
|
|
55
|
+
let content = await ensurePendingSection(filePath, sectionName);
|
|
56
|
+
const pendingSection = findPendingSection(content, sectionName);
|
|
57
|
+
let pendingBody = content.slice(pendingSection.bodyStart, pendingSection.end);
|
|
58
|
+
const bucket = bucketForCommitType(entry.type);
|
|
59
|
+
const bucketHeading = `### ${bucket}`;
|
|
60
|
+
const entryLines = [`- ${entry.message}${entry.scope ? ` (${entry.scope})` : ""}`];
|
|
61
|
+
for (const detail of entry.details || []) {
|
|
62
|
+
entryLines.push(` - ${detail}`);
|
|
63
|
+
}
|
|
64
|
+
const renderedEntry = entryLines.join("\n");
|
|
65
|
+
const bucketRegex = new RegExp(`^###\\s+${bucket.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s*$`, "m");
|
|
66
|
+
const bucketMatch = bucketRegex.exec(pendingBody);
|
|
67
|
+
if (!bucketMatch || bucketMatch.index === undefined) {
|
|
68
|
+
pendingBody = `${pendingBody.trimEnd()}\n\n${bucketHeading}\n\n${renderedEntry}\n`;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const bucketBodyStart = bucketMatch.index + bucketMatch[0].length;
|
|
72
|
+
const afterBucket = pendingBody.slice(bucketBodyStart);
|
|
73
|
+
const nextBucketMatch = /^###\s+/m.exec(afterBucket);
|
|
74
|
+
const insertAt = nextBucketMatch ? bucketBodyStart + nextBucketMatch.index : pendingBody.length;
|
|
75
|
+
const beforeInsert = pendingBody.slice(0, insertAt).trimEnd();
|
|
76
|
+
const afterInsert = pendingBody.slice(insertAt).replace(/^\n+/, "");
|
|
77
|
+
pendingBody = `${beforeInsert}\n${renderedEntry}\n\n${afterInsert}`;
|
|
78
|
+
}
|
|
79
|
+
content = `${content.slice(0, pendingSection.bodyStart)}\n${pendingBody.trim()}\n\n${content.slice(pendingSection.end).replace(/^\n+/, "")}`;
|
|
80
|
+
await writeChangelog(filePath, content);
|
|
81
|
+
};
|
|
82
|
+
export const readPendingChangelog = async (filePath, sectionName = "Pending") => {
|
|
83
|
+
const content = await ensurePendingSection(filePath, sectionName);
|
|
84
|
+
const pendingSection = findPendingSection(content, sectionName);
|
|
85
|
+
const block = content.slice(pendingSection.bodyStart, pendingSection.end).trim();
|
|
86
|
+
return {
|
|
87
|
+
block,
|
|
88
|
+
isEmpty: block.length === 0,
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
export const inferVersionTypeFromPending = (pendingBlock) => {
|
|
92
|
+
if (/^###\s+Breaking Changes\s*$/m.test(pendingBlock)) {
|
|
93
|
+
return "major";
|
|
94
|
+
}
|
|
95
|
+
if (/^###\s+Features\s*$/m.test(pendingBlock)) {
|
|
96
|
+
return "minor";
|
|
97
|
+
}
|
|
98
|
+
return "patch";
|
|
99
|
+
};
|
|
100
|
+
export const movePendingToVersion = async (filePath, sectionName, versionHeading, version, dateString) => {
|
|
101
|
+
let content = await ensurePendingSection(filePath, sectionName);
|
|
102
|
+
const pendingSection = findPendingSection(content, sectionName);
|
|
103
|
+
const pendingBlock = content.slice(pendingSection.bodyStart, pendingSection.end).trim();
|
|
104
|
+
if (!pendingBlock) {
|
|
105
|
+
throw new Error("No pending changelog entries. Nothing to release.");
|
|
106
|
+
}
|
|
107
|
+
const renderedHeading = versionHeading
|
|
108
|
+
.replaceAll("{{version}}", version)
|
|
109
|
+
.replaceAll("{{date}}", dateString);
|
|
110
|
+
const nextContent = content.slice(pendingSection.end).replace(/^\n+/, "");
|
|
111
|
+
content = `${content.slice(0, pendingSection.bodyStart)}\n\n${renderedHeading}\n\n${pendingBlock}\n\n${nextContent}`;
|
|
112
|
+
await writeChangelog(filePath, content);
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5jaGFuZ2Vsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9oZWxwZXJzLmNoYW5nZWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQXFCeEMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQWtCLEVBQW9CLEVBQUU7SUFDbkUsUUFBUSxVQUFVLEVBQUUsQ0FBQztRQUNuQixLQUFLLGlCQUFpQjtZQUNwQixPQUFPLGtCQUFrQixDQUFDO1FBQzVCLEtBQUssTUFBTTtZQUNULE9BQU8sVUFBVSxDQUFDO1FBQ3BCLEtBQUssS0FBSztZQUNSLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLEtBQUssTUFBTTtZQUNULE9BQU8sZUFBZSxDQUFDO1FBQ3pCO1lBQ0UsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxRQUFnQixFQUFtQixFQUFFO0lBQ2hFLElBQUksQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUNELE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBVyxDQUFDO0FBQ2xGLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxRQUFnQixFQUFFLE9BQWUsRUFBaUIsRUFBRTtJQUNoRixNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FB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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const CURRENT_GITZONE_CLI_SCHEMA_VERSION = 2;
|
|
2
|
+
export interface ISmartconfigMigrationResult {
|
|
3
|
+
migrated: boolean;
|
|
4
|
+
fromVersion: number;
|
|
5
|
+
toVersion: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const migrateSmartconfigData: (smartconfigJson: Record<string, any>, targetVersion?: number) => ISmartconfigMigrationResult;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
export const CURRENT_GITZONE_CLI_SCHEMA_VERSION = 2;
|
|
2
|
+
const CLI_NAMESPACE = "@git.zone/cli";
|
|
3
|
+
const isPlainObject = (value) => {
|
|
4
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5
|
+
};
|
|
6
|
+
const ensureObject = (parent, key) => {
|
|
7
|
+
if (!isPlainObject(parent[key])) {
|
|
8
|
+
parent[key] = {};
|
|
9
|
+
}
|
|
10
|
+
return parent[key];
|
|
11
|
+
};
|
|
12
|
+
const migrateNamespaceKeys = (smartconfigJson) => {
|
|
13
|
+
let migrated = false;
|
|
14
|
+
const migrations = [
|
|
15
|
+
{ oldKey: "gitzone", newKey: CLI_NAMESPACE },
|
|
16
|
+
{ oldKey: "tsdoc", newKey: "@git.zone/tsdoc" },
|
|
17
|
+
{ oldKey: "npmdocker", newKey: "@git.zone/tsdocker" },
|
|
18
|
+
{ oldKey: "npmci", newKey: "@ship.zone/szci" },
|
|
19
|
+
{ oldKey: "szci", newKey: "@ship.zone/szci" },
|
|
20
|
+
];
|
|
21
|
+
for (const { oldKey, newKey } of migrations) {
|
|
22
|
+
if (!isPlainObject(smartconfigJson[oldKey])) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (!isPlainObject(smartconfigJson[newKey])) {
|
|
26
|
+
smartconfigJson[newKey] = smartconfigJson[oldKey];
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
smartconfigJson[newKey] = {
|
|
30
|
+
...smartconfigJson[oldKey],
|
|
31
|
+
...smartconfigJson[newKey],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
delete smartconfigJson[oldKey];
|
|
35
|
+
migrated = true;
|
|
36
|
+
}
|
|
37
|
+
return migrated;
|
|
38
|
+
};
|
|
39
|
+
const migrateToV2 = (smartconfigJson) => {
|
|
40
|
+
const cliConfig = ensureObject(smartconfigJson, CLI_NAMESPACE);
|
|
41
|
+
const releaseConfig = ensureObject(cliConfig, "release");
|
|
42
|
+
let migrated = false;
|
|
43
|
+
const targets = ensureObject(releaseConfig, "targets");
|
|
44
|
+
const shipzoneConfig = smartconfigJson["@ship.zone/szci"];
|
|
45
|
+
if (isPlainObject(releaseConfig.git) && !isPlainObject(targets.git)) {
|
|
46
|
+
targets.git = releaseConfig.git;
|
|
47
|
+
delete releaseConfig.git;
|
|
48
|
+
migrated = true;
|
|
49
|
+
}
|
|
50
|
+
if (isPlainObject(releaseConfig.npm) && !isPlainObject(targets.npm)) {
|
|
51
|
+
targets.npm = releaseConfig.npm;
|
|
52
|
+
delete releaseConfig.npm;
|
|
53
|
+
migrated = true;
|
|
54
|
+
}
|
|
55
|
+
if (isPlainObject(releaseConfig.docker) && !isPlainObject(targets.docker)) {
|
|
56
|
+
targets.docker = releaseConfig.docker;
|
|
57
|
+
delete releaseConfig.docker;
|
|
58
|
+
migrated = true;
|
|
59
|
+
}
|
|
60
|
+
if (Array.isArray(releaseConfig.registries)) {
|
|
61
|
+
const npmTarget = ensureObject(targets, "npm");
|
|
62
|
+
if (!Array.isArray(npmTarget.registries)) {
|
|
63
|
+
npmTarget.registries = releaseConfig.registries;
|
|
64
|
+
}
|
|
65
|
+
delete releaseConfig.registries;
|
|
66
|
+
migrated = true;
|
|
67
|
+
}
|
|
68
|
+
if (releaseConfig.accessLevel) {
|
|
69
|
+
const npmTarget = ensureObject(targets, "npm");
|
|
70
|
+
if (!npmTarget.accessLevel) {
|
|
71
|
+
npmTarget.accessLevel = releaseConfig.accessLevel;
|
|
72
|
+
}
|
|
73
|
+
delete releaseConfig.accessLevel;
|
|
74
|
+
migrated = true;
|
|
75
|
+
}
|
|
76
|
+
if (isPlainObject(shipzoneConfig)) {
|
|
77
|
+
if (shipzoneConfig.npmAccessLevel) {
|
|
78
|
+
const npmTarget = ensureObject(targets, "npm");
|
|
79
|
+
if (!npmTarget.accessLevel) {
|
|
80
|
+
npmTarget.accessLevel = shipzoneConfig.npmAccessLevel;
|
|
81
|
+
}
|
|
82
|
+
delete shipzoneConfig.npmAccessLevel;
|
|
83
|
+
migrated = true;
|
|
84
|
+
}
|
|
85
|
+
if (shipzoneConfig.npmRegistryUrl) {
|
|
86
|
+
const npmTarget = ensureObject(targets, "npm");
|
|
87
|
+
const registry = normalizeRegistryUrl(shipzoneConfig.npmRegistryUrl);
|
|
88
|
+
const registries = Array.isArray(npmTarget.registries) ? npmTarget.registries : [];
|
|
89
|
+
if (!registries.includes(registry)) {
|
|
90
|
+
registries.push(registry);
|
|
91
|
+
}
|
|
92
|
+
npmTarget.registries = registries;
|
|
93
|
+
delete shipzoneConfig.npmRegistryUrl;
|
|
94
|
+
migrated = true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (Array.isArray(releaseConfig.steps)) {
|
|
98
|
+
const steps = releaseConfig.steps;
|
|
99
|
+
const preflight = ensureObject(releaseConfig, "preflight");
|
|
100
|
+
if (steps.includes("test") && preflight.test === undefined) {
|
|
101
|
+
preflight.test = true;
|
|
102
|
+
}
|
|
103
|
+
if (steps.includes("build") && preflight.build === undefined) {
|
|
104
|
+
preflight.build = true;
|
|
105
|
+
}
|
|
106
|
+
if (steps.includes("push")) {
|
|
107
|
+
const gitTarget = ensureObject(targets, "git");
|
|
108
|
+
if (gitTarget.enabled === undefined) {
|
|
109
|
+
gitTarget.enabled = true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (steps.includes("publishNpm")) {
|
|
113
|
+
const npmTarget = ensureObject(targets, "npm");
|
|
114
|
+
if (npmTarget.enabled === undefined) {
|
|
115
|
+
npmTarget.enabled = true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (steps.includes("publishDocker")) {
|
|
119
|
+
const dockerTarget = ensureObject(targets, "docker");
|
|
120
|
+
if (dockerTarget.enabled === undefined) {
|
|
121
|
+
dockerTarget.enabled = true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
delete releaseConfig.steps;
|
|
125
|
+
migrated = true;
|
|
126
|
+
}
|
|
127
|
+
if (releaseConfig.changelog) {
|
|
128
|
+
delete releaseConfig.changelog;
|
|
129
|
+
migrated = true;
|
|
130
|
+
}
|
|
131
|
+
cliConfig.schemaVersion = 2;
|
|
132
|
+
return migrated || true;
|
|
133
|
+
};
|
|
134
|
+
const normalizeRegistryUrl = (url) => {
|
|
135
|
+
let normalizedUrl = url.trim();
|
|
136
|
+
if (!normalizedUrl.startsWith("http://") && !normalizedUrl.startsWith("https://")) {
|
|
137
|
+
normalizedUrl = `https://${normalizedUrl}`;
|
|
138
|
+
}
|
|
139
|
+
return normalizedUrl.endsWith("/") ? normalizedUrl.slice(0, -1) : normalizedUrl;
|
|
140
|
+
};
|
|
141
|
+
export const migrateSmartconfigData = (smartconfigJson, targetVersion = CURRENT_GITZONE_CLI_SCHEMA_VERSION) => {
|
|
142
|
+
let migrated = false;
|
|
143
|
+
migrated = migrateNamespaceKeys(smartconfigJson) || migrated;
|
|
144
|
+
const cliConfig = ensureObject(smartconfigJson, CLI_NAMESPACE);
|
|
145
|
+
const fromVersion = typeof cliConfig.schemaVersion === "number" ? cliConfig.schemaVersion : 1;
|
|
146
|
+
let currentVersion = fromVersion;
|
|
147
|
+
if (currentVersion < 2 && targetVersion >= 2) {
|
|
148
|
+
migrated = migrateToV2(smartconfigJson) || migrated;
|
|
149
|
+
currentVersion = 2;
|
|
150
|
+
}
|
|
151
|
+
if (targetVersion === CURRENT_GITZONE_CLI_SCHEMA_VERSION && cliConfig.schemaVersion !== targetVersion) {
|
|
152
|
+
cliConfig.schemaVersion = targetVersion;
|
|
153
|
+
migrated = true;
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
migrated,
|
|
157
|
+
fromVersion,
|
|
158
|
+
toVersion: Math.min(targetVersion, CURRENT_GITZONE_CLI_SCHEMA_VERSION),
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5zbWFydGNvbmZpZ21pZ3JhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9oZWxwZXJzLnNtYXJ0Y29uZmlnbWlncmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLENBQUM7QUFRcEQsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBRXRDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBYyxFQUFnQyxFQUFFO0lBQ3JFLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlFLENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBMkIsRUFBRSxHQUFXLEVBQXVCLEVBQUU7SUFDckYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxlQUFvQyxFQUFXLEVBQUU7SUFDN0UsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFO1FBQzVDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUU7UUFDOUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRTtRQUNyRCxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFO1FBQzlD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
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
export type TConfirmationMode = "prompt" | "auto" | "plan";
|
|
2
|
+
export type TCommitStep = "format" | "analyze" | "test" | "build" | "changelog" | "commit" | "push";
|
|
3
|
+
export type TReleaseTarget = "git" | "npm" | "docker";
|
|
4
|
+
export interface ICommitWorkflowConfig {
|
|
5
|
+
confirmation?: TConfirmationMode;
|
|
6
|
+
staging?: "all";
|
|
7
|
+
steps?: TCommitStep[];
|
|
8
|
+
alwaysTest?: boolean;
|
|
9
|
+
alwaysBuild?: boolean;
|
|
10
|
+
analyze?: {
|
|
11
|
+
provider?: "ai";
|
|
12
|
+
requireConfirmationFor?: string[];
|
|
13
|
+
};
|
|
14
|
+
test?: {
|
|
15
|
+
command?: string;
|
|
16
|
+
};
|
|
17
|
+
build?: {
|
|
18
|
+
command?: string;
|
|
19
|
+
verifyCleanTree?: boolean;
|
|
20
|
+
};
|
|
21
|
+
push?: {
|
|
22
|
+
remote?: string;
|
|
23
|
+
followTags?: boolean;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface IReleaseGitTargetConfig {
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
remote?: string;
|
|
29
|
+
pushBranch?: boolean;
|
|
30
|
+
pushTags?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface IReleaseNpmTargetConfig {
|
|
33
|
+
enabled?: boolean;
|
|
34
|
+
registries?: string[];
|
|
35
|
+
accessLevel?: "public" | "private";
|
|
36
|
+
alreadyPublished?: "success" | "error";
|
|
37
|
+
}
|
|
38
|
+
export interface IReleaseDockerTargetConfig {
|
|
39
|
+
enabled?: boolean;
|
|
40
|
+
images?: string[];
|
|
41
|
+
}
|
|
42
|
+
export interface IReleaseWorkflowConfig {
|
|
43
|
+
confirmation?: TConfirmationMode;
|
|
44
|
+
version?: {
|
|
45
|
+
strategy?: "semver";
|
|
46
|
+
source?: "pendingChangelog" | "manual";
|
|
47
|
+
};
|
|
48
|
+
preflight?: {
|
|
49
|
+
requireCleanTree?: boolean;
|
|
50
|
+
test?: boolean;
|
|
51
|
+
build?: boolean;
|
|
52
|
+
testCommand?: string;
|
|
53
|
+
buildCommand?: string;
|
|
54
|
+
};
|
|
55
|
+
targets?: {
|
|
56
|
+
git?: IReleaseGitTargetConfig;
|
|
57
|
+
npm?: IReleaseNpmTargetConfig;
|
|
58
|
+
docker?: IReleaseDockerTargetConfig;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export interface IResolvedCommitWorkflow {
|
|
62
|
+
confirmation: TConfirmationMode;
|
|
63
|
+
steps: TCommitStep[];
|
|
64
|
+
staging: "all";
|
|
65
|
+
testCommand: string;
|
|
66
|
+
buildCommand: string;
|
|
67
|
+
changelogFile: "changelog.md";
|
|
68
|
+
changelogSection: "Pending";
|
|
69
|
+
pushRemote: string;
|
|
70
|
+
pushFollowTags: boolean;
|
|
71
|
+
releaseFlagRequested: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface IResolvedReleaseWorkflow {
|
|
74
|
+
confirmation: TConfirmationMode;
|
|
75
|
+
plan: string[];
|
|
76
|
+
targets: TReleaseTarget[];
|
|
77
|
+
requireCleanTree: boolean;
|
|
78
|
+
runTests: boolean;
|
|
79
|
+
runBuild: boolean;
|
|
80
|
+
testCommand: string;
|
|
81
|
+
buildCommand: string;
|
|
82
|
+
changelogFile: "changelog.md";
|
|
83
|
+
changelogPendingSection: "Pending";
|
|
84
|
+
changelogVersionHeading: "## {{date}} - {{version}}";
|
|
85
|
+
gitEnabled: boolean;
|
|
86
|
+
gitRemote: string;
|
|
87
|
+
pushBranch: boolean;
|
|
88
|
+
pushTags: boolean;
|
|
89
|
+
npmEnabled: boolean;
|
|
90
|
+
npmRegistries: string[];
|
|
91
|
+
npmAccessLevel: "public" | "private";
|
|
92
|
+
npmAlreadyPublished: "success" | "error";
|
|
93
|
+
dockerEnabled: boolean;
|
|
94
|
+
dockerImages: string[];
|
|
95
|
+
}
|
|
96
|
+
export declare const resolveCommitWorkflow: (argvArg: any) => Promise<IResolvedCommitWorkflow>;
|
|
97
|
+
export declare const resolveReleaseWorkflow: (argvArg: any) => Promise<IResolvedReleaseWorkflow>;
|