@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.
Files changed (59) hide show
  1. package/assets/templates/tsconfig_update/tsconfig.json +0 -1
  2. package/dist_ts/00_commitinfo_data.js +2 -2
  3. package/dist_ts/mod_commit/index.js +5 -2
  4. package/dist_ts/mod_commit/mod.helpers.js +24 -9
  5. package/dist_ts/mod_format/classes.baseformatter.js +4 -4
  6. package/dist_ts/mod_format/classes.changecache.js +29 -17
  7. package/dist_ts/mod_format/classes.diffreporter.js +10 -4
  8. package/dist_ts/mod_format/classes.formatstats.js +5 -2
  9. package/dist_ts/mod_format/classes.rollbackmanager.js +41 -17
  10. package/dist_ts/mod_format/format.cleanup.js +5 -3
  11. package/dist_ts/mod_format/format.copy.js +12 -4
  12. package/dist_ts/mod_format/format.gitignore.js +14 -5
  13. package/dist_ts/mod_format/format.license.js +4 -2
  14. package/dist_ts/mod_format/format.packagejson.js +6 -2
  15. package/dist_ts/mod_format/format.readme.js +9 -5
  16. package/dist_ts/mod_format/format.tsconfig.js +7 -4
  17. package/dist_ts/mod_format/formatters/cleanup.formatter.js +2 -2
  18. package/dist_ts/mod_format/formatters/prettier.formatter.js +19 -6
  19. package/dist_ts/mod_format/index.js +9 -3
  20. package/dist_ts/mod_meta/meta.classes.meta.js +82 -17
  21. package/dist_ts/mod_services/classes.serviceconfiguration.d.ts +7 -0
  22. package/dist_ts/mod_services/classes.serviceconfiguration.js +86 -10
  23. package/dist_ts/mod_services/classes.servicemanager.d.ts +33 -0
  24. package/dist_ts/mod_services/classes.servicemanager.js +319 -10
  25. package/dist_ts/mod_services/helpers.d.ts +1 -1
  26. package/dist_ts/mod_services/helpers.js +8 -4
  27. package/dist_ts/mod_services/index.js +51 -27
  28. package/dist_ts/mod_standard/index.js +22 -9
  29. package/dist_ts/mod_template/index.js +2 -2
  30. package/dist_ts/plugins.d.ts +2 -0
  31. package/dist_ts/plugins.js +4 -1
  32. package/package.json +7 -6
  33. package/readme.hints.md +55 -2
  34. package/ts/00_commitinfo_data.ts +1 -1
  35. package/ts/mod_commit/index.ts +4 -4
  36. package/ts/mod_commit/mod.helpers.ts +23 -11
  37. package/ts/mod_format/classes.baseformatter.ts +3 -3
  38. package/ts/mod_format/classes.changecache.ts +28 -16
  39. package/ts/mod_format/classes.diffreporter.ts +9 -8
  40. package/ts/mod_format/classes.formatstats.ts +4 -4
  41. package/ts/mod_format/classes.rollbackmanager.ts +40 -18
  42. package/ts/mod_format/format.cleanup.ts +4 -4
  43. package/ts/mod_format/format.copy.ts +11 -3
  44. package/ts/mod_format/format.gitignore.ts +13 -6
  45. package/ts/mod_format/format.license.ts +3 -3
  46. package/ts/mod_format/format.packagejson.ts +5 -3
  47. package/ts/mod_format/format.readme.ts +8 -11
  48. package/ts/mod_format/format.tsconfig.ts +6 -5
  49. package/ts/mod_format/formatters/cleanup.formatter.ts +1 -1
  50. package/ts/mod_format/formatters/prettier.formatter.ts +18 -8
  51. package/ts/mod_format/index.ts +10 -5
  52. package/ts/mod_meta/meta.classes.meta.ts +84 -41
  53. package/ts/mod_services/classes.serviceconfiguration.ts +121 -35
  54. package/ts/mod_services/classes.servicemanager.ts +365 -32
  55. package/ts/mod_services/helpers.ts +8 -4
  56. package/ts/mod_services/index.ts +73 -45
  57. package/ts/mod_standard/index.ts +23 -10
  58. package/ts/mod_template/index.ts +1 -1
  59. package/ts/plugins.ts +4 -0
@@ -28,9 +28,13 @@ export const run = async (argvArg: any) => {
28
28
  break;
29
29
 
30
30
  case 'config':
31
- await serviceManager.showConfig();
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.startMongoDB();
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.stopMongoDB();
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.stopMongoDB();
139
- await serviceManager.stopMinIO();
155
+ await serviceManager.stopAll();
140
156
  await plugins.smartdelay.delayFor(2000);
141
- await serviceManager.startMongoDB();
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 # Start all services');
218
- logger.log('info', ' gitzone services start mongo # Start only MongoDB');
219
- logger.log('info', ' gitzone services stop # Stop all services');
220
- logger.log('info', ' gitzone services status # Check service status');
221
- logger.log('info', ' gitzone services config # Show configuration');
222
- logger.log('info', ' gitzone services compass # Get MongoDB Compass connection');
223
- logger.log('info', ' gitzone services logs mongo 50 # Show last 50 lines of MongoDB logs');
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
  }
@@ -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
  );
@@ -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.smartfile.fs.isDirectory(getTemplatePath(templateNameArg));
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,