@git.zone/cli 1.21.5 → 2.1.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 +2 -2
- package/dist_ts/mod_commit/index.js +5 -2
- package/dist_ts/mod_commit/mod.helpers.js +24 -9
- package/dist_ts/mod_format/classes.baseformatter.js +4 -4
- package/dist_ts/mod_format/classes.changecache.js +29 -17
- package/dist_ts/mod_format/classes.diffreporter.js +10 -4
- package/dist_ts/mod_format/classes.formatstats.js +5 -2
- package/dist_ts/mod_format/classes.rollbackmanager.js +41 -17
- package/dist_ts/mod_format/format.cleanup.js +5 -3
- package/dist_ts/mod_format/format.copy.js +12 -4
- package/dist_ts/mod_format/format.gitignore.js +14 -5
- package/dist_ts/mod_format/format.license.js +4 -2
- package/dist_ts/mod_format/format.packagejson.js +6 -2
- package/dist_ts/mod_format/format.readme.js +9 -5
- package/dist_ts/mod_format/format.tsconfig.js +7 -4
- package/dist_ts/mod_format/formatters/cleanup.formatter.js +2 -2
- package/dist_ts/mod_format/formatters/prettier.formatter.js +19 -6
- package/dist_ts/mod_format/index.js +9 -3
- package/dist_ts/mod_meta/meta.classes.meta.js +82 -17
- package/dist_ts/mod_services/classes.globalregistry.d.ts +77 -0
- package/dist_ts/mod_services/classes.globalregistry.js +133 -0
- package/dist_ts/mod_services/classes.serviceconfiguration.d.ts +7 -0
- package/dist_ts/mod_services/classes.serviceconfiguration.js +86 -10
- package/dist_ts/mod_services/classes.servicemanager.d.ts +38 -0
- package/dist_ts/mod_services/classes.servicemanager.js +353 -10
- package/dist_ts/mod_services/helpers.d.ts +1 -1
- package/dist_ts/mod_services/helpers.js +8 -4
- package/dist_ts/mod_services/index.js +194 -28
- package/dist_ts/mod_standard/index.js +22 -9
- package/dist_ts/mod_template/index.js +2 -2
- package/dist_ts/plugins.d.ts +2 -0
- package/dist_ts/plugins.js +4 -1
- package/package.json +7 -6
- package/readme.hints.md +55 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/mod_commit/index.ts +4 -4
- package/ts/mod_commit/mod.helpers.ts +23 -11
- package/ts/mod_format/classes.baseformatter.ts +3 -3
- package/ts/mod_format/classes.changecache.ts +28 -16
- package/ts/mod_format/classes.diffreporter.ts +9 -8
- package/ts/mod_format/classes.formatstats.ts +4 -4
- package/ts/mod_format/classes.rollbackmanager.ts +40 -18
- package/ts/mod_format/format.cleanup.ts +4 -4
- package/ts/mod_format/format.copy.ts +11 -3
- package/ts/mod_format/format.gitignore.ts +13 -6
- package/ts/mod_format/format.license.ts +3 -3
- package/ts/mod_format/format.packagejson.ts +5 -3
- package/ts/mod_format/format.readme.ts +8 -11
- package/ts/mod_format/format.tsconfig.ts +6 -5
- package/ts/mod_format/formatters/cleanup.formatter.ts +1 -1
- package/ts/mod_format/formatters/prettier.formatter.ts +18 -8
- package/ts/mod_format/index.ts +10 -5
- package/ts/mod_meta/meta.classes.meta.ts +84 -41
- package/ts/mod_services/classes.globalregistry.ts +190 -0
- package/ts/mod_services/classes.serviceconfiguration.ts +121 -35
- package/ts/mod_services/classes.servicemanager.ts +405 -32
- package/ts/mod_services/helpers.ts +8 -4
- package/ts/mod_services/index.ts +257 -48
- package/ts/mod_standard/index.ts +23 -10
- package/ts/mod_template/index.ts +1 -1
- package/ts/plugins.ts +4 -0
|
@@ -34,11 +34,15 @@ export const getRandomAvailablePort = async () => {
|
|
|
34
34
|
/**
|
|
35
35
|
* Get the project name from package.json or directory
|
|
36
36
|
*/
|
|
37
|
-
export const getProjectName = () => {
|
|
37
|
+
export const getProjectName = async () => {
|
|
38
38
|
try {
|
|
39
39
|
const packageJsonPath = plugins.path.join(process.cwd(), 'package.json');
|
|
40
|
-
if (plugins.
|
|
41
|
-
const
|
|
40
|
+
if (await plugins.smartfs.file(packageJsonPath).exists()) {
|
|
41
|
+
const content = (await plugins.smartfs
|
|
42
|
+
.file(packageJsonPath)
|
|
43
|
+
.encoding('utf8')
|
|
44
|
+
.read());
|
|
45
|
+
const packageJson = JSON.parse(content);
|
|
42
46
|
if (packageJson.name) {
|
|
43
47
|
// Sanitize: @fin.cx/skr → fin-cx-skr
|
|
44
48
|
return packageJson.name.replace(/@/g, '').replace(/[\/\.]/g, '-');
|
|
@@ -105,4 +109,4 @@ export const getLocalNetworkIp = async () => {
|
|
|
105
109
|
// Last resort: localhost
|
|
106
110
|
return 'localhost';
|
|
107
111
|
};
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL21vZF9zZXJ2aWNlcy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDM0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQW9CLEVBQUU7SUFDdEUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVsQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLElBQXFCLEVBQUU7SUFDaEUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBRXhCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENB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
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import * as plugins from './mod.plugins.js';
|
|
2
2
|
import * as helpers from './helpers.js';
|
|
3
3
|
import { ServiceManager } from './classes.servicemanager.js';
|
|
4
|
+
import { GlobalRegistry } from './classes.globalregistry.js';
|
|
4
5
|
import { logger } from '../gitzone.logging.js';
|
|
5
6
|
export const run = async (argvArg) => {
|
|
7
|
+
const isGlobal = argvArg.g || argvArg.global;
|
|
8
|
+
const command = argvArg._[1] || 'help';
|
|
9
|
+
// Handle global commands first
|
|
10
|
+
if (isGlobal) {
|
|
11
|
+
await handleGlobalCommand(command);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// Local project commands
|
|
6
15
|
const serviceManager = new ServiceManager();
|
|
7
16
|
await serviceManager.init();
|
|
8
|
-
const command = argvArg._[1] || 'help';
|
|
9
17
|
const service = argvArg._[2] || 'all';
|
|
10
18
|
switch (command) {
|
|
11
19
|
case 'start':
|
|
@@ -21,7 +29,12 @@ export const run = async (argvArg) => {
|
|
|
21
29
|
await serviceManager.showStatus();
|
|
22
30
|
break;
|
|
23
31
|
case 'config':
|
|
24
|
-
|
|
32
|
+
if (service === 'services' || argvArg._[2] === 'services') {
|
|
33
|
+
await handleConfigureServices(serviceManager);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
await serviceManager.showConfig();
|
|
37
|
+
}
|
|
25
38
|
break;
|
|
26
39
|
case 'compass':
|
|
27
40
|
await serviceManager.showCompassConnection();
|
|
@@ -56,15 +69,17 @@ async function handleStart(serviceManager, service) {
|
|
|
56
69
|
case 's3':
|
|
57
70
|
await serviceManager.startMinIO();
|
|
58
71
|
break;
|
|
72
|
+
case 'elasticsearch':
|
|
73
|
+
case 'es':
|
|
74
|
+
await serviceManager.startElasticsearch();
|
|
75
|
+
break;
|
|
59
76
|
case 'all':
|
|
60
77
|
case '':
|
|
61
|
-
await serviceManager.
|
|
62
|
-
console.log();
|
|
63
|
-
await serviceManager.startMinIO();
|
|
78
|
+
await serviceManager.startAll();
|
|
64
79
|
break;
|
|
65
80
|
default:
|
|
66
81
|
logger.log('error', `Unknown service: ${service}`);
|
|
67
|
-
logger.log('note', 'Use: mongo, s3, or all');
|
|
82
|
+
logger.log('note', 'Use: mongo, s3, elasticsearch, or all');
|
|
68
83
|
break;
|
|
69
84
|
}
|
|
70
85
|
}
|
|
@@ -79,15 +94,17 @@ async function handleStop(serviceManager, service) {
|
|
|
79
94
|
case 's3':
|
|
80
95
|
await serviceManager.stopMinIO();
|
|
81
96
|
break;
|
|
97
|
+
case 'elasticsearch':
|
|
98
|
+
case 'es':
|
|
99
|
+
await serviceManager.stopElasticsearch();
|
|
100
|
+
break;
|
|
82
101
|
case 'all':
|
|
83
102
|
case '':
|
|
84
|
-
await serviceManager.
|
|
85
|
-
console.log();
|
|
86
|
-
await serviceManager.stopMinIO();
|
|
103
|
+
await serviceManager.stopAll();
|
|
87
104
|
break;
|
|
88
105
|
default:
|
|
89
106
|
logger.log('error', `Unknown service: ${service}`);
|
|
90
|
-
logger.log('note', 'Use: mongo, s3, or all');
|
|
107
|
+
logger.log('note', 'Use: mongo, s3, elasticsearch, or all');
|
|
91
108
|
break;
|
|
92
109
|
}
|
|
93
110
|
}
|
|
@@ -106,14 +123,17 @@ async function handleRestart(serviceManager, service) {
|
|
|
106
123
|
await plugins.smartdelay.delayFor(2000);
|
|
107
124
|
await serviceManager.startMinIO();
|
|
108
125
|
break;
|
|
126
|
+
case 'elasticsearch':
|
|
127
|
+
case 'es':
|
|
128
|
+
await serviceManager.stopElasticsearch();
|
|
129
|
+
await plugins.smartdelay.delayFor(2000);
|
|
130
|
+
await serviceManager.startElasticsearch();
|
|
131
|
+
break;
|
|
109
132
|
case 'all':
|
|
110
133
|
case '':
|
|
111
|
-
await serviceManager.
|
|
112
|
-
await serviceManager.stopMinIO();
|
|
134
|
+
await serviceManager.stopAll();
|
|
113
135
|
await plugins.smartdelay.delayFor(2000);
|
|
114
|
-
await serviceManager.
|
|
115
|
-
console.log();
|
|
116
|
-
await serviceManager.startMinIO();
|
|
136
|
+
await serviceManager.startAll();
|
|
117
137
|
break;
|
|
118
138
|
default:
|
|
119
139
|
logger.log('error', `Unknown service: ${service}`);
|
|
@@ -152,37 +172,183 @@ async function handleClean(serviceManager) {
|
|
|
152
172
|
logger.log('note', 'Cancelled');
|
|
153
173
|
}
|
|
154
174
|
}
|
|
175
|
+
async function handleConfigureServices(serviceManager) {
|
|
176
|
+
helpers.printHeader('Configure Services');
|
|
177
|
+
await serviceManager.configureServices();
|
|
178
|
+
}
|
|
155
179
|
function showHelp() {
|
|
156
180
|
helpers.printHeader('GitZone Services Manager');
|
|
157
181
|
logger.log('ok', 'Usage: gitzone services [command] [options]');
|
|
158
182
|
console.log();
|
|
159
183
|
logger.log('note', 'Commands:');
|
|
160
|
-
logger.log('info', ' start [service] Start services (mongo|s3|all)');
|
|
161
|
-
logger.log('info', ' stop [service] Stop services (mongo|s3|all)');
|
|
162
|
-
logger.log('info', ' restart [service] Restart services (mongo|s3|all)');
|
|
184
|
+
logger.log('info', ' start [service] Start services (mongo|s3|elasticsearch|all)');
|
|
185
|
+
logger.log('info', ' stop [service] Stop services (mongo|s3|elasticsearch|all)');
|
|
186
|
+
logger.log('info', ' restart [service] Restart services (mongo|s3|elasticsearch|all)');
|
|
163
187
|
logger.log('info', ' status Show service status');
|
|
164
188
|
logger.log('info', ' config Show current configuration');
|
|
189
|
+
logger.log('info', ' config services Configure which services are enabled');
|
|
165
190
|
logger.log('info', ' compass Show MongoDB Compass connection string');
|
|
166
|
-
logger.log('info', ' logs [service] Show logs (mongo|s3|all) [lines]');
|
|
191
|
+
logger.log('info', ' logs [service] Show logs (mongo|s3|elasticsearch|all) [lines]');
|
|
167
192
|
logger.log('info', ' reconfigure Reassign ports and restart services');
|
|
168
193
|
logger.log('info', ' remove Remove all containers');
|
|
169
194
|
logger.log('info', ' clean Remove all containers and data ⚠️');
|
|
170
195
|
logger.log('info', ' help Show this help message');
|
|
171
196
|
console.log();
|
|
197
|
+
logger.log('note', 'Available Services:');
|
|
198
|
+
logger.log('info', ' • MongoDB (mongo) - Document database');
|
|
199
|
+
logger.log('info', ' • MinIO (s3) - S3-compatible object storage');
|
|
200
|
+
logger.log('info', ' • Elasticsearch (elasticsearch) - Search and analytics engine');
|
|
201
|
+
console.log();
|
|
172
202
|
logger.log('note', 'Features:');
|
|
173
203
|
logger.log('info', ' • Auto-creates .nogit/env.json with smart defaults');
|
|
174
|
-
logger.log('info', ' • Random ports (20000-30000) to avoid conflicts');
|
|
204
|
+
logger.log('info', ' • Random ports (20000-30000) for MongoDB/MinIO to avoid conflicts');
|
|
205
|
+
logger.log('info', ' • Elasticsearch uses standard port 9200');
|
|
175
206
|
logger.log('info', ' • Project-specific containers for multi-project support');
|
|
176
207
|
logger.log('info', ' • Preserves custom configuration values');
|
|
177
208
|
logger.log('info', ' • MongoDB Compass connection support');
|
|
178
209
|
console.log();
|
|
179
210
|
logger.log('note', 'Examples:');
|
|
180
|
-
logger.log('info', ' gitzone services start
|
|
181
|
-
logger.log('info', ' gitzone services start mongo
|
|
182
|
-
logger.log('info', ' gitzone services
|
|
183
|
-
logger.log('info', ' gitzone services
|
|
184
|
-
logger.log('info', ' gitzone services
|
|
185
|
-
logger.log('info', ' gitzone services
|
|
186
|
-
logger.log('info', ' gitzone services
|
|
211
|
+
logger.log('info', ' gitzone services start # Start all services');
|
|
212
|
+
logger.log('info', ' gitzone services start mongo # Start only MongoDB');
|
|
213
|
+
logger.log('info', ' gitzone services start elasticsearch # Start only Elasticsearch');
|
|
214
|
+
logger.log('info', ' gitzone services stop # Stop all services');
|
|
215
|
+
logger.log('info', ' gitzone services status # Check service status');
|
|
216
|
+
logger.log('info', ' gitzone services config # Show configuration');
|
|
217
|
+
logger.log('info', ' gitzone services compass # Get MongoDB Compass connection');
|
|
218
|
+
logger.log('info', ' gitzone services logs elasticsearch # Show Elasticsearch logs');
|
|
219
|
+
console.log();
|
|
220
|
+
logger.log('note', 'Global Commands (-g/--global):');
|
|
221
|
+
logger.log('info', ' list -g List all registered projects');
|
|
222
|
+
logger.log('info', ' status -g Show status across all projects');
|
|
223
|
+
logger.log('info', ' stop -g Stop all containers across all projects');
|
|
224
|
+
logger.log('info', ' cleanup -g Remove stale registry entries');
|
|
225
|
+
console.log();
|
|
226
|
+
logger.log('note', 'Global Examples:');
|
|
227
|
+
logger.log('info', ' gitzone services list -g # List all registered projects');
|
|
228
|
+
logger.log('info', ' gitzone services status -g # Show global container status');
|
|
229
|
+
logger.log('info', ' gitzone services stop -g # Stop all (prompts for confirmation)');
|
|
230
|
+
}
|
|
231
|
+
// ==================== Global Command Handlers ====================
|
|
232
|
+
async function handleGlobalCommand(command) {
|
|
233
|
+
const globalRegistry = GlobalRegistry.getInstance();
|
|
234
|
+
switch (command) {
|
|
235
|
+
case 'list':
|
|
236
|
+
await handleGlobalList(globalRegistry);
|
|
237
|
+
break;
|
|
238
|
+
case 'status':
|
|
239
|
+
await handleGlobalStatus(globalRegistry);
|
|
240
|
+
break;
|
|
241
|
+
case 'stop':
|
|
242
|
+
await handleGlobalStop(globalRegistry);
|
|
243
|
+
break;
|
|
244
|
+
case 'cleanup':
|
|
245
|
+
await handleGlobalCleanup(globalRegistry);
|
|
246
|
+
break;
|
|
247
|
+
case 'help':
|
|
248
|
+
default:
|
|
249
|
+
showHelp();
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async function handleGlobalList(globalRegistry) {
|
|
254
|
+
helpers.printHeader('Registered Projects (Global)');
|
|
255
|
+
const projects = await globalRegistry.getAllProjects();
|
|
256
|
+
const projectPaths = Object.keys(projects);
|
|
257
|
+
if (projectPaths.length === 0) {
|
|
258
|
+
logger.log('note', 'No projects registered');
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
for (const path of projectPaths) {
|
|
262
|
+
const project = projects[path];
|
|
263
|
+
const lastActive = new Date(project.lastActive).toLocaleString();
|
|
264
|
+
console.log();
|
|
265
|
+
logger.log('ok', `📁 ${project.projectName}`);
|
|
266
|
+
logger.log('info', ` Path: ${project.projectPath}`);
|
|
267
|
+
logger.log('info', ` Services: ${project.enabledServices.join(', ')}`);
|
|
268
|
+
logger.log('info', ` Last Active: ${lastActive}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
async function handleGlobalStatus(globalRegistry) {
|
|
272
|
+
helpers.printHeader('Global Service Status');
|
|
273
|
+
const statuses = await globalRegistry.getGlobalStatus();
|
|
274
|
+
if (statuses.length === 0) {
|
|
275
|
+
logger.log('note', 'No projects registered');
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
let runningCount = 0;
|
|
279
|
+
let totalContainers = 0;
|
|
280
|
+
for (const project of statuses) {
|
|
281
|
+
console.log();
|
|
282
|
+
logger.log('ok', `📁 ${project.projectName}`);
|
|
283
|
+
logger.log('info', ` Path: ${project.projectPath}`);
|
|
284
|
+
if (project.containers.length === 0) {
|
|
285
|
+
logger.log('note', ' No containers configured');
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
for (const container of project.containers) {
|
|
289
|
+
totalContainers++;
|
|
290
|
+
const statusIcon = container.status === 'running' ? '🟢' : container.status === 'exited' ? '🟡' : '⚪';
|
|
291
|
+
if (container.status === 'running')
|
|
292
|
+
runningCount++;
|
|
293
|
+
logger.log('info', ` ${statusIcon} ${container.name}: ${container.status}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
console.log();
|
|
297
|
+
logger.log('note', `Summary: ${runningCount}/${totalContainers} containers running across ${statuses.length} project(s)`);
|
|
298
|
+
}
|
|
299
|
+
async function handleGlobalStop(globalRegistry) {
|
|
300
|
+
helpers.printHeader('Stop All Containers (Global)');
|
|
301
|
+
const statuses = await globalRegistry.getGlobalStatus();
|
|
302
|
+
// Count running containers
|
|
303
|
+
let runningCount = 0;
|
|
304
|
+
for (const project of statuses) {
|
|
305
|
+
for (const container of project.containers) {
|
|
306
|
+
if (container.status === 'running')
|
|
307
|
+
runningCount++;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if (runningCount === 0) {
|
|
311
|
+
logger.log('note', 'No running containers found');
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
logger.log('note', `Found ${runningCount} running container(s) across ${statuses.length} project(s)`);
|
|
315
|
+
console.log();
|
|
316
|
+
// Show what will be stopped
|
|
317
|
+
for (const project of statuses) {
|
|
318
|
+
const runningContainers = project.containers.filter(c => c.status === 'running');
|
|
319
|
+
if (runningContainers.length > 0) {
|
|
320
|
+
logger.log('info', `${project.projectName}:`);
|
|
321
|
+
for (const container of runningContainers) {
|
|
322
|
+
logger.log('info', ` • ${container.name}`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
console.log();
|
|
327
|
+
const shouldContinue = await plugins.smartinteract.SmartInteract.getCliConfirmation('Stop all containers?', false);
|
|
328
|
+
if (!shouldContinue) {
|
|
329
|
+
logger.log('note', 'Cancelled');
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
logger.log('note', 'Stopping all containers...');
|
|
333
|
+
const result = await globalRegistry.stopAll();
|
|
334
|
+
if (result.stopped.length > 0) {
|
|
335
|
+
logger.log('ok', `Stopped: ${result.stopped.join(', ')}`);
|
|
336
|
+
}
|
|
337
|
+
if (result.failed.length > 0) {
|
|
338
|
+
logger.log('error', `Failed to stop: ${result.failed.join(', ')}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
async function handleGlobalCleanup(globalRegistry) {
|
|
342
|
+
helpers.printHeader('Cleanup Registry (Global)');
|
|
343
|
+
logger.log('note', 'Checking for stale registry entries...');
|
|
344
|
+
const removed = await globalRegistry.cleanup();
|
|
345
|
+
if (removed.length === 0) {
|
|
346
|
+
logger.log('ok', 'No stale entries found');
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
logger.log('ok', `Removed ${removed.length} stale entr${removed.length === 1 ? 'y' : 'ies'}:`);
|
|
350
|
+
for (const path of removed) {
|
|
351
|
+
logger.log('info', ` • ${path}`);
|
|
352
|
+
}
|
|
187
353
|
}
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2Rfc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDeEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUM1QyxNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUU1QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUV0QyxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssT0FBTztZQUNWLE1BQU0sV0FBVyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzQyxNQUFNO1FBRVIsS0FBSyxNQUFNO1lBQ1QsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE1BQU07UUFFUixLQUFLLFNBQVM7WUFDWixNQUFNLGFBQWEsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTTtRQUVSLEtBQUssUUFBUTtZQUNYLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU07UUFFUixLQUFLLFFBQVE7WUFDWCxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFN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
|
|
354
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2Rfc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM3QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUV2QywrQkFBK0I7SUFDL0IsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLE1BQU0sbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTztJQUNULENBQUM7SUFFRCx5QkFBeUI7SUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUM1QyxNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUU1QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUV0QyxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssT0FBTztZQUNWLE1BQU0sV0FBVyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzQyxNQUFNO1FBRVIsS0FBSyxNQUFNO1lBQ1QsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8s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
|
|
@@ -4,22 +4,35 @@
|
|
|
4
4
|
import * as plugins from './mod.plugins.js';
|
|
5
5
|
import * as paths from '../paths.js';
|
|
6
6
|
import { logger } from '../gitzone.logging.js';
|
|
7
|
-
export let run = () => {
|
|
7
|
+
export let run = async () => {
|
|
8
8
|
const done = plugins.smartpromise.defer();
|
|
9
9
|
logger.log('warn', 'no action specified');
|
|
10
|
+
const dirEntries = await plugins.smartfs.directory(paths.templatesDir).list();
|
|
11
|
+
const templates = [];
|
|
12
|
+
for (const entry of dirEntries) {
|
|
13
|
+
try {
|
|
14
|
+
const stats = await plugins.smartfs
|
|
15
|
+
.file(plugins.path.join(paths.templatesDir, entry.path))
|
|
16
|
+
.stat();
|
|
17
|
+
if (stats.isDirectory) {
|
|
18
|
+
templates.push(entry.name);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// Skip entries that can't be accessed
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
let projects = `\n`;
|
|
26
|
+
for (const template of templates) {
|
|
27
|
+
projects += ` - ${template}\n`;
|
|
28
|
+
}
|
|
10
29
|
logger.log('info', `
|
|
11
30
|
You can do one of the following things:
|
|
12
31
|
* create a new project with 'gitzone template [template]'
|
|
13
|
-
the following templates exist: ${
|
|
14
|
-
let projects = `\n`;
|
|
15
|
-
for (const template of plugins.smartfile.fs.listFoldersSync(paths.templatesDir)) {
|
|
16
|
-
projects += ` - ${template}\n`;
|
|
17
|
-
}
|
|
18
|
-
return projects;
|
|
19
|
-
})()}
|
|
32
|
+
the following templates exist: ${projects}
|
|
20
33
|
* format a project with 'gitzone format'
|
|
21
34
|
`);
|
|
22
35
|
done.resolve();
|
|
23
36
|
return done.promise;
|
|
24
37
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2Rfc3RhbmRhcmQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O3FEQUVxRDtBQUNyRCxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDMUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlFLE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUMvQixLQUFLLE1BQU0sS0FBSyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU87aUJBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdkQsSUFBSSxFQUFFLENBQUM7WUFDVixJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxzQ0FBc0M7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDcEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxRQUFRLElBQUksWUFBWSxRQUFRLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FDUixNQUFNLEVBQ047Ozt1Q0FHbUMsUUFBUTs7R0FFNUMsQ0FDQSxDQUFDO0lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3RCLENBQUMsQ0FBQyJ9
|
|
@@ -8,7 +8,7 @@ export const getTemplatePath = (templateNameArg) => {
|
|
|
8
8
|
* receives a template name and returns wether there is a corresponding template
|
|
9
9
|
*/
|
|
10
10
|
export const isTemplate = async (templateNameArg) => {
|
|
11
|
-
return plugins.
|
|
11
|
+
return plugins.smartfs.directory(getTemplatePath(templateNameArg)).exists();
|
|
12
12
|
};
|
|
13
13
|
export const getTemplate = async (templateNameArg) => {
|
|
14
14
|
if (isTemplate(templateNameArg)) {
|
|
@@ -44,4 +44,4 @@ export const run = async (argvArg) => {
|
|
|
44
44
|
await localScafTemplate.askCliForMissingVariables();
|
|
45
45
|
await localScafTemplate.writeToDisk(paths.cwd);
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfdGVtcGxhdGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsZUFBdUIsRUFBRSxFQUFFO0lBQ3pELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsZUFBdUIsRUFBRSxFQUFFO0lBQzFELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDOUUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxlQUF1QixFQUFFLEVBQUU7SUFDM0QsSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLGlCQUFpQixHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQzFELGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FDakMsQ0FBQztRQUNGLE1BQU0saUJBQWlCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM5QyxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxPQUFZLEVBQUUsRUFBRTtJQUN4QyxJQUFJLGNBQWMsR0FBVyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQ25ELElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQ0wsNEVBQTRFO1lBQzlFLElBQUksRUFBRSxjQUFjO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQztTQUM5QyxDQUFDLENBQUM7UUFDSCxjQUFjLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxNQUFNLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDRCQUE0QixjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxjQUFjLGdCQUFnQixDQUFDLENBQUM7UUFDaEUsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVELE1BQU0saUJBQWlCLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNwRCxNQUFNLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDIn0=
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ import * as smartupdate from '@push.rocks/smartupdate';
|
|
|
10
10
|
import * as smartshell from '@push.rocks/smartshell';
|
|
11
11
|
import * as smartnetwork from '@push.rocks/smartnetwork';
|
|
12
12
|
import * as smartfile from '@push.rocks/smartfile';
|
|
13
|
+
import { SmartFs } from '@push.rocks/smartfs';
|
|
13
14
|
import * as smartinteract from '@push.rocks/smartinteract';
|
|
14
15
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
16
|
+
export declare const smartfs: SmartFs;
|
|
15
17
|
export { smartlog, smartlogDestinationLocal, npmextra, path, projectinfo, smartcli, smartpath, smartpromise, smartupdate, smartshell, smartnetwork, smartfile, smartinteract, smartdelay, };
|
package/dist_ts/plugins.js
CHANGED
|
@@ -10,7 +10,10 @@ import * as smartupdate from '@push.rocks/smartupdate';
|
|
|
10
10
|
import * as smartshell from '@push.rocks/smartshell';
|
|
11
11
|
import * as smartnetwork from '@push.rocks/smartnetwork';
|
|
12
12
|
import * as smartfile from '@push.rocks/smartfile';
|
|
13
|
+
import { SmartFs, SmartFsProviderNode } from '@push.rocks/smartfs';
|
|
13
14
|
import * as smartinteract from '@push.rocks/smartinteract';
|
|
14
15
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
16
|
+
// Create smartfs instance for filesystem operations
|
|
17
|
+
export const smartfs = new SmartFs(new SmartFsProviderNode());
|
|
15
18
|
export { smartlog, smartlogDestinationLocal, npmextra, path, projectinfo, smartcli, smartpath, smartpromise, smartupdate, smartshell, smartnetwork, smartfile, smartinteract, smartdelay, };
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssd0JBQXdCLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sS0FBSyxhQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxvREFBb0Q7QUFDcEQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0FBRTlELE9BQU8sRUFDTCxRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLFFBQVEsRUFDUixJQUFJLEVBQ0osV0FBVyxFQUNYLFFBQVEsRUFDUixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVCxhQUFhLEVBQ2IsVUFBVSxHQUNYLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/cli",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "2.1.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,15 +39,14 @@
|
|
|
39
39
|
},
|
|
40
40
|
"homepage": "https://gitlab.com/gitzone/private/gitzone#readme",
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@git.zone/tsbuild": "^
|
|
43
|
-
"@git.zone/tsrun": "^
|
|
44
|
-
"@git.zone/tstest": "^
|
|
42
|
+
"@git.zone/tsbuild": "^3.1.0",
|
|
43
|
+
"@git.zone/tsrun": "^2.0.0",
|
|
44
|
+
"@git.zone/tstest": "^3.1.3",
|
|
45
45
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
46
|
-
"@push.rocks/smartfile": "^11.2.7",
|
|
47
46
|
"@push.rocks/smartinteract": "^2.0.16",
|
|
48
47
|
"@push.rocks/smartnetwork": "^4.4.0",
|
|
49
48
|
"@push.rocks/smartshell": "^3.3.0",
|
|
50
|
-
"@types/node": "^
|
|
49
|
+
"@types/node": "^24.10.1"
|
|
51
50
|
},
|
|
52
51
|
"dependencies": {
|
|
53
52
|
"@git.zone/tsdoc": "^1.9.2",
|
|
@@ -61,6 +60,8 @@
|
|
|
61
60
|
"@push.rocks/smartchok": "^1.1.1",
|
|
62
61
|
"@push.rocks/smartcli": "^4.0.19",
|
|
63
62
|
"@push.rocks/smartdiff": "^1.0.3",
|
|
63
|
+
"@push.rocks/smartfile": "^13.1.0",
|
|
64
|
+
"@push.rocks/smartfs": "^1.1.0",
|
|
64
65
|
"@push.rocks/smartgulp": "^3.0.4",
|
|
65
66
|
"@push.rocks/smartjson": "^5.2.0",
|
|
66
67
|
"@push.rocks/smartlegal": "^1.0.27",
|
package/readme.hints.md
CHANGED
|
@@ -243,7 +243,60 @@ gitzone format --clean-backups
|
|
|
243
243
|
|
|
244
244
|
## API Changes
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
### Smartfile v13 Migration (Latest - Completed)
|
|
247
|
+
|
|
248
|
+
The project has been fully migrated from @push.rocks/smartfile v11 to v13, which introduced a major breaking change where filesystem operations were split into two separate packages:
|
|
249
|
+
|
|
250
|
+
**Packages:**
|
|
251
|
+
- `@push.rocks/smartfile` v13.0.1 - File representation classes (SmartFile, StreamFile, VirtualDirectory)
|
|
252
|
+
- `@push.rocks/smartfs` v1.1.0 - Filesystem operations (read, write, exists, stat, etc.)
|
|
253
|
+
|
|
254
|
+
**Key API Changes:**
|
|
255
|
+
1. **File Reading**:
|
|
256
|
+
- Old: `plugins.smartfile.fs.toStringSync(path)` or `plugins.smartfile.fs.toObjectSync(path)`
|
|
257
|
+
- New: `await plugins.smartfs.file(path).encoding('utf8').read()` + JSON.parse if needed
|
|
258
|
+
- Important: `read()` returns `string | Buffer` - use `as string` type assertion when encoding is set
|
|
259
|
+
|
|
260
|
+
2. **File Writing**:
|
|
261
|
+
- Old: `plugins.smartfile.memory.toFs(content, path)` or `plugins.smartfile.memory.toFsSync(content, path)`
|
|
262
|
+
- New: `await plugins.smartfs.file(path).encoding('utf8').write(content)`
|
|
263
|
+
|
|
264
|
+
3. **File Existence**:
|
|
265
|
+
- Old: `plugins.smartfile.fs.fileExists(path)` or `plugins.smartfile.fs.fileExistsSync(path)`
|
|
266
|
+
- New: `await plugins.smartfs.file(path).exists()`
|
|
267
|
+
|
|
268
|
+
4. **Directory Operations**:
|
|
269
|
+
- Old: `plugins.smartfile.fs.ensureDir(path)`
|
|
270
|
+
- New: `await plugins.smartfs.directory(path).recursive().create()`
|
|
271
|
+
- Old: `plugins.smartfile.fs.remove(path)`
|
|
272
|
+
- New: `await plugins.smartfs.directory(path).recursive().delete()` or `await plugins.smartfs.file(path).delete()`
|
|
273
|
+
|
|
274
|
+
5. **Directory Listing**:
|
|
275
|
+
- Old: `plugins.smartfile.fs.listFolders(path)` or `plugins.smartfile.fs.listFoldersSync(path)`
|
|
276
|
+
- New: `await plugins.smartfs.directory(path).list()` then filter by `stats.isDirectory`
|
|
277
|
+
- Note: `list()` returns `IDirectoryEntry[]` with `path` and `name` properties - use `stat()` to check if directory
|
|
278
|
+
|
|
279
|
+
6. **File Stats**:
|
|
280
|
+
- Old: `stats.isDirectory()` (method)
|
|
281
|
+
- New: `stats.isDirectory` (boolean property)
|
|
282
|
+
- Old: `stats.mtimeMs`
|
|
283
|
+
- New: `stats.mtime.getTime()`
|
|
284
|
+
|
|
285
|
+
7. **SmartFile Factory**:
|
|
286
|
+
- Old: Direct SmartFile instantiation
|
|
287
|
+
- New: `plugins.smartfile.SmartFileFactory.nodeFs()` then factory methods
|
|
288
|
+
|
|
289
|
+
**Migration Pattern:**
|
|
290
|
+
All sync methods must become async. Functions that were previously synchronous (like `getProjectName()`) now return `Promise<T>` and must be awaited.
|
|
291
|
+
|
|
292
|
+
**Affected Modules:**
|
|
293
|
+
- ts/mod_format/* (largest area - 15+ files)
|
|
294
|
+
- ts/mod_commit/* (version bumping)
|
|
295
|
+
- ts/mod_services/* (configuration management)
|
|
296
|
+
- ts/mod_meta/* (meta repository management)
|
|
297
|
+
- ts/mod_standard/* (template listing)
|
|
298
|
+
- ts/mod_template/* (template operations)
|
|
299
|
+
|
|
300
|
+
**Previous API Changes:**
|
|
247
301
|
- smartnpm requires instance creation: `new NpmRegistry()`
|
|
248
|
-
- All file operations now use updated APIs
|
|
249
302
|
- Type imports use `import type` for proper verbatim module syntax
|
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: '1.
|
|
6
|
+
version: '2.1.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
|
}
|
package/ts/mod_commit/index.ts
CHANGED
|
@@ -142,10 +142,10 @@ export const run = async (argvArg: any) => {
|
|
|
142
142
|
changelog = changelog.replaceAll('\n{{nextVersionDetails}}', '');
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
await plugins.
|
|
146
|
-
changelog
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
await plugins.smartfs
|
|
146
|
+
.file(plugins.path.join(paths.cwd, `changelog.md`))
|
|
147
|
+
.encoding('utf8')
|
|
148
|
+
.write(changelog);
|
|
149
149
|
ui.printStep(currentStep, totalSteps, '📄 Generating changelog.md', 'done');
|
|
150
150
|
|
|
151
151
|
// Step 3: Staging files
|