@git.zone/cli 1.21.5 → 2.0.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.serviceconfiguration.d.ts +7 -0
- package/dist_ts/mod_services/classes.serviceconfiguration.js +86 -10
- package/dist_ts/mod_services/classes.servicemanager.d.ts +33 -0
- package/dist_ts/mod_services/classes.servicemanager.js +319 -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 +51 -27
- 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.serviceconfiguration.ts +121 -35
- package/ts/mod_services/classes.servicemanager.ts +365 -32
- package/ts/mod_services/helpers.ts +8 -4
- package/ts/mod_services/index.ts +73 -45
- package/ts/mod_standard/index.ts +23 -10
- package/ts/mod_template/index.ts +1 -1
- package/ts/plugins.ts +4 -0
|
@@ -21,7 +21,12 @@ export const run = async (argvArg) => {
|
|
|
21
21
|
await serviceManager.showStatus();
|
|
22
22
|
break;
|
|
23
23
|
case 'config':
|
|
24
|
-
|
|
24
|
+
if (service === 'services' || argvArg._[2] === 'services') {
|
|
25
|
+
await handleConfigureServices(serviceManager);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
await serviceManager.showConfig();
|
|
29
|
+
}
|
|
25
30
|
break;
|
|
26
31
|
case 'compass':
|
|
27
32
|
await serviceManager.showCompassConnection();
|
|
@@ -56,15 +61,17 @@ async function handleStart(serviceManager, service) {
|
|
|
56
61
|
case 's3':
|
|
57
62
|
await serviceManager.startMinIO();
|
|
58
63
|
break;
|
|
64
|
+
case 'elasticsearch':
|
|
65
|
+
case 'es':
|
|
66
|
+
await serviceManager.startElasticsearch();
|
|
67
|
+
break;
|
|
59
68
|
case 'all':
|
|
60
69
|
case '':
|
|
61
|
-
await serviceManager.
|
|
62
|
-
console.log();
|
|
63
|
-
await serviceManager.startMinIO();
|
|
70
|
+
await serviceManager.startAll();
|
|
64
71
|
break;
|
|
65
72
|
default:
|
|
66
73
|
logger.log('error', `Unknown service: ${service}`);
|
|
67
|
-
logger.log('note', 'Use: mongo, s3, or all');
|
|
74
|
+
logger.log('note', 'Use: mongo, s3, elasticsearch, or all');
|
|
68
75
|
break;
|
|
69
76
|
}
|
|
70
77
|
}
|
|
@@ -79,15 +86,17 @@ async function handleStop(serviceManager, service) {
|
|
|
79
86
|
case 's3':
|
|
80
87
|
await serviceManager.stopMinIO();
|
|
81
88
|
break;
|
|
89
|
+
case 'elasticsearch':
|
|
90
|
+
case 'es':
|
|
91
|
+
await serviceManager.stopElasticsearch();
|
|
92
|
+
break;
|
|
82
93
|
case 'all':
|
|
83
94
|
case '':
|
|
84
|
-
await serviceManager.
|
|
85
|
-
console.log();
|
|
86
|
-
await serviceManager.stopMinIO();
|
|
95
|
+
await serviceManager.stopAll();
|
|
87
96
|
break;
|
|
88
97
|
default:
|
|
89
98
|
logger.log('error', `Unknown service: ${service}`);
|
|
90
|
-
logger.log('note', 'Use: mongo, s3, or all');
|
|
99
|
+
logger.log('note', 'Use: mongo, s3, elasticsearch, or all');
|
|
91
100
|
break;
|
|
92
101
|
}
|
|
93
102
|
}
|
|
@@ -106,14 +115,17 @@ async function handleRestart(serviceManager, service) {
|
|
|
106
115
|
await plugins.smartdelay.delayFor(2000);
|
|
107
116
|
await serviceManager.startMinIO();
|
|
108
117
|
break;
|
|
118
|
+
case 'elasticsearch':
|
|
119
|
+
case 'es':
|
|
120
|
+
await serviceManager.stopElasticsearch();
|
|
121
|
+
await plugins.smartdelay.delayFor(2000);
|
|
122
|
+
await serviceManager.startElasticsearch();
|
|
123
|
+
break;
|
|
109
124
|
case 'all':
|
|
110
125
|
case '':
|
|
111
|
-
await serviceManager.
|
|
112
|
-
await serviceManager.stopMinIO();
|
|
126
|
+
await serviceManager.stopAll();
|
|
113
127
|
await plugins.smartdelay.delayFor(2000);
|
|
114
|
-
await serviceManager.
|
|
115
|
-
console.log();
|
|
116
|
-
await serviceManager.startMinIO();
|
|
128
|
+
await serviceManager.startAll();
|
|
117
129
|
break;
|
|
118
130
|
default:
|
|
119
131
|
logger.log('error', `Unknown service: ${service}`);
|
|
@@ -152,37 +164,49 @@ async function handleClean(serviceManager) {
|
|
|
152
164
|
logger.log('note', 'Cancelled');
|
|
153
165
|
}
|
|
154
166
|
}
|
|
167
|
+
async function handleConfigureServices(serviceManager) {
|
|
168
|
+
helpers.printHeader('Configure Services');
|
|
169
|
+
await serviceManager.configureServices();
|
|
170
|
+
}
|
|
155
171
|
function showHelp() {
|
|
156
172
|
helpers.printHeader('GitZone Services Manager');
|
|
157
173
|
logger.log('ok', 'Usage: gitzone services [command] [options]');
|
|
158
174
|
console.log();
|
|
159
175
|
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)');
|
|
176
|
+
logger.log('info', ' start [service] Start services (mongo|s3|elasticsearch|all)');
|
|
177
|
+
logger.log('info', ' stop [service] Stop services (mongo|s3|elasticsearch|all)');
|
|
178
|
+
logger.log('info', ' restart [service] Restart services (mongo|s3|elasticsearch|all)');
|
|
163
179
|
logger.log('info', ' status Show service status');
|
|
164
180
|
logger.log('info', ' config Show current configuration');
|
|
181
|
+
logger.log('info', ' config services Configure which services are enabled');
|
|
165
182
|
logger.log('info', ' compass Show MongoDB Compass connection string');
|
|
166
|
-
logger.log('info', ' logs [service] Show logs (mongo|s3|all) [lines]');
|
|
183
|
+
logger.log('info', ' logs [service] Show logs (mongo|s3|elasticsearch|all) [lines]');
|
|
167
184
|
logger.log('info', ' reconfigure Reassign ports and restart services');
|
|
168
185
|
logger.log('info', ' remove Remove all containers');
|
|
169
186
|
logger.log('info', ' clean Remove all containers and data ⚠️');
|
|
170
187
|
logger.log('info', ' help Show this help message');
|
|
171
188
|
console.log();
|
|
189
|
+
logger.log('note', 'Available Services:');
|
|
190
|
+
logger.log('info', ' • MongoDB (mongo) - Document database');
|
|
191
|
+
logger.log('info', ' • MinIO (s3) - S3-compatible object storage');
|
|
192
|
+
logger.log('info', ' • Elasticsearch (elasticsearch) - Search and analytics engine');
|
|
193
|
+
console.log();
|
|
172
194
|
logger.log('note', 'Features:');
|
|
173
195
|
logger.log('info', ' • Auto-creates .nogit/env.json with smart defaults');
|
|
174
|
-
logger.log('info', ' • Random ports (20000-30000) to avoid conflicts');
|
|
196
|
+
logger.log('info', ' • Random ports (20000-30000) for MongoDB/MinIO to avoid conflicts');
|
|
197
|
+
logger.log('info', ' • Elasticsearch uses standard port 9200');
|
|
175
198
|
logger.log('info', ' • Project-specific containers for multi-project support');
|
|
176
199
|
logger.log('info', ' • Preserves custom configuration values');
|
|
177
200
|
logger.log('info', ' • MongoDB Compass connection support');
|
|
178
201
|
console.log();
|
|
179
202
|
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
|
|
203
|
+
logger.log('info', ' gitzone services start # Start all services');
|
|
204
|
+
logger.log('info', ' gitzone services start mongo # Start only MongoDB');
|
|
205
|
+
logger.log('info', ' gitzone services start elasticsearch # Start only Elasticsearch');
|
|
206
|
+
logger.log('info', ' gitzone services stop # Stop all services');
|
|
207
|
+
logger.log('info', ' gitzone services status # Check service status');
|
|
208
|
+
logger.log('info', ' gitzone services config # Show configuration');
|
|
209
|
+
logger.log('info', ' gitzone services compass # Get MongoDB Compass connection');
|
|
210
|
+
logger.log('info', ' gitzone services logs elasticsearch # Show Elasticsearch logs');
|
|
187
211
|
}
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2Rfc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDeEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUM1QyxNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUU1QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUV0QyxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssT0FBTztZQUNWLE1BQU0sV0FBVyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzQyxNQUFNO1FBRVIsS0FBSyxNQUFNO1lBQ1QsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE1BQU07UUFFUixLQUFLLFNBQVM7WUFDWixNQUFNLGFBQWEsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTTtRQUVSLEtBQUssUUFBUTtZQUNYLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU07UUFFUixLQUFLLFFBQVE7WUFDWCxJQUFJLE9BQU8sS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMs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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": "
|
|
4
|
+
"version": "2.0.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.0.1",
|
|
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: '
|
|
6
|
+
version: '2.0.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
|
|
@@ -40,8 +40,8 @@ export async function detectProjectType(): Promise<ProjectType> {
|
|
|
40
40
|
const packageJsonPath = plugins.path.join(paths.cwd, 'package.json');
|
|
41
41
|
const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
|
|
42
42
|
|
|
43
|
-
const hasPackageJson = await plugins.
|
|
44
|
-
const hasDenoJson = await plugins.
|
|
43
|
+
const hasPackageJson = await plugins.smartfs.file(packageJsonPath).exists();
|
|
44
|
+
const hasDenoJson = await plugins.smartfs.file(denoJsonPath).exists();
|
|
45
45
|
|
|
46
46
|
if (hasPackageJson && hasDenoJson) {
|
|
47
47
|
logger.log('info', 'Detected dual project (npm + deno)');
|
|
@@ -95,10 +95,14 @@ function calculateNewVersion(currentVersion: string, versionType: VersionType):
|
|
|
95
95
|
* @param projectType The project type to determine which file to read
|
|
96
96
|
* @returns The current version string
|
|
97
97
|
*/
|
|
98
|
-
function readCurrentVersion(projectType: ProjectType): string {
|
|
98
|
+
async function readCurrentVersion(projectType: ProjectType): Promise<string> {
|
|
99
99
|
if (projectType === 'npm' || projectType === 'both') {
|
|
100
100
|
const packageJsonPath = plugins.path.join(paths.cwd, 'package.json');
|
|
101
|
-
const
|
|
101
|
+
const content = (await plugins.smartfs
|
|
102
|
+
.file(packageJsonPath)
|
|
103
|
+
.encoding('utf8')
|
|
104
|
+
.read()) as string;
|
|
105
|
+
const packageJson = JSON.parse(content) as { version?: string };
|
|
102
106
|
|
|
103
107
|
if (!packageJson.version) {
|
|
104
108
|
throw new Error('package.json does not contain a version field');
|
|
@@ -106,7 +110,11 @@ function readCurrentVersion(projectType: ProjectType): string {
|
|
|
106
110
|
return packageJson.version;
|
|
107
111
|
} else {
|
|
108
112
|
const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
|
|
109
|
-
const
|
|
113
|
+
const content = (await plugins.smartfs
|
|
114
|
+
.file(denoJsonPath)
|
|
115
|
+
.encoding('utf8')
|
|
116
|
+
.read()) as string;
|
|
117
|
+
const denoConfig = JSON.parse(content) as { version?: string };
|
|
110
118
|
|
|
111
119
|
if (!denoConfig.version) {
|
|
112
120
|
throw new Error('deno.json does not contain a version field');
|
|
@@ -121,12 +129,16 @@ function readCurrentVersion(projectType: ProjectType): string {
|
|
|
121
129
|
* @param newVersion The new version to write
|
|
122
130
|
*/
|
|
123
131
|
async function updateVersionFile(filePath: string, newVersion: string): Promise<void> {
|
|
124
|
-
const
|
|
132
|
+
const content = (await plugins.smartfs
|
|
133
|
+
.file(filePath)
|
|
134
|
+
.encoding('utf8')
|
|
135
|
+
.read()) as string;
|
|
136
|
+
const config = JSON.parse(content) as { version?: string };
|
|
125
137
|
config.version = newVersion;
|
|
126
|
-
await plugins.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
138
|
+
await plugins.smartfs
|
|
139
|
+
.file(filePath)
|
|
140
|
+
.encoding('utf8')
|
|
141
|
+
.write(JSON.stringify(config, null, 2) + '\n');
|
|
130
142
|
}
|
|
131
143
|
|
|
132
144
|
/**
|
|
@@ -162,7 +174,7 @@ export async function bumpProjectVersion(
|
|
|
162
174
|
|
|
163
175
|
try {
|
|
164
176
|
// 1. Read current version
|
|
165
|
-
const currentVersion = readCurrentVersion(projectType);
|
|
177
|
+
const currentVersion = await readCurrentVersion(projectType);
|
|
166
178
|
|
|
167
179
|
// 2. Calculate new version (reuse existing function!)
|
|
168
180
|
const newVersion = calculateNewVersion(currentVersion, versionType);
|
|
@@ -65,15 +65,15 @@ export abstract class BaseFormatter {
|
|
|
65
65
|
normalizedPath = './' + filepath;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
await plugins.
|
|
68
|
+
await plugins.smartfs.file(normalizedPath).encoding('utf8').write(content);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
protected async createFile(filepath: string, content: string): Promise<void> {
|
|
72
|
-
await plugins.
|
|
72
|
+
await plugins.smartfs.file(filepath).encoding('utf8').write(content);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
protected async deleteFile(filepath: string): Promise<void> {
|
|
76
|
-
await plugins.
|
|
76
|
+
await plugins.smartfs.file(filepath).delete();
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
protected async shouldProcessFile(filepath: string): Promise<boolean> {
|
|
@@ -25,7 +25,7 @@ export class ChangeCache {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
async initialize(): Promise<void> {
|
|
28
|
-
await plugins.
|
|
28
|
+
await plugins.smartfs.directory(this.cacheDir).recursive().create();
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
async getManifest(): Promise<ICacheManifest> {
|
|
@@ -35,13 +35,16 @@ export class ChangeCache {
|
|
|
35
35
|
files: [],
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
-
const exists = await plugins.
|
|
38
|
+
const exists = await plugins.smartfs.file(this.manifestPath).exists();
|
|
39
39
|
if (!exists) {
|
|
40
40
|
return defaultManifest;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
try {
|
|
44
|
-
const content = plugins.
|
|
44
|
+
const content = (await plugins.smartfs
|
|
45
|
+
.file(this.manifestPath)
|
|
46
|
+
.encoding('utf8')
|
|
47
|
+
.read()) as string;
|
|
45
48
|
const manifest = JSON.parse(content);
|
|
46
49
|
|
|
47
50
|
// Validate the manifest structure
|
|
@@ -57,7 +60,7 @@ export class ChangeCache {
|
|
|
57
60
|
);
|
|
58
61
|
// Try to delete the corrupted file
|
|
59
62
|
try {
|
|
60
|
-
await plugins.
|
|
63
|
+
await plugins.smartfs.file(this.manifestPath).delete();
|
|
61
64
|
} catch (removeError) {
|
|
62
65
|
// Ignore removal errors
|
|
63
66
|
}
|
|
@@ -72,11 +75,14 @@ export class ChangeCache {
|
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
// Ensure directory exists
|
|
75
|
-
await plugins.
|
|
78
|
+
await plugins.smartfs.directory(this.cacheDir).recursive().create();
|
|
76
79
|
|
|
77
80
|
// Write directly with proper JSON stringification
|
|
78
81
|
const jsonContent = JSON.stringify(manifest, null, 2);
|
|
79
|
-
await plugins.
|
|
82
|
+
await plugins.smartfs
|
|
83
|
+
.file(this.manifestPath)
|
|
84
|
+
.encoding('utf8')
|
|
85
|
+
.write(jsonContent);
|
|
80
86
|
}
|
|
81
87
|
|
|
82
88
|
async hasFileChanged(filePath: string): Promise<boolean> {
|
|
@@ -85,20 +91,23 @@ export class ChangeCache {
|
|
|
85
91
|
: plugins.path.join(paths.cwd, filePath);
|
|
86
92
|
|
|
87
93
|
// Check if file exists
|
|
88
|
-
const exists = await plugins.
|
|
94
|
+
const exists = await plugins.smartfs.file(absolutePath).exists();
|
|
89
95
|
if (!exists) {
|
|
90
96
|
return true; // File doesn't exist, so it's "changed" (will be created)
|
|
91
97
|
}
|
|
92
98
|
|
|
93
99
|
// Get current file stats
|
|
94
|
-
const stats = await plugins.
|
|
100
|
+
const stats = await plugins.smartfs.file(absolutePath).stat();
|
|
95
101
|
|
|
96
102
|
// Skip directories
|
|
97
|
-
if (stats.isDirectory
|
|
103
|
+
if (stats.isDirectory) {
|
|
98
104
|
return false; // Directories are not processed
|
|
99
105
|
}
|
|
100
106
|
|
|
101
|
-
const content = plugins.
|
|
107
|
+
const content = (await plugins.smartfs
|
|
108
|
+
.file(absolutePath)
|
|
109
|
+
.encoding('utf8')
|
|
110
|
+
.read()) as string;
|
|
102
111
|
const currentChecksum = this.calculateChecksum(content);
|
|
103
112
|
|
|
104
113
|
// Get cached info
|
|
@@ -113,7 +122,7 @@ export class ChangeCache {
|
|
|
113
122
|
return (
|
|
114
123
|
cachedFile.checksum !== currentChecksum ||
|
|
115
124
|
cachedFile.size !== stats.size ||
|
|
116
|
-
cachedFile.modified !== stats.
|
|
125
|
+
cachedFile.modified !== stats.mtime.getTime()
|
|
117
126
|
);
|
|
118
127
|
}
|
|
119
128
|
|
|
@@ -123,14 +132,17 @@ export class ChangeCache {
|
|
|
123
132
|
: plugins.path.join(paths.cwd, filePath);
|
|
124
133
|
|
|
125
134
|
// Get current file stats
|
|
126
|
-
const stats = await plugins.
|
|
135
|
+
const stats = await plugins.smartfs.file(absolutePath).stat();
|
|
127
136
|
|
|
128
137
|
// Skip directories
|
|
129
|
-
if (stats.isDirectory
|
|
138
|
+
if (stats.isDirectory) {
|
|
130
139
|
return; // Don't cache directories
|
|
131
140
|
}
|
|
132
141
|
|
|
133
|
-
const content = plugins.
|
|
142
|
+
const content = (await plugins.smartfs
|
|
143
|
+
.file(absolutePath)
|
|
144
|
+
.encoding('utf8')
|
|
145
|
+
.read()) as string;
|
|
134
146
|
const checksum = this.calculateChecksum(content);
|
|
135
147
|
|
|
136
148
|
// Update manifest
|
|
@@ -140,7 +152,7 @@ export class ChangeCache {
|
|
|
140
152
|
const cacheEntry: IFileCache = {
|
|
141
153
|
path: filePath,
|
|
142
154
|
checksum,
|
|
143
|
-
modified: stats.
|
|
155
|
+
modified: stats.mtime.getTime(),
|
|
144
156
|
size: stats.size,
|
|
145
157
|
};
|
|
146
158
|
|
|
@@ -176,7 +188,7 @@ export class ChangeCache {
|
|
|
176
188
|
? file.path
|
|
177
189
|
: plugins.path.join(paths.cwd, file.path);
|
|
178
190
|
|
|
179
|
-
if (await plugins.
|
|
191
|
+
if (await plugins.smartfs.file(absolutePath).exists()) {
|
|
180
192
|
validFiles.push(file);
|
|
181
193
|
}
|
|
182
194
|
}
|