@git.zone/cli 1.21.4 → 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/assets/templates/tsconfig_update/tsconfig.json +0 -1
- 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
package/ts/mod_services/index.ts
CHANGED
|
@@ -28,9 +28,13 @@ export const run = async (argvArg: any) => {
|
|
|
28
28
|
break;
|
|
29
29
|
|
|
30
30
|
case 'config':
|
|
31
|
-
|
|
31
|
+
if (service === 'services' || argvArg._[2] === 'services') {
|
|
32
|
+
await handleConfigureServices(serviceManager);
|
|
33
|
+
} else {
|
|
34
|
+
await serviceManager.showConfig();
|
|
35
|
+
}
|
|
32
36
|
break;
|
|
33
|
-
|
|
37
|
+
|
|
34
38
|
case 'compass':
|
|
35
39
|
await serviceManager.showCompassConnection();
|
|
36
40
|
break;
|
|
@@ -61,63 +65,69 @@ export const run = async (argvArg: any) => {
|
|
|
61
65
|
|
|
62
66
|
async function handleStart(serviceManager: ServiceManager, service: string) {
|
|
63
67
|
helpers.printHeader('Starting Services');
|
|
64
|
-
|
|
68
|
+
|
|
65
69
|
switch (service) {
|
|
66
70
|
case 'mongo':
|
|
67
71
|
case 'mongodb':
|
|
68
72
|
await serviceManager.startMongoDB();
|
|
69
73
|
break;
|
|
70
|
-
|
|
74
|
+
|
|
71
75
|
case 'minio':
|
|
72
76
|
case 's3':
|
|
73
77
|
await serviceManager.startMinIO();
|
|
74
78
|
break;
|
|
75
|
-
|
|
79
|
+
|
|
80
|
+
case 'elasticsearch':
|
|
81
|
+
case 'es':
|
|
82
|
+
await serviceManager.startElasticsearch();
|
|
83
|
+
break;
|
|
84
|
+
|
|
76
85
|
case 'all':
|
|
77
86
|
case '':
|
|
78
|
-
await serviceManager.
|
|
79
|
-
console.log();
|
|
80
|
-
await serviceManager.startMinIO();
|
|
87
|
+
await serviceManager.startAll();
|
|
81
88
|
break;
|
|
82
|
-
|
|
89
|
+
|
|
83
90
|
default:
|
|
84
91
|
logger.log('error', `Unknown service: ${service}`);
|
|
85
|
-
logger.log('note', 'Use: mongo, s3, or all');
|
|
92
|
+
logger.log('note', 'Use: mongo, s3, elasticsearch, or all');
|
|
86
93
|
break;
|
|
87
94
|
}
|
|
88
95
|
}
|
|
89
96
|
|
|
90
97
|
async function handleStop(serviceManager: ServiceManager, service: string) {
|
|
91
98
|
helpers.printHeader('Stopping Services');
|
|
92
|
-
|
|
99
|
+
|
|
93
100
|
switch (service) {
|
|
94
101
|
case 'mongo':
|
|
95
102
|
case 'mongodb':
|
|
96
103
|
await serviceManager.stopMongoDB();
|
|
97
104
|
break;
|
|
98
|
-
|
|
105
|
+
|
|
99
106
|
case 'minio':
|
|
100
107
|
case 's3':
|
|
101
108
|
await serviceManager.stopMinIO();
|
|
102
109
|
break;
|
|
103
|
-
|
|
110
|
+
|
|
111
|
+
case 'elasticsearch':
|
|
112
|
+
case 'es':
|
|
113
|
+
await serviceManager.stopElasticsearch();
|
|
114
|
+
break;
|
|
115
|
+
|
|
104
116
|
case 'all':
|
|
105
117
|
case '':
|
|
106
|
-
await serviceManager.
|
|
107
|
-
console.log();
|
|
108
|
-
await serviceManager.stopMinIO();
|
|
118
|
+
await serviceManager.stopAll();
|
|
109
119
|
break;
|
|
110
|
-
|
|
120
|
+
|
|
111
121
|
default:
|
|
112
122
|
logger.log('error', `Unknown service: ${service}`);
|
|
113
|
-
logger.log('note', 'Use: mongo, s3, or all');
|
|
123
|
+
logger.log('note', 'Use: mongo, s3, elasticsearch, or all');
|
|
114
124
|
break;
|
|
115
125
|
}
|
|
116
126
|
}
|
|
117
127
|
|
|
118
128
|
async function handleRestart(serviceManager: ServiceManager, service: string) {
|
|
119
129
|
helpers.printHeader('Restarting Services');
|
|
120
|
-
|
|
130
|
+
|
|
121
131
|
switch (service) {
|
|
122
132
|
case 'mongo':
|
|
123
133
|
case 'mongodb':
|
|
@@ -125,24 +135,28 @@ async function handleRestart(serviceManager: ServiceManager, service: string) {
|
|
|
125
135
|
await plugins.smartdelay.delayFor(2000);
|
|
126
136
|
await serviceManager.startMongoDB();
|
|
127
137
|
break;
|
|
128
|
-
|
|
138
|
+
|
|
129
139
|
case 'minio':
|
|
130
140
|
case 's3':
|
|
131
141
|
await serviceManager.stopMinIO();
|
|
132
142
|
await plugins.smartdelay.delayFor(2000);
|
|
133
143
|
await serviceManager.startMinIO();
|
|
134
144
|
break;
|
|
135
|
-
|
|
145
|
+
|
|
146
|
+
case 'elasticsearch':
|
|
147
|
+
case 'es':
|
|
148
|
+
await serviceManager.stopElasticsearch();
|
|
149
|
+
await plugins.smartdelay.delayFor(2000);
|
|
150
|
+
await serviceManager.startElasticsearch();
|
|
151
|
+
break;
|
|
152
|
+
|
|
136
153
|
case 'all':
|
|
137
154
|
case '':
|
|
138
|
-
await serviceManager.
|
|
139
|
-
await serviceManager.stopMinIO();
|
|
155
|
+
await serviceManager.stopAll();
|
|
140
156
|
await plugins.smartdelay.delayFor(2000);
|
|
141
|
-
await serviceManager.
|
|
142
|
-
console.log();
|
|
143
|
-
await serviceManager.startMinIO();
|
|
157
|
+
await serviceManager.startAll();
|
|
144
158
|
break;
|
|
145
|
-
|
|
159
|
+
|
|
146
160
|
default:
|
|
147
161
|
logger.log('error', `Unknown service: ${service}`);
|
|
148
162
|
break;
|
|
@@ -166,7 +180,7 @@ async function handleClean(serviceManager: ServiceManager) {
|
|
|
166
180
|
helpers.printHeader('Clean All');
|
|
167
181
|
logger.log('error', '⚠️ WARNING: This will remove all containers and data!');
|
|
168
182
|
logger.log('error', 'This action cannot be undone!');
|
|
169
|
-
|
|
183
|
+
|
|
170
184
|
const smartinteraction = new plugins.smartinteract.SmartInteract();
|
|
171
185
|
const confirmAnswer = await smartinteraction.askQuestion({
|
|
172
186
|
name: 'confirm',
|
|
@@ -174,7 +188,7 @@ async function handleClean(serviceManager: ServiceManager) {
|
|
|
174
188
|
message: 'Type "yes" to confirm:',
|
|
175
189
|
default: 'no'
|
|
176
190
|
});
|
|
177
|
-
|
|
191
|
+
|
|
178
192
|
if (confirmAnswer.value === 'yes') {
|
|
179
193
|
await serviceManager.removeContainers();
|
|
180
194
|
console.log();
|
|
@@ -185,40 +199,54 @@ async function handleClean(serviceManager: ServiceManager) {
|
|
|
185
199
|
}
|
|
186
200
|
}
|
|
187
201
|
|
|
202
|
+
async function handleConfigureServices(serviceManager: ServiceManager) {
|
|
203
|
+
helpers.printHeader('Configure Services');
|
|
204
|
+
await serviceManager.configureServices();
|
|
205
|
+
}
|
|
206
|
+
|
|
188
207
|
function showHelp() {
|
|
189
208
|
helpers.printHeader('GitZone Services Manager');
|
|
190
|
-
|
|
209
|
+
|
|
191
210
|
logger.log('ok', 'Usage: gitzone services [command] [options]');
|
|
192
211
|
console.log();
|
|
193
|
-
|
|
212
|
+
|
|
194
213
|
logger.log('note', 'Commands:');
|
|
195
|
-
logger.log('info', ' start [service] Start services (mongo|s3|all)');
|
|
196
|
-
logger.log('info', ' stop [service] Stop services (mongo|s3|all)');
|
|
197
|
-
logger.log('info', ' restart [service] Restart services (mongo|s3|all)');
|
|
214
|
+
logger.log('info', ' start [service] Start services (mongo|s3|elasticsearch|all)');
|
|
215
|
+
logger.log('info', ' stop [service] Stop services (mongo|s3|elasticsearch|all)');
|
|
216
|
+
logger.log('info', ' restart [service] Restart services (mongo|s3|elasticsearch|all)');
|
|
198
217
|
logger.log('info', ' status Show service status');
|
|
199
218
|
logger.log('info', ' config Show current configuration');
|
|
219
|
+
logger.log('info', ' config services Configure which services are enabled');
|
|
200
220
|
logger.log('info', ' compass Show MongoDB Compass connection string');
|
|
201
|
-
logger.log('info', ' logs [service] Show logs (mongo|s3|all) [lines]');
|
|
221
|
+
logger.log('info', ' logs [service] Show logs (mongo|s3|elasticsearch|all) [lines]');
|
|
202
222
|
logger.log('info', ' reconfigure Reassign ports and restart services');
|
|
203
223
|
logger.log('info', ' remove Remove all containers');
|
|
204
224
|
logger.log('info', ' clean Remove all containers and data ⚠️');
|
|
205
225
|
logger.log('info', ' help Show this help message');
|
|
206
226
|
console.log();
|
|
207
|
-
|
|
227
|
+
|
|
228
|
+
logger.log('note', 'Available Services:');
|
|
229
|
+
logger.log('info', ' • MongoDB (mongo) - Document database');
|
|
230
|
+
logger.log('info', ' • MinIO (s3) - S3-compatible object storage');
|
|
231
|
+
logger.log('info', ' • Elasticsearch (elasticsearch) - Search and analytics engine');
|
|
232
|
+
console.log();
|
|
233
|
+
|
|
208
234
|
logger.log('note', 'Features:');
|
|
209
235
|
logger.log('info', ' • Auto-creates .nogit/env.json with smart defaults');
|
|
210
|
-
logger.log('info', ' • Random ports (20000-30000) to avoid conflicts');
|
|
236
|
+
logger.log('info', ' • Random ports (20000-30000) for MongoDB/MinIO to avoid conflicts');
|
|
237
|
+
logger.log('info', ' • Elasticsearch uses standard port 9200');
|
|
211
238
|
logger.log('info', ' • Project-specific containers for multi-project support');
|
|
212
239
|
logger.log('info', ' • Preserves custom configuration values');
|
|
213
240
|
logger.log('info', ' • MongoDB Compass connection support');
|
|
214
241
|
console.log();
|
|
215
|
-
|
|
242
|
+
|
|
216
243
|
logger.log('note', 'Examples:');
|
|
217
|
-
logger.log('info', ' gitzone services start
|
|
218
|
-
logger.log('info', ' gitzone services start mongo
|
|
219
|
-
logger.log('info', ' gitzone services
|
|
220
|
-
logger.log('info', ' gitzone services
|
|
221
|
-
logger.log('info', ' gitzone services
|
|
222
|
-
logger.log('info', ' gitzone services
|
|
223
|
-
logger.log('info', ' gitzone services
|
|
244
|
+
logger.log('info', ' gitzone services start # Start all services');
|
|
245
|
+
logger.log('info', ' gitzone services start mongo # Start only MongoDB');
|
|
246
|
+
logger.log('info', ' gitzone services start elasticsearch # Start only Elasticsearch');
|
|
247
|
+
logger.log('info', ' gitzone services stop # Stop all services');
|
|
248
|
+
logger.log('info', ' gitzone services status # Check service status');
|
|
249
|
+
logger.log('info', ' gitzone services config # Show configuration');
|
|
250
|
+
logger.log('info', ' gitzone services compass # Get MongoDB Compass connection');
|
|
251
|
+
logger.log('info', ' gitzone services logs elasticsearch # Show Elasticsearch logs');
|
|
224
252
|
}
|
package/ts/mod_standard/index.ts
CHANGED
|
@@ -6,23 +6,36 @@ import * as paths from '../paths.js';
|
|
|
6
6
|
|
|
7
7
|
import { logger } from '../gitzone.logging.js';
|
|
8
8
|
|
|
9
|
-
export let run = () => {
|
|
9
|
+
export let run = async () => {
|
|
10
10
|
const done = plugins.smartpromise.defer();
|
|
11
11
|
logger.log('warn', 'no action specified');
|
|
12
|
+
|
|
13
|
+
const dirEntries = await plugins.smartfs.directory(paths.templatesDir).list();
|
|
14
|
+
const templates: string[] = [];
|
|
15
|
+
for (const entry of dirEntries) {
|
|
16
|
+
try {
|
|
17
|
+
const stats = await plugins.smartfs
|
|
18
|
+
.file(plugins.path.join(paths.templatesDir, entry.path))
|
|
19
|
+
.stat();
|
|
20
|
+
if (stats.isDirectory) {
|
|
21
|
+
templates.push(entry.name);
|
|
22
|
+
}
|
|
23
|
+
} catch {
|
|
24
|
+
// Skip entries that can't be accessed
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
let projects = `\n`;
|
|
29
|
+
for (const template of templates) {
|
|
30
|
+
projects += ` - ${template}\n`;
|
|
31
|
+
}
|
|
32
|
+
|
|
12
33
|
logger.log(
|
|
13
34
|
'info',
|
|
14
35
|
`
|
|
15
36
|
You can do one of the following things:
|
|
16
37
|
* create a new project with 'gitzone template [template]'
|
|
17
|
-
the following templates exist: ${
|
|
18
|
-
let projects = `\n`;
|
|
19
|
-
for (const template of plugins.smartfile.fs.listFoldersSync(
|
|
20
|
-
paths.templatesDir,
|
|
21
|
-
)) {
|
|
22
|
-
projects += ` - ${template}\n`;
|
|
23
|
-
}
|
|
24
|
-
return projects;
|
|
25
|
-
})()}
|
|
38
|
+
the following templates exist: ${projects}
|
|
26
39
|
* format a project with 'gitzone format'
|
|
27
40
|
`,
|
|
28
41
|
);
|
package/ts/mod_template/index.ts
CHANGED
|
@@ -11,7 +11,7 @@ export const getTemplatePath = (templateNameArg: string) => {
|
|
|
11
11
|
* receives a template name and returns wether there is a corresponding template
|
|
12
12
|
*/
|
|
13
13
|
export const isTemplate = async (templateNameArg: string) => {
|
|
14
|
-
return plugins.
|
|
14
|
+
return plugins.smartfs.directory(getTemplatePath(templateNameArg)).exists();
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
export const getTemplate = async (templateNameArg: string) => {
|
package/ts/plugins.ts
CHANGED
|
@@ -10,9 +10,13 @@ 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';
|
|
15
16
|
|
|
17
|
+
// Create smartfs instance for filesystem operations
|
|
18
|
+
export const smartfs = new SmartFs(new SmartFsProviderNode());
|
|
19
|
+
|
|
16
20
|
export {
|
|
17
21
|
smartlog,
|
|
18
22
|
smartlogDestinationLocal,
|