@git.zone/cli 1.16.9 → 1.17.1
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/gitzone.cli.js +8 -1
- package/dist_ts/mod_format/format.packagejson.js +3 -3
- package/dist_ts/mod_services/classes.dockercontainer.d.ts +68 -0
- package/dist_ts/mod_services/classes.dockercontainer.js +194 -0
- package/dist_ts/mod_services/classes.serviceconfiguration.d.ts +69 -0
- package/dist_ts/mod_services/classes.serviceconfiguration.js +195 -0
- package/dist_ts/mod_services/classes.servicemanager.d.ts +49 -0
- package/dist_ts/mod_services/classes.servicemanager.js +363 -0
- package/dist_ts/mod_services/helpers.d.ts +24 -0
- package/dist_ts/mod_services/helpers.js +108 -0
- package/dist_ts/mod_services/index.d.ts +1 -0
- package/dist_ts/mod_services/index.js +184 -0
- package/dist_ts/mod_services/mod.plugins.d.ts +7 -0
- package/dist_ts/mod_services/mod.plugins.js +8 -0
- package/dist_ts/plugins.d.ts +6 -1
- package/dist_ts/plugins.js +7 -2
- package/package.json +29 -24
- package/readme.md +123 -16
- package/readme.plan.md +119 -188
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/gitzone.cli.ts +8 -0
- package/ts/mod_format/format.packagejson.ts +2 -2
- package/ts/mod_services/classes.dockercontainer.ts +227 -0
- package/ts/mod_services/classes.serviceconfiguration.ts +246 -0
- package/ts/mod_services/classes.servicemanager.ts +423 -0
- package/ts/mod_services/helpers.ts +123 -0
- package/ts/mod_services/index.ts +219 -0
- package/ts/mod_services/mod.plugins.ts +9 -0
- package/ts/plugins.ts +10 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export declare class ServiceManager {
|
|
2
|
+
private config;
|
|
3
|
+
private docker;
|
|
4
|
+
constructor();
|
|
5
|
+
/**
|
|
6
|
+
* Initialize the service manager
|
|
7
|
+
*/
|
|
8
|
+
init(): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Start MongoDB service
|
|
11
|
+
*/
|
|
12
|
+
startMongoDB(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Start MinIO service
|
|
15
|
+
*/
|
|
16
|
+
startMinIO(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Stop MongoDB service
|
|
19
|
+
*/
|
|
20
|
+
stopMongoDB(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Stop MinIO service
|
|
23
|
+
*/
|
|
24
|
+
stopMinIO(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Show service status
|
|
27
|
+
*/
|
|
28
|
+
showStatus(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Show configuration
|
|
31
|
+
*/
|
|
32
|
+
showConfig(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Show MongoDB Compass connection string
|
|
35
|
+
*/
|
|
36
|
+
showCompassConnection(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Show logs for a service
|
|
39
|
+
*/
|
|
40
|
+
showLogs(service: string, lines?: number): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Remove containers
|
|
43
|
+
*/
|
|
44
|
+
removeContainers(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Clean data directories
|
|
47
|
+
*/
|
|
48
|
+
cleanData(): Promise<void>;
|
|
49
|
+
}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import * as plugins from './mod.plugins.js';
|
|
2
|
+
import * as helpers from './helpers.js';
|
|
3
|
+
import { ServiceConfiguration } from './classes.serviceconfiguration.js';
|
|
4
|
+
import { DockerContainer } from './classes.dockercontainer.js';
|
|
5
|
+
import { logger } from '../gitzone.logging.js';
|
|
6
|
+
export class ServiceManager {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.config = new ServiceConfiguration();
|
|
9
|
+
this.docker = new DockerContainer();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Initialize the service manager
|
|
13
|
+
*/
|
|
14
|
+
async init() {
|
|
15
|
+
// Check Docker availability
|
|
16
|
+
if (!(await this.docker.checkDocker())) {
|
|
17
|
+
logger.log('error', 'Error: Docker is not installed. Please install Docker first.');
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
// Load or create configuration
|
|
21
|
+
await this.config.loadOrCreate();
|
|
22
|
+
logger.log('info', `📋 Project: ${this.config.getConfig().PROJECT_NAME}`);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Start MongoDB service
|
|
26
|
+
*/
|
|
27
|
+
async startMongoDB() {
|
|
28
|
+
logger.log('note', '📦 MongoDB:');
|
|
29
|
+
const config = this.config.getConfig();
|
|
30
|
+
const containers = this.config.getContainerNames();
|
|
31
|
+
const directories = this.config.getDataDirectories();
|
|
32
|
+
// Ensure data directory exists
|
|
33
|
+
await plugins.smartfile.fs.ensureDir(directories.mongo);
|
|
34
|
+
const status = await this.docker.getStatus(containers.mongo);
|
|
35
|
+
switch (status) {
|
|
36
|
+
case 'running':
|
|
37
|
+
logger.log('ok', ' Already running ✓');
|
|
38
|
+
break;
|
|
39
|
+
case 'stopped':
|
|
40
|
+
if (await this.docker.start(containers.mongo)) {
|
|
41
|
+
logger.log('ok', ' Started ✓');
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
logger.log('error', ' Failed to start');
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
case 'not_exists':
|
|
48
|
+
logger.log('note', ' Creating container...');
|
|
49
|
+
const success = await this.docker.run({
|
|
50
|
+
name: containers.mongo,
|
|
51
|
+
image: 'mongo:7.0',
|
|
52
|
+
ports: {
|
|
53
|
+
[`0.0.0.0:${config.MONGODB_PORT}`]: '27017'
|
|
54
|
+
},
|
|
55
|
+
volumes: {
|
|
56
|
+
[directories.mongo]: '/data/db'
|
|
57
|
+
},
|
|
58
|
+
environment: {
|
|
59
|
+
MONGO_INITDB_ROOT_USERNAME: config.MONGODB_USER,
|
|
60
|
+
MONGO_INITDB_ROOT_PASSWORD: config.MONGODB_PASS,
|
|
61
|
+
MONGO_INITDB_DATABASE: config.MONGODB_NAME
|
|
62
|
+
},
|
|
63
|
+
restart: 'unless-stopped'
|
|
64
|
+
});
|
|
65
|
+
if (success) {
|
|
66
|
+
logger.log('ok', ' Created and started ✓');
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
logger.log('error', ' Failed to create container');
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
logger.log('info', ` Container: ${containers.mongo}`);
|
|
74
|
+
logger.log('info', ` Port: ${config.MONGODB_PORT}`);
|
|
75
|
+
logger.log('info', ` Connection: ${this.config.getMongoConnectionString()}`);
|
|
76
|
+
// Show Compass connection string
|
|
77
|
+
const networkIp = await helpers.getLocalNetworkIp();
|
|
78
|
+
const compassString = `mongodb://${config.MONGODB_USER}:${config.MONGODB_PASS}@${networkIp}:${config.MONGODB_PORT}/${config.MONGODB_NAME}?authSource=admin`;
|
|
79
|
+
logger.log('ok', ` Compass: ${compassString}`);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Start MinIO service
|
|
83
|
+
*/
|
|
84
|
+
async startMinIO() {
|
|
85
|
+
logger.log('note', '📦 S3/MinIO:');
|
|
86
|
+
const config = this.config.getConfig();
|
|
87
|
+
const containers = this.config.getContainerNames();
|
|
88
|
+
const directories = this.config.getDataDirectories();
|
|
89
|
+
// Ensure data directory exists
|
|
90
|
+
await plugins.smartfile.fs.ensureDir(directories.minio);
|
|
91
|
+
const status = await this.docker.getStatus(containers.minio);
|
|
92
|
+
switch (status) {
|
|
93
|
+
case 'running':
|
|
94
|
+
logger.log('ok', ' Already running ✓');
|
|
95
|
+
break;
|
|
96
|
+
case 'stopped':
|
|
97
|
+
if (await this.docker.start(containers.minio)) {
|
|
98
|
+
logger.log('ok', ' Started ✓');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
logger.log('error', ' Failed to start');
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
case 'not_exists':
|
|
105
|
+
logger.log('note', ' Creating container...');
|
|
106
|
+
const success = await this.docker.run({
|
|
107
|
+
name: containers.minio,
|
|
108
|
+
image: 'minio/minio',
|
|
109
|
+
ports: {
|
|
110
|
+
[config.S3_PORT]: '9000',
|
|
111
|
+
[config.S3_CONSOLE_PORT]: '9001'
|
|
112
|
+
},
|
|
113
|
+
volumes: {
|
|
114
|
+
[directories.minio]: '/data'
|
|
115
|
+
},
|
|
116
|
+
environment: {
|
|
117
|
+
MINIO_ROOT_USER: config.S3_USER,
|
|
118
|
+
MINIO_ROOT_PASSWORD: config.S3_PASS
|
|
119
|
+
},
|
|
120
|
+
restart: 'unless-stopped',
|
|
121
|
+
command: 'server /data --console-address ":9001"'
|
|
122
|
+
});
|
|
123
|
+
if (success) {
|
|
124
|
+
logger.log('ok', ' Created and started ✓');
|
|
125
|
+
// Wait for MinIO to be ready
|
|
126
|
+
await plugins.smartdelay.delayFor(3000);
|
|
127
|
+
// Create default bucket
|
|
128
|
+
await this.docker.exec(containers.minio, `mc alias set local http://localhost:9000 ${config.S3_USER} ${config.S3_PASS}`);
|
|
129
|
+
await this.docker.exec(containers.minio, `mc mb local/${config.S3_BUCKET}`);
|
|
130
|
+
logger.log('ok', ` Bucket '${config.S3_BUCKET}' created ✓`);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
logger.log('error', ' Failed to create container');
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
logger.log('info', ` Container: ${containers.minio}`);
|
|
138
|
+
logger.log('info', ` Port: ${config.S3_PORT}`);
|
|
139
|
+
logger.log('info', ` Bucket: ${config.S3_BUCKET}`);
|
|
140
|
+
logger.log('info', ` API: http://${config.S3_HOST}:${config.S3_PORT}`);
|
|
141
|
+
logger.log('info', ` Console: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT} (login: ${config.S3_USER}/***)`);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Stop MongoDB service
|
|
145
|
+
*/
|
|
146
|
+
async stopMongoDB() {
|
|
147
|
+
logger.log('note', '📦 MongoDB:');
|
|
148
|
+
const containers = this.config.getContainerNames();
|
|
149
|
+
const status = await this.docker.getStatus(containers.mongo);
|
|
150
|
+
if (status === 'running') {
|
|
151
|
+
if (await this.docker.stop(containers.mongo)) {
|
|
152
|
+
logger.log('ok', ' Stopped ✓');
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
logger.log('error', ' Failed to stop');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
logger.log('note', ' Not running');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Stop MinIO service
|
|
164
|
+
*/
|
|
165
|
+
async stopMinIO() {
|
|
166
|
+
logger.log('note', '📦 S3/MinIO:');
|
|
167
|
+
const containers = this.config.getContainerNames();
|
|
168
|
+
const status = await this.docker.getStatus(containers.minio);
|
|
169
|
+
if (status === 'running') {
|
|
170
|
+
if (await this.docker.stop(containers.minio)) {
|
|
171
|
+
logger.log('ok', ' Stopped ✓');
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
logger.log('error', ' Failed to stop');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
logger.log('note', ' Not running');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Show service status
|
|
183
|
+
*/
|
|
184
|
+
async showStatus() {
|
|
185
|
+
helpers.printHeader('Service Status');
|
|
186
|
+
const config = this.config.getConfig();
|
|
187
|
+
const containers = this.config.getContainerNames();
|
|
188
|
+
logger.log('info', `Project: ${config.PROJECT_NAME}`);
|
|
189
|
+
console.log();
|
|
190
|
+
// MongoDB status
|
|
191
|
+
const mongoStatus = await this.docker.getStatus(containers.mongo);
|
|
192
|
+
switch (mongoStatus) {
|
|
193
|
+
case 'running':
|
|
194
|
+
logger.log('ok', '📦 MongoDB: 🟢 Running');
|
|
195
|
+
logger.log('info', ` ├─ Container: ${containers.mongo}`);
|
|
196
|
+
logger.log('info', ` ├─ Connection: ${this.config.getMongoConnectionString()}`);
|
|
197
|
+
// Show Compass connection string
|
|
198
|
+
const networkIp = await helpers.getLocalNetworkIp();
|
|
199
|
+
const compassString = `mongodb://${config.MONGODB_USER}:${config.MONGODB_PASS}@${networkIp}:${config.MONGODB_PORT}/${config.MONGODB_NAME}?authSource=admin`;
|
|
200
|
+
logger.log('ok', ` └─ Compass: ${compassString}`);
|
|
201
|
+
break;
|
|
202
|
+
case 'stopped':
|
|
203
|
+
logger.log('note', '📦 MongoDB: 🟡 Stopped');
|
|
204
|
+
logger.log('info', ` └─ Container: ${containers.mongo}`);
|
|
205
|
+
break;
|
|
206
|
+
case 'not_exists':
|
|
207
|
+
logger.log('info', '📦 MongoDB: ⚪ Not installed');
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
// MinIO status
|
|
211
|
+
const minioStatus = await this.docker.getStatus(containers.minio);
|
|
212
|
+
switch (minioStatus) {
|
|
213
|
+
case 'running':
|
|
214
|
+
logger.log('ok', '📦 S3/MinIO: 🟢 Running');
|
|
215
|
+
logger.log('info', ` ├─ Container: ${containers.minio}`);
|
|
216
|
+
logger.log('info', ` ├─ API: http://${config.S3_HOST}:${config.S3_PORT}`);
|
|
217
|
+
logger.log('info', ` ├─ Console: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT}`);
|
|
218
|
+
logger.log('info', ` └─ Bucket: ${config.S3_BUCKET}`);
|
|
219
|
+
break;
|
|
220
|
+
case 'stopped':
|
|
221
|
+
logger.log('note', '📦 S3/MinIO: 🟡 Stopped');
|
|
222
|
+
logger.log('info', ` └─ Container: ${containers.minio}`);
|
|
223
|
+
break;
|
|
224
|
+
case 'not_exists':
|
|
225
|
+
logger.log('info', '📦 S3/MinIO: ⚪ Not installed');
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Show configuration
|
|
231
|
+
*/
|
|
232
|
+
async showConfig() {
|
|
233
|
+
helpers.printHeader('Current Configuration');
|
|
234
|
+
const config = this.config.getConfig();
|
|
235
|
+
logger.log('info', `Project: ${config.PROJECT_NAME}`);
|
|
236
|
+
console.log();
|
|
237
|
+
logger.log('note', 'MongoDB:');
|
|
238
|
+
logger.log('info', ` Host: ${config.MONGODB_HOST}:${config.MONGODB_PORT}`);
|
|
239
|
+
logger.log('info', ` Database: ${config.MONGODB_NAME}`);
|
|
240
|
+
logger.log('info', ` User: ${config.MONGODB_USER}`);
|
|
241
|
+
logger.log('info', ' Password: ***');
|
|
242
|
+
logger.log('info', ` Container: ${this.config.getContainerNames().mongo}`);
|
|
243
|
+
logger.log('info', ` Data: ${this.config.getDataDirectories().mongo}`);
|
|
244
|
+
logger.log('info', ` Connection: ${this.config.getMongoConnectionString()}`);
|
|
245
|
+
console.log();
|
|
246
|
+
logger.log('note', 'S3/MinIO:');
|
|
247
|
+
logger.log('info', ` Host: ${config.S3_HOST}`);
|
|
248
|
+
logger.log('info', ` API Port: ${config.S3_PORT}`);
|
|
249
|
+
logger.log('info', ` Console Port: ${config.S3_CONSOLE_PORT}`);
|
|
250
|
+
logger.log('info', ` User: ${config.S3_USER}`);
|
|
251
|
+
logger.log('info', ' Password: ***');
|
|
252
|
+
logger.log('info', ` Bucket: ${config.S3_BUCKET}`);
|
|
253
|
+
logger.log('info', ` Container: ${this.config.getContainerNames().minio}`);
|
|
254
|
+
logger.log('info', ` Data: ${this.config.getDataDirectories().minio}`);
|
|
255
|
+
logger.log('info', ` API URL: http://${config.S3_HOST}:${config.S3_PORT}`);
|
|
256
|
+
logger.log('info', ` Console URL: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT}`);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Show MongoDB Compass connection string
|
|
260
|
+
*/
|
|
261
|
+
async showCompassConnection() {
|
|
262
|
+
helpers.printHeader('MongoDB Compass Connection');
|
|
263
|
+
const config = this.config.getConfig();
|
|
264
|
+
const networkIp = await helpers.getLocalNetworkIp();
|
|
265
|
+
const connectionString = `mongodb://${config.MONGODB_USER}:${config.MONGODB_PASS}@${networkIp}:${config.MONGODB_PORT}/${config.MONGODB_NAME}?authSource=admin`;
|
|
266
|
+
logger.log('info', 'MongoDB Compass is a GUI tool for MongoDB. To connect:');
|
|
267
|
+
console.log();
|
|
268
|
+
logger.log('info', '1. Download MongoDB Compass from:');
|
|
269
|
+
logger.log('info', ' https://www.mongodb.com/products/compass');
|
|
270
|
+
console.log();
|
|
271
|
+
logger.log('info', '2. Open Compass and paste this connection string:');
|
|
272
|
+
logger.log('ok', ` ${connectionString}`);
|
|
273
|
+
console.log();
|
|
274
|
+
logger.log('note', 'Connection Details:');
|
|
275
|
+
logger.log('info', ` Network IP: ${networkIp}`);
|
|
276
|
+
logger.log('info', ` Port: ${config.MONGODB_PORT}`);
|
|
277
|
+
logger.log('info', ` Database: ${config.MONGODB_NAME}`);
|
|
278
|
+
logger.log('info', ` Username: ${config.MONGODB_USER}`);
|
|
279
|
+
logger.log('info', ` Auth Source: admin`);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Show logs for a service
|
|
283
|
+
*/
|
|
284
|
+
async showLogs(service, lines = 20) {
|
|
285
|
+
const containers = this.config.getContainerNames();
|
|
286
|
+
switch (service) {
|
|
287
|
+
case 'mongo':
|
|
288
|
+
case 'mongodb':
|
|
289
|
+
if (await this.docker.isRunning(containers.mongo)) {
|
|
290
|
+
helpers.printHeader(`MongoDB Logs (last ${lines} lines)`);
|
|
291
|
+
const logs = await this.docker.logs(containers.mongo, lines);
|
|
292
|
+
console.log(logs);
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
logger.log('note', 'MongoDB container is not running');
|
|
296
|
+
}
|
|
297
|
+
break;
|
|
298
|
+
case 'minio':
|
|
299
|
+
case 's3':
|
|
300
|
+
if (await this.docker.isRunning(containers.minio)) {
|
|
301
|
+
helpers.printHeader(`S3/MinIO Logs (last ${lines} lines)`);
|
|
302
|
+
const logs = await this.docker.logs(containers.minio, lines);
|
|
303
|
+
console.log(logs);
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
logger.log('note', 'S3/MinIO container is not running');
|
|
307
|
+
}
|
|
308
|
+
break;
|
|
309
|
+
case 'all':
|
|
310
|
+
case '':
|
|
311
|
+
await this.showLogs('mongo', lines);
|
|
312
|
+
console.log();
|
|
313
|
+
await this.showLogs('minio', lines);
|
|
314
|
+
break;
|
|
315
|
+
default:
|
|
316
|
+
logger.log('note', 'Usage: gitzone services logs [mongo|s3|all] [lines]');
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Remove containers
|
|
322
|
+
*/
|
|
323
|
+
async removeContainers() {
|
|
324
|
+
const containers = this.config.getContainerNames();
|
|
325
|
+
let removed = false;
|
|
326
|
+
if (await this.docker.exists(containers.mongo)) {
|
|
327
|
+
if (await this.docker.remove(containers.mongo, true)) {
|
|
328
|
+
logger.log('ok', ' MongoDB container removed ✓');
|
|
329
|
+
removed = true;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
if (await this.docker.exists(containers.minio)) {
|
|
333
|
+
if (await this.docker.remove(containers.minio, true)) {
|
|
334
|
+
logger.log('ok', ' S3/MinIO container removed ✓');
|
|
335
|
+
removed = true;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
if (!removed) {
|
|
339
|
+
logger.log('note', ' No containers to remove');
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Clean data directories
|
|
344
|
+
*/
|
|
345
|
+
async cleanData() {
|
|
346
|
+
const directories = this.config.getDataDirectories();
|
|
347
|
+
let cleaned = false;
|
|
348
|
+
if (await plugins.smartfile.fs.fileExists(directories.mongo)) {
|
|
349
|
+
await plugins.smartfile.fs.remove(directories.mongo);
|
|
350
|
+
logger.log('ok', ' MongoDB data removed ✓');
|
|
351
|
+
cleaned = true;
|
|
352
|
+
}
|
|
353
|
+
if (await plugins.smartfile.fs.fileExists(directories.minio)) {
|
|
354
|
+
await plugins.smartfile.fs.remove(directories.minio);
|
|
355
|
+
logger.log('ok', ' S3/MinIO data removed ✓');
|
|
356
|
+
cleaned = true;
|
|
357
|
+
}
|
|
358
|
+
if (!cleaned) {
|
|
359
|
+
logger.log('note', ' No data to clean');
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zZXJ2aWNlbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL21vZF9zZXJ2aWNlcy9jbGFzc2VzLnNlcnZpY2VtYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxNQUFNLE9BQU8sY0FBYztJQUl6QjtRQUNFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDhEQUE4RCxDQUFDLENBQUM7WUFDcEYsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsK0JBQStCO1FBQy9CLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNqQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxlQUFlLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsWUFBWTtR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
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a port is available
|
|
3
|
+
*/
|
|
4
|
+
export declare const isPortAvailable: (port: number) => Promise<boolean>;
|
|
5
|
+
/**
|
|
6
|
+
* Get a random available port between 20000 and 30000
|
|
7
|
+
*/
|
|
8
|
+
export declare const getRandomAvailablePort: () => Promise<number>;
|
|
9
|
+
/**
|
|
10
|
+
* Get the project name from package.json or directory
|
|
11
|
+
*/
|
|
12
|
+
export declare const getProjectName: () => string;
|
|
13
|
+
/**
|
|
14
|
+
* Print a header with decorative lines
|
|
15
|
+
*/
|
|
16
|
+
export declare const printHeader: (title: string) => void;
|
|
17
|
+
/**
|
|
18
|
+
* Format bytes to human readable string
|
|
19
|
+
*/
|
|
20
|
+
export declare const formatBytes: (bytes: number) => string;
|
|
21
|
+
/**
|
|
22
|
+
* Get the local network IP address
|
|
23
|
+
*/
|
|
24
|
+
export declare const getLocalNetworkIp: () => Promise<string>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import * as plugins from './mod.plugins.js';
|
|
2
|
+
import * as net from 'net';
|
|
3
|
+
import { logger } from '../gitzone.logging.js';
|
|
4
|
+
/**
|
|
5
|
+
* Check if a port is available
|
|
6
|
+
*/
|
|
7
|
+
export const isPortAvailable = async (port) => {
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
const server = net.createServer();
|
|
10
|
+
server.once('error', () => {
|
|
11
|
+
resolve(false);
|
|
12
|
+
});
|
|
13
|
+
server.once('listening', () => {
|
|
14
|
+
server.close();
|
|
15
|
+
resolve(true);
|
|
16
|
+
});
|
|
17
|
+
server.listen(port, '0.0.0.0');
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Get a random available port between 20000 and 30000
|
|
22
|
+
*/
|
|
23
|
+
export const getRandomAvailablePort = async () => {
|
|
24
|
+
const maxAttempts = 100;
|
|
25
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
26
|
+
const port = Math.floor(Math.random() * 10001) + 20000;
|
|
27
|
+
if (await isPortAvailable(port)) {
|
|
28
|
+
return port;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Fallback: let the system assign a port
|
|
32
|
+
return 0;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Get the project name from package.json or directory
|
|
36
|
+
*/
|
|
37
|
+
export const getProjectName = () => {
|
|
38
|
+
try {
|
|
39
|
+
const packageJsonPath = plugins.path.join(process.cwd(), 'package.json');
|
|
40
|
+
if (plugins.smartfile.fs.fileExistsSync(packageJsonPath)) {
|
|
41
|
+
const packageJson = plugins.smartfile.fs.toObjectSync(packageJsonPath);
|
|
42
|
+
if (packageJson.name) {
|
|
43
|
+
// Sanitize: @fin.cx/skr → fin-cx-skr
|
|
44
|
+
return packageJson.name.replace(/@/g, '').replace(/[\/\.]/g, '-');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
// Ignore errors and fall back to directory name
|
|
50
|
+
}
|
|
51
|
+
return plugins.path.basename(process.cwd());
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Print a header with decorative lines
|
|
55
|
+
*/
|
|
56
|
+
export const printHeader = (title) => {
|
|
57
|
+
console.log();
|
|
58
|
+
logger.log('info', '═══════════════════════════════════════════════════════════════');
|
|
59
|
+
logger.log('info', ` ${title}`);
|
|
60
|
+
logger.log('info', '═══════════════════════════════════════════════════════════════');
|
|
61
|
+
console.log();
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Format bytes to human readable string
|
|
65
|
+
*/
|
|
66
|
+
export const formatBytes = (bytes) => {
|
|
67
|
+
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
68
|
+
let size = bytes;
|
|
69
|
+
let unitIndex = 0;
|
|
70
|
+
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
71
|
+
size /= 1024;
|
|
72
|
+
unitIndex++;
|
|
73
|
+
}
|
|
74
|
+
return `${size.toFixed(2)} ${units[unitIndex]}`;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Get the local network IP address
|
|
78
|
+
*/
|
|
79
|
+
export const getLocalNetworkIp = async () => {
|
|
80
|
+
const smartnetworkInstance = new plugins.smartnetwork.SmartNetwork();
|
|
81
|
+
const gateways = await smartnetworkInstance.getGateways();
|
|
82
|
+
// Find the best local IP from network interfaces
|
|
83
|
+
for (const interfaceName of Object.keys(gateways)) {
|
|
84
|
+
const interfaces = gateways[interfaceName];
|
|
85
|
+
for (const iface of interfaces) {
|
|
86
|
+
// Skip loopback and internal interfaces
|
|
87
|
+
if (!iface.internal && iface.family === 'IPv4') {
|
|
88
|
+
const address = iface.address;
|
|
89
|
+
// Prefer LAN IPs
|
|
90
|
+
if (address.startsWith('192.168.') || address.startsWith('10.') || address.startsWith('172.')) {
|
|
91
|
+
return address;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Fallback: try to get any non-internal IPv4
|
|
97
|
+
for (const interfaceName of Object.keys(gateways)) {
|
|
98
|
+
const interfaces = gateways[interfaceName];
|
|
99
|
+
for (const iface of interfaces) {
|
|
100
|
+
if (!iface.internal && iface.family === 'IPv4') {
|
|
101
|
+
return iface.address;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Last resort: localhost
|
|
106
|
+
return 'localhost';
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL21vZF9zZXJ2aWNlcy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDM0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQW9CLEVBQUU7SUFDdEUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVsQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLElBQXFCLEVBQUU7SUFDaEUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBRXhCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const run: (argvArg: any) => Promise<void>;
|