@git.zone/cli 2.2.2 → 2.3.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/assets/templates/npmextra/npmextra.json +4 -2
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.gitzoneconfig.js +10 -4
- package/dist_ts/gitzone.cli.js +8 -1
- package/dist_ts/mod_commit/index.js +71 -6
- package/dist_ts/mod_commit/mod.ui.d.ts +2 -0
- package/dist_ts/mod_commit/mod.ui.js +11 -2
- package/dist_ts/mod_config/classes.releaseconfig.d.ts +60 -0
- package/dist_ts/mod_config/classes.releaseconfig.js +131 -0
- package/dist_ts/mod_config/index.d.ts +3 -0
- package/dist_ts/mod_config/index.js +248 -0
- package/dist_ts/mod_config/mod.plugins.d.ts +2 -0
- package/dist_ts/mod_config/mod.plugins.js +4 -0
- package/dist_ts/mod_format/format.npmextra.js +33 -1
- package/package.json +4 -4
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.gitzoneconfig.ts +13 -5
- package/ts/gitzone.cli.ts +8 -0
- package/ts/mod_commit/index.ts +72 -7
- package/ts/mod_commit/mod.ui.ts +12 -1
- package/ts/mod_config/classes.releaseconfig.ts +166 -0
- package/ts/mod_config/index.ts +277 -0
- package/ts/mod_config/mod.plugins.ts +3 -0
- package/ts/mod_format/format.npmextra.ts +39 -0
- package/dist_ts/gitzone.config.d.ts +0 -28
- package/dist_ts/gitzone.config.js +0 -21
- package/dist_ts/gitzone.monitor.d.ts +0 -1
- package/dist_ts/gitzone.monitor.js +0 -2
- package/dist_ts/gitzone.paths.d.ts +0 -4
- package/dist_ts/gitzone.paths.js +0 -6
- package/dist_ts/gitzone.plugins.d.ts +0 -10
- package/dist_ts/gitzone.plugins.js +0 -11
- package/dist_ts/mod_format/format.classes.project.d.ts +0 -8
- package/dist_ts/mod_format/format.classes.project.js +0 -20
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
// gitzone config - manage release registry configuration
|
|
2
|
+
import * as plugins from './mod.plugins.js';
|
|
3
|
+
import { ReleaseConfig } from './classes.releaseconfig.js';
|
|
4
|
+
export { ReleaseConfig };
|
|
5
|
+
export const run = async (argvArg) => {
|
|
6
|
+
const command = argvArg._?.[1];
|
|
7
|
+
const value = argvArg._?.[2];
|
|
8
|
+
// If no command provided, show interactive menu
|
|
9
|
+
if (!command) {
|
|
10
|
+
await handleInteractiveMenu();
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
switch (command) {
|
|
14
|
+
case 'show':
|
|
15
|
+
await handleShow();
|
|
16
|
+
break;
|
|
17
|
+
case 'add':
|
|
18
|
+
await handleAdd(value);
|
|
19
|
+
break;
|
|
20
|
+
case 'remove':
|
|
21
|
+
await handleRemove(value);
|
|
22
|
+
break;
|
|
23
|
+
case 'clear':
|
|
24
|
+
await handleClear();
|
|
25
|
+
break;
|
|
26
|
+
case 'access':
|
|
27
|
+
case 'accessLevel':
|
|
28
|
+
await handleAccessLevel(value);
|
|
29
|
+
break;
|
|
30
|
+
case 'help':
|
|
31
|
+
showHelp();
|
|
32
|
+
break;
|
|
33
|
+
default:
|
|
34
|
+
plugins.logger.log('error', `Unknown command: ${command}`);
|
|
35
|
+
showHelp();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Interactive menu for config command
|
|
40
|
+
*/
|
|
41
|
+
async function handleInteractiveMenu() {
|
|
42
|
+
console.log('');
|
|
43
|
+
console.log('╭─────────────────────────────────────────────────────────────╮');
|
|
44
|
+
console.log('│ gitzone config - Release Configuration │');
|
|
45
|
+
console.log('╰─────────────────────────────────────────────────────────────╯');
|
|
46
|
+
console.log('');
|
|
47
|
+
const interactInstance = new plugins.smartinteract.SmartInteract();
|
|
48
|
+
const response = await interactInstance.askQuestion({
|
|
49
|
+
type: 'list',
|
|
50
|
+
name: 'action',
|
|
51
|
+
message: 'What would you like to do?',
|
|
52
|
+
default: 'show',
|
|
53
|
+
choices: [
|
|
54
|
+
{ name: 'Show current configuration', value: 'show' },
|
|
55
|
+
{ name: 'Add a registry', value: 'add' },
|
|
56
|
+
{ name: 'Remove a registry', value: 'remove' },
|
|
57
|
+
{ name: 'Clear all registries', value: 'clear' },
|
|
58
|
+
{ name: 'Set access level (public/private)', value: 'access' },
|
|
59
|
+
{ name: 'Show help', value: 'help' },
|
|
60
|
+
],
|
|
61
|
+
});
|
|
62
|
+
const action = response.value;
|
|
63
|
+
switch (action) {
|
|
64
|
+
case 'show':
|
|
65
|
+
await handleShow();
|
|
66
|
+
break;
|
|
67
|
+
case 'add':
|
|
68
|
+
await handleAdd();
|
|
69
|
+
break;
|
|
70
|
+
case 'remove':
|
|
71
|
+
await handleRemove();
|
|
72
|
+
break;
|
|
73
|
+
case 'clear':
|
|
74
|
+
await handleClear();
|
|
75
|
+
break;
|
|
76
|
+
case 'access':
|
|
77
|
+
await handleAccessLevel();
|
|
78
|
+
break;
|
|
79
|
+
case 'help':
|
|
80
|
+
showHelp();
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Show current registry configuration
|
|
86
|
+
*/
|
|
87
|
+
async function handleShow() {
|
|
88
|
+
const config = await ReleaseConfig.fromCwd();
|
|
89
|
+
const registries = config.getRegistries();
|
|
90
|
+
const accessLevel = config.getAccessLevel();
|
|
91
|
+
console.log('');
|
|
92
|
+
console.log('╭─────────────────────────────────────────────────────────────╮');
|
|
93
|
+
console.log('│ Release Configuration │');
|
|
94
|
+
console.log('╰─────────────────────────────────────────────────────────────╯');
|
|
95
|
+
console.log('');
|
|
96
|
+
// Show access level
|
|
97
|
+
plugins.logger.log('info', `Access Level: ${accessLevel}`);
|
|
98
|
+
console.log('');
|
|
99
|
+
if (registries.length === 0) {
|
|
100
|
+
plugins.logger.log('info', 'No release registries configured.');
|
|
101
|
+
console.log('');
|
|
102
|
+
console.log(' Run `gitzone config add <registry-url>` to add one.');
|
|
103
|
+
console.log('');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
plugins.logger.log('info', `Configured registries (${registries.length}):`);
|
|
107
|
+
console.log('');
|
|
108
|
+
registries.forEach((url, index) => {
|
|
109
|
+
console.log(` ${index + 1}. ${url}`);
|
|
110
|
+
});
|
|
111
|
+
console.log('');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Add a registry URL
|
|
116
|
+
*/
|
|
117
|
+
async function handleAdd(url) {
|
|
118
|
+
if (!url) {
|
|
119
|
+
// Interactive mode
|
|
120
|
+
const interactInstance = new plugins.smartinteract.SmartInteract();
|
|
121
|
+
const response = await interactInstance.askQuestion({
|
|
122
|
+
type: 'input',
|
|
123
|
+
name: 'registryUrl',
|
|
124
|
+
message: 'Enter registry URL:',
|
|
125
|
+
default: 'https://registry.npmjs.org',
|
|
126
|
+
validate: (input) => {
|
|
127
|
+
return !!(input && input.trim() !== '');
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
url = response.value;
|
|
131
|
+
}
|
|
132
|
+
const config = await ReleaseConfig.fromCwd();
|
|
133
|
+
const added = config.addRegistry(url);
|
|
134
|
+
if (added) {
|
|
135
|
+
await config.save();
|
|
136
|
+
plugins.logger.log('success', `Added registry: ${url}`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
plugins.logger.log('warn', `Registry already exists: ${url}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Remove a registry URL
|
|
144
|
+
*/
|
|
145
|
+
async function handleRemove(url) {
|
|
146
|
+
const config = await ReleaseConfig.fromCwd();
|
|
147
|
+
const registries = config.getRegistries();
|
|
148
|
+
if (registries.length === 0) {
|
|
149
|
+
plugins.logger.log('warn', 'No registries configured to remove.');
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (!url) {
|
|
153
|
+
// Interactive mode - show list to select from
|
|
154
|
+
const interactInstance = new plugins.smartinteract.SmartInteract();
|
|
155
|
+
const response = await interactInstance.askQuestion({
|
|
156
|
+
type: 'list',
|
|
157
|
+
name: 'registryUrl',
|
|
158
|
+
message: 'Select registry to remove:',
|
|
159
|
+
choices: registries,
|
|
160
|
+
default: registries[0],
|
|
161
|
+
});
|
|
162
|
+
url = response.value;
|
|
163
|
+
}
|
|
164
|
+
const removed = config.removeRegistry(url);
|
|
165
|
+
if (removed) {
|
|
166
|
+
await config.save();
|
|
167
|
+
plugins.logger.log('success', `Removed registry: ${url}`);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
plugins.logger.log('warn', `Registry not found: ${url}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Clear all registries
|
|
175
|
+
*/
|
|
176
|
+
async function handleClear() {
|
|
177
|
+
const config = await ReleaseConfig.fromCwd();
|
|
178
|
+
if (!config.hasRegistries()) {
|
|
179
|
+
plugins.logger.log('info', 'No registries to clear.');
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
// Confirm before clearing
|
|
183
|
+
const confirmed = await plugins.smartinteract.SmartInteract.getCliConfirmation('Clear all configured registries?', false);
|
|
184
|
+
if (confirmed) {
|
|
185
|
+
config.clearRegistries();
|
|
186
|
+
await config.save();
|
|
187
|
+
plugins.logger.log('success', 'All registries cleared.');
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
plugins.logger.log('info', 'Operation cancelled.');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Set or toggle access level
|
|
195
|
+
*/
|
|
196
|
+
async function handleAccessLevel(level) {
|
|
197
|
+
const config = await ReleaseConfig.fromCwd();
|
|
198
|
+
const currentLevel = config.getAccessLevel();
|
|
199
|
+
if (!level) {
|
|
200
|
+
// Interactive mode - toggle or ask
|
|
201
|
+
const interactInstance = new plugins.smartinteract.SmartInteract();
|
|
202
|
+
const response = await interactInstance.askQuestion({
|
|
203
|
+
type: 'list',
|
|
204
|
+
name: 'accessLevel',
|
|
205
|
+
message: 'Select npm access level for publishing:',
|
|
206
|
+
choices: ['public', 'private'],
|
|
207
|
+
default: currentLevel,
|
|
208
|
+
});
|
|
209
|
+
level = response.value;
|
|
210
|
+
}
|
|
211
|
+
// Validate the level
|
|
212
|
+
if (level !== 'public' && level !== 'private') {
|
|
213
|
+
plugins.logger.log('error', `Invalid access level: ${level}. Must be 'public' or 'private'.`);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (level === currentLevel) {
|
|
217
|
+
plugins.logger.log('info', `Access level is already set to: ${level}`);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
config.setAccessLevel(level);
|
|
221
|
+
await config.save();
|
|
222
|
+
plugins.logger.log('success', `Access level set to: ${level}`);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Show help for config command
|
|
226
|
+
*/
|
|
227
|
+
function showHelp() {
|
|
228
|
+
console.log('');
|
|
229
|
+
console.log('Usage: gitzone config <command> [options]');
|
|
230
|
+
console.log('');
|
|
231
|
+
console.log('Commands:');
|
|
232
|
+
console.log(' show Display current release configuration');
|
|
233
|
+
console.log(' add [url] Add a registry URL');
|
|
234
|
+
console.log(' remove [url] Remove a registry URL');
|
|
235
|
+
console.log(' clear Clear all registries');
|
|
236
|
+
console.log(' access [public|private] Set npm access level for publishing');
|
|
237
|
+
console.log('');
|
|
238
|
+
console.log('Examples:');
|
|
239
|
+
console.log(' gitzone config show');
|
|
240
|
+
console.log(' gitzone config add https://registry.npmjs.org');
|
|
241
|
+
console.log(' gitzone config add https://verdaccio.example.com');
|
|
242
|
+
console.log(' gitzone config remove https://registry.npmjs.org');
|
|
243
|
+
console.log(' gitzone config clear');
|
|
244
|
+
console.log(' gitzone config access public');
|
|
245
|
+
console.log(' gitzone config access private');
|
|
246
|
+
console.log('');
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDtBQUV6RCxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFFekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxPQUFZLEVBQUUsRUFBRTtJQUN4QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdCLGdEQUFnRDtJQUNoRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLHFCQUFxQixFQUFFLENBQUM7UUFDOUIsT0FBTztJQUNULENBQUM7SUFFRCxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssTUFBTTtZQUNULE1BQU0sVUFBVSxFQUFFLENBQUM7WUFDbkIsTUFBTTtRQUNSLEtBQUssS0FBSztZQUNSLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLE1BQU07UUFDUixLQUFLLFFBQVE7WUFDWCxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixNQUFNO1FBQ1IsS0FBSyxPQUFPO1lBQ1YsTUFBTSxXQUFXLEVBQUUsQ0FBQztZQUNwQixNQUFNO1FBQ1IsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLGFBQWE7WUFDaEIsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixNQUFNO1FBQ1IsS0FBSyxNQUFNO1lBQ1QsUUFBUSxFQUFFLENBQUM7WUFDWCxNQUFNO1FBQ1I7WUFDRSxPQUFP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
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// mod_config plugins
|
|
2
|
+
export * from '../plugins.js';
|
|
3
|
+
export { logger } from '../gitzone.logging.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29uZmlnL21vZC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQjtBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUMifQ==
|
|
@@ -24,6 +24,36 @@ const migrateNamespaceKeys = (npmextraJson) => {
|
|
|
24
24
|
}
|
|
25
25
|
return migrated;
|
|
26
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Migrates npmAccessLevel from @ship.zone/szci to @git.zone/cli.release.accessLevel
|
|
29
|
+
* This is a one-time migration for projects using the old location
|
|
30
|
+
*/
|
|
31
|
+
const migrateAccessLevel = (npmextraJson) => {
|
|
32
|
+
const szciConfig = npmextraJson['@ship.zone/szci'];
|
|
33
|
+
// Check if szci has npmAccessLevel that needs to be migrated
|
|
34
|
+
if (!szciConfig?.npmAccessLevel) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
// Check if we already have the new location
|
|
38
|
+
const gitzoneConfig = npmextraJson['@git.zone/cli'] || {};
|
|
39
|
+
if (gitzoneConfig?.release?.accessLevel) {
|
|
40
|
+
// Already migrated, just remove from szci
|
|
41
|
+
delete szciConfig.npmAccessLevel;
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
// Ensure @git.zone/cli and release exist
|
|
45
|
+
if (!npmextraJson['@git.zone/cli']) {
|
|
46
|
+
npmextraJson['@git.zone/cli'] = {};
|
|
47
|
+
}
|
|
48
|
+
if (!npmextraJson['@git.zone/cli'].release) {
|
|
49
|
+
npmextraJson['@git.zone/cli'].release = {};
|
|
50
|
+
}
|
|
51
|
+
// Migrate the value
|
|
52
|
+
npmextraJson['@git.zone/cli'].release.accessLevel = szciConfig.npmAccessLevel;
|
|
53
|
+
delete szciConfig.npmAccessLevel;
|
|
54
|
+
console.log(`Migrated npmAccessLevel to @git.zone/cli.release.accessLevel`);
|
|
55
|
+
return true;
|
|
56
|
+
};
|
|
27
57
|
/**
|
|
28
58
|
* runs the npmextra file checking
|
|
29
59
|
*/
|
|
@@ -35,6 +65,8 @@ export const run = async (projectArg) => {
|
|
|
35
65
|
const npmextraJson = JSON.parse(fileString);
|
|
36
66
|
// Migrate old namespace keys to new package-scoped keys
|
|
37
67
|
migrateNamespaceKeys(npmextraJson);
|
|
68
|
+
// Migrate npmAccessLevel from szci to @git.zone/cli.release.accessLevel
|
|
69
|
+
migrateAccessLevel(npmextraJson);
|
|
38
70
|
if (!npmextraJson['@git.zone/cli']) {
|
|
39
71
|
npmextraJson['@git.zone/cli'] = {};
|
|
40
72
|
}
|
|
@@ -80,4 +112,4 @@ export const run = async (projectArg) => {
|
|
|
80
112
|
console.log(error);
|
|
81
113
|
});
|
|
82
114
|
};
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0Lm5wbWV4dHJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXQubnBtZXh0cmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEtBQUssWUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRDs7R0FFRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxZQUFpQixFQUFXLEVBQUU7SUFDMUQsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFO1FBQzlDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUU7UUFDOUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRTtRQUNyRCxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFO1FBQzlDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUU7S0FDOUMsQ0FBQztJQUNGLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM1QyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xELFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsUUFB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/cli",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.3.0",
|
|
5
5
|
"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.",
|
|
6
6
|
"main": "dist_ts/index.ts",
|
|
7
7
|
"typings": "dist_ts/index.d.ts",
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
},
|
|
40
40
|
"homepage": "https://gitlab.com/gitzone/private/gitzone#readme",
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@git.zone/tsbuild": "^4.0.
|
|
42
|
+
"@git.zone/tsbuild": "^4.0.2",
|
|
43
43
|
"@git.zone/tsrun": "^2.0.1",
|
|
44
44
|
"@git.zone/tstest": "^3.1.3",
|
|
45
45
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
46
46
|
"@push.rocks/smartinteract": "^2.0.16",
|
|
47
47
|
"@push.rocks/smartnetwork": "^4.4.0",
|
|
48
48
|
"@push.rocks/smartshell": "^3.3.0",
|
|
49
|
-
"@types/node": "^
|
|
49
|
+
"@types/node": "^25.0.2"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@git.zone/tsdoc": "^1.10.2",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@push.rocks/smartfile": "^13.1.2",
|
|
63
63
|
"@push.rocks/smartfs": "^1.2.0",
|
|
64
64
|
"@push.rocks/smartgulp": "^3.0.4",
|
|
65
|
-
"@push.rocks/smartjson": "^
|
|
65
|
+
"@push.rocks/smartjson": "^6.0.0",
|
|
66
66
|
"@push.rocks/smartlegal": "^1.0.27",
|
|
67
67
|
"@push.rocks/smartlog": "^3.1.10",
|
|
68
68
|
"@push.rocks/smartlog-destination-local": "^9.0.2",
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/cli',
|
|
6
|
-
version: '2.
|
|
6
|
+
version: '2.3.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
|
}
|
|
@@ -40,11 +40,19 @@ export class GitzoneConfig {
|
|
|
40
40
|
public async readConfigFromCwd() {
|
|
41
41
|
const npmextraInstance = new plugins.npmextra.Npmextra(paths.cwd);
|
|
42
42
|
this.data = npmextraInstance.dataFor<IGitzoneConfigData>('@git.zone/cli', {});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
>('@ship.zone/szci', {
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
|
|
44
|
+
// Read szci config for backward compatibility
|
|
45
|
+
const szciConfig = npmextraInstance.dataFor<any>('@ship.zone/szci', {});
|
|
46
|
+
|
|
47
|
+
// Prefer accessLevel from @git.zone/cli.release, fallback to @ship.zone/szci.npmAccessLevel
|
|
48
|
+
const accessLevel =
|
|
49
|
+
(this.data as any)?.release?.accessLevel ||
|
|
50
|
+
szciConfig?.npmAccessLevel ||
|
|
51
|
+
'public';
|
|
52
|
+
|
|
53
|
+
this.data.npmciOptions = {
|
|
54
|
+
npmAccessLevel: accessLevel,
|
|
55
|
+
};
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
constructor() {}
|
package/ts/gitzone.cli.ts
CHANGED
|
@@ -131,6 +131,14 @@ export let run = async () => {
|
|
|
131
131
|
modHelpers.run(argvArg);
|
|
132
132
|
});
|
|
133
133
|
|
|
134
|
+
/**
|
|
135
|
+
* manage release configuration
|
|
136
|
+
*/
|
|
137
|
+
gitzoneSmartcli.addCommand('config').subscribe(async (argvArg) => {
|
|
138
|
+
const modConfig = await import('./mod_config/index.js');
|
|
139
|
+
await modConfig.run(argvArg);
|
|
140
|
+
});
|
|
141
|
+
|
|
134
142
|
/**
|
|
135
143
|
* manage development services (MongoDB, S3/MinIO)
|
|
136
144
|
*/
|
package/ts/mod_commit/index.ts
CHANGED
|
@@ -5,8 +5,24 @@ import * as paths from '../paths.js';
|
|
|
5
5
|
import { logger } from '../gitzone.logging.js';
|
|
6
6
|
import * as helpers from './mod.helpers.js';
|
|
7
7
|
import * as ui from './mod.ui.js';
|
|
8
|
+
import { ReleaseConfig } from '../mod_config/classes.releaseconfig.js';
|
|
8
9
|
|
|
9
10
|
export const run = async (argvArg: any) => {
|
|
11
|
+
// Check if release flag is set and validate registries early
|
|
12
|
+
const wantsRelease = !!(argvArg.r || argvArg.release);
|
|
13
|
+
let releaseConfig: ReleaseConfig | null = null;
|
|
14
|
+
|
|
15
|
+
if (wantsRelease) {
|
|
16
|
+
releaseConfig = await ReleaseConfig.fromCwd();
|
|
17
|
+
if (!releaseConfig.hasRegistries()) {
|
|
18
|
+
logger.log('error', 'No release registries configured.');
|
|
19
|
+
console.log('');
|
|
20
|
+
console.log(' Run `gitzone config add <registry-url>` to add registries.');
|
|
21
|
+
console.log('');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
10
26
|
if (argvArg.format) {
|
|
11
27
|
const formatMod = await import('../mod_format/index.js');
|
|
12
28
|
await formatMod.run();
|
|
@@ -56,6 +72,10 @@ export const run = async (argvArg: any) => {
|
|
|
56
72
|
name: 'pushToOrigin',
|
|
57
73
|
value: !!(argvArg.p || argvArg.push), // Only push if -p flag also provided
|
|
58
74
|
});
|
|
75
|
+
answerBucket.addAnswer({
|
|
76
|
+
name: 'createRelease',
|
|
77
|
+
value: wantsRelease,
|
|
78
|
+
});
|
|
59
79
|
} else {
|
|
60
80
|
// Warn if --yes was provided but we're requiring confirmation due to breaking change
|
|
61
81
|
if (isBreakingChange && (argvArg.y || argvArg.yes)) {
|
|
@@ -89,6 +109,12 @@ export const run = async (argvArg: any) => {
|
|
|
89
109
|
message: `Do you want to push this version now?`,
|
|
90
110
|
default: true,
|
|
91
111
|
},
|
|
112
|
+
{
|
|
113
|
+
type: 'confirm',
|
|
114
|
+
name: `createRelease`,
|
|
115
|
+
message: `Do you want to publish to npm registries?`,
|
|
116
|
+
default: wantsRelease,
|
|
117
|
+
},
|
|
92
118
|
]);
|
|
93
119
|
answerBucket = await commitInteract.runQueue();
|
|
94
120
|
}
|
|
@@ -111,8 +137,24 @@ export const run = async (argvArg: any) => {
|
|
|
111
137
|
sourceFilePaths: [],
|
|
112
138
|
});
|
|
113
139
|
|
|
114
|
-
//
|
|
115
|
-
|
|
140
|
+
// Load release config if user wants to release (interactively selected)
|
|
141
|
+
if (answerBucket.getAnswerFor('createRelease') && !releaseConfig) {
|
|
142
|
+
releaseConfig = await ReleaseConfig.fromCwd();
|
|
143
|
+
if (!releaseConfig.hasRegistries()) {
|
|
144
|
+
logger.log('error', 'No release registries configured.');
|
|
145
|
+
console.log('');
|
|
146
|
+
console.log(' Run `gitzone config add <registry-url>` to add registries.');
|
|
147
|
+
console.log('');
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Determine total steps based on options
|
|
153
|
+
const willPush = answerBucket.getAnswerFor('pushToOrigin') && !(process.env.CI === 'true');
|
|
154
|
+
const willRelease = answerBucket.getAnswerFor('createRelease') && releaseConfig?.hasRegistries();
|
|
155
|
+
let totalSteps = 5; // Base steps: commitinfo, changelog, staging, commit, version
|
|
156
|
+
if (willPush) totalSteps++;
|
|
157
|
+
if (willRelease) totalSteps++;
|
|
116
158
|
let currentStep = 0;
|
|
117
159
|
|
|
118
160
|
// Step 1: Baking commitinfo
|
|
@@ -175,16 +217,37 @@ export const run = async (argvArg: any) => {
|
|
|
175
217
|
|
|
176
218
|
// Step 6: Push to remote (optional)
|
|
177
219
|
const currentBranch = await helpers.detectCurrentBranch();
|
|
178
|
-
if (
|
|
179
|
-
answerBucket.getAnswerFor('pushToOrigin') &&
|
|
180
|
-
!(process.env.CI === 'true')
|
|
181
|
-
) {
|
|
220
|
+
if (willPush) {
|
|
182
221
|
currentStep++;
|
|
183
222
|
ui.printStep(currentStep, totalSteps, `🚀 Pushing to origin/${currentBranch}`, 'in-progress');
|
|
184
223
|
await smartshellInstance.exec(`git push origin ${currentBranch} --follow-tags`);
|
|
185
224
|
ui.printStep(currentStep, totalSteps, `🚀 Pushing to origin/${currentBranch}`, 'done');
|
|
186
225
|
}
|
|
187
226
|
|
|
227
|
+
// Step 7: Publish to npm registries (optional)
|
|
228
|
+
let releasedRegistries: string[] = [];
|
|
229
|
+
if (willRelease && releaseConfig) {
|
|
230
|
+
currentStep++;
|
|
231
|
+
const registries = releaseConfig.getRegistries();
|
|
232
|
+
ui.printStep(currentStep, totalSteps, `📦 Publishing to ${registries.length} registr${registries.length === 1 ? 'y' : 'ies'}`, 'in-progress');
|
|
233
|
+
|
|
234
|
+
const accessLevel = releaseConfig.getAccessLevel();
|
|
235
|
+
for (const registry of registries) {
|
|
236
|
+
try {
|
|
237
|
+
await smartshellInstance.exec(`npm publish --registry=${registry} --access=${accessLevel}`);
|
|
238
|
+
releasedRegistries.push(registry);
|
|
239
|
+
} catch (error) {
|
|
240
|
+
logger.log('error', `Failed to publish to ${registry}: ${error}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (releasedRegistries.length === registries.length) {
|
|
245
|
+
ui.printStep(currentStep, totalSteps, `📦 Publishing to ${registries.length} registr${registries.length === 1 ? 'y' : 'ies'}`, 'done');
|
|
246
|
+
} else {
|
|
247
|
+
ui.printStep(currentStep, totalSteps, `📦 Publishing to ${registries.length} registr${registries.length === 1 ? 'y' : 'ies'}`, 'error');
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
188
251
|
console.log(''); // Add spacing before summary
|
|
189
252
|
|
|
190
253
|
// Get commit SHA for summary
|
|
@@ -200,7 +263,9 @@ export const run = async (argvArg: any) => {
|
|
|
200
263
|
commitMessage: answerBucket.getAnswerFor('commitDescription'),
|
|
201
264
|
newVersion: newVersion,
|
|
202
265
|
commitSha: commitSha,
|
|
203
|
-
pushed:
|
|
266
|
+
pushed: willPush,
|
|
267
|
+
released: releasedRegistries.length > 0,
|
|
268
|
+
releasedRegistries: releasedRegistries.length > 0 ? releasedRegistries : undefined,
|
|
204
269
|
});
|
|
205
270
|
};
|
|
206
271
|
|
package/ts/mod_commit/mod.ui.ts
CHANGED
|
@@ -14,6 +14,8 @@ interface ICommitSummary {
|
|
|
14
14
|
commitSha?: string;
|
|
15
15
|
pushed: boolean;
|
|
16
16
|
repoUrl?: string;
|
|
17
|
+
released?: boolean;
|
|
18
|
+
releasedRegistries?: string[];
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
interface IRecommendation {
|
|
@@ -146,6 +148,13 @@ export function printSummary(summary: ICommitSummary): void {
|
|
|
146
148
|
lines.push(`Remote: ⊘ Not pushed (local only)`);
|
|
147
149
|
}
|
|
148
150
|
|
|
151
|
+
if (summary.released && summary.releasedRegistries && summary.releasedRegistries.length > 0) {
|
|
152
|
+
lines.push(`Published: ✓ Released to ${summary.releasedRegistries.length} registr${summary.releasedRegistries.length === 1 ? 'y' : 'ies'}`);
|
|
153
|
+
summary.releasedRegistries.forEach((registry) => {
|
|
154
|
+
lines.push(` → ${registry}`);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
|
|
149
158
|
if (summary.repoUrl && summary.commitSha) {
|
|
150
159
|
lines.push('');
|
|
151
160
|
lines.push(`View at: ${summary.repoUrl}/commit/${summary.commitSha}`);
|
|
@@ -153,7 +162,9 @@ export function printSummary(summary: ICommitSummary): void {
|
|
|
153
162
|
|
|
154
163
|
printSection('✅ Commit Summary', lines);
|
|
155
164
|
|
|
156
|
-
if (summary.
|
|
165
|
+
if (summary.released) {
|
|
166
|
+
console.log('🎉 All done! Your changes are committed, pushed, and released.\n');
|
|
167
|
+
} else if (summary.pushed) {
|
|
157
168
|
console.log('🎉 All done! Your changes are committed and pushed.\n');
|
|
158
169
|
} else {
|
|
159
170
|
console.log('✓ Commit created successfully.\n');
|