@uscreen.de/dev-service 0.13.0 → 0.14.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/README.md CHANGED
@@ -129,7 +129,7 @@ Install all services specified in package.json.
129
129
 
130
130
  ##### `--enable-volumes-id`
131
131
 
132
- > ***experimental feature***
132
+ > **_experimental feature_**
133
133
 
134
134
  Creates a unique ID and uses it when naming the services' volumes, thus avoiding conflicts between volumes of different dev-service instances. Every subsequent call of `service install` will (re-)create volume names with the same ID.
135
135
 
@@ -137,7 +137,7 @@ Creates a unique ID and uses it when naming the services' volumes, thus avoiding
137
137
 
138
138
  ##### `--enable-mapped-volumes`
139
139
 
140
- > ***experimental feature***
140
+ > **_experimental feature_**
141
141
 
142
142
  Maps services' volumes into local directories (`./services/.volumes/<volume-name>`) instead of storing them inside of the Docker Desktop virtual machine. Every subsequent call of `service install` will use this mappings.
143
143
 
@@ -181,12 +181,27 @@ Pulls current images for all or given installed service(s).
181
181
 
182
182
  This action updates already existing images - within the boundaries of the respective service's tag. For updating an image beyond these boundaries, adjust the respective service's tag in your service definition and rerun `service install`.
183
183
 
184
+ ### $ service status
185
+
186
+ Show paths and versions of used docker and docker-compose (docker compose preferred over docker-compose if both are available). Example output:
187
+
188
+ ```bash
189
+ Detected tools:
190
+
191
+ docker /Users/<...>/.local/bin/docker
192
+ Docker version 28.5.2, build ecc6942
193
+
194
+ docker compose plugin 2.40.3 [active]
195
+ docker-compose /Users/<...>/.local/bin/docker-compose
196
+ Docker Compose version v2.40.3
197
+ ```
198
+
184
199
  ## Provided services
185
200
 
186
201
  All provided services use their respective default ports:
187
202
 
188
203
  | service | used ports |
189
- |---------------|-------------|
204
+ | ------------- | ----------- |
190
205
  | redis | 6379 |
191
206
  | mongo | 27017 |
192
207
  | nats | 4222, 8222 |
@@ -252,11 +267,11 @@ Say you want to add a specific version of elasticsearch with some customizing en
252
267
  Running `service install` will automatically create a partial docker-compose file from this directives in your `services/.compose` folder:
253
268
 
254
269
  ```yaml
255
- version: "2.4"
270
+ version: '2.4'
256
271
  services:
257
272
  elasticsearch:
258
273
  image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
259
- container_name: "your-dev-repo_elasticsearch"
274
+ container_name: your-dev-repo_elasticsearch
260
275
  ports:
261
276
  - 9200:9200
262
277
  volumes:
@@ -268,7 +283,7 @@ services:
268
283
  - thread_pool.bulk.queue_size=200
269
284
  volumes:
270
285
  elasticsearch-data:
271
- name: "foobar-dev-repo-elasticsearch-data"
286
+ name: foobar-dev-repo-elasticsearch-data
272
287
  ```
273
288
 
274
289
  This action has the following features & caveats:
@@ -327,136 +342,201 @@ And the folder structure would look like this:
327
342
 
328
343
  > Format according to https://keepachangelog.com
329
344
 
345
+ ### v0.14.0
346
+
347
+ #### Added
348
+ - new `service status` command to show paths and versions of used docker and docker-compose (docker compose preferred over docker-compose if both are available)
349
+
330
350
  ### v0.13.0
351
+
331
352
  #### Changed
353
+
332
354
  - adjust node requirements
333
355
  - upgrade multiple packages
334
356
  - replace tap with native node tests
335
357
  - migrate to pnpm
336
358
 
337
359
  ### v0.12.11
360
+
338
361
  #### Fixed
362
+
339
363
  - fix "'version' is obsolete" bug
340
364
 
341
365
  ### v0.12.6
366
+
342
367
  #### Fixed
368
+
343
369
  - work with current docker compose
344
370
 
345
371
  ### v0.12.0
372
+
346
373
  #### Added
374
+
347
375
  - mariadb template
348
376
 
349
377
  ### v0.11.17
378
+
350
379
  #### Fixed
380
+
351
381
  - custom services with container ports lower than 60 now work as expected
352
382
 
353
383
  ### v0.11.0
384
+
354
385
  #### Added
386
+
355
387
  - new `service pull` command
356
388
 
357
389
  ### v0.10.0
358
- ##### Added
390
+
391
+ #### Added
392
+
359
393
  - `service install` options to customize volume naming/creation
360
394
 
361
395
  ### v0.9.4
362
- ##### Fixed
396
+
397
+ #### Fixed
398
+
363
399
  - `service check` no more checks for ports given as `CONTAINER` part of a port mapping (`HOST:CONTAINER`)
364
400
 
365
401
  ### v0.9.3
402
+
366
403
  #### Added
404
+
367
405
  - validation of custom service definitions
368
406
 
369
407
  #### Fixed
408
+
370
409
  - vulnerabilites due to used packages
371
410
 
372
411
  ### v0.9.2
412
+
373
413
  #### Fixed
414
+
374
415
  - bug with mismatching PIDs
375
416
 
376
417
  ### v0.9.1
418
+
377
419
  #### Fixed
420
+
378
421
  - adjust node requirements
379
422
 
380
423
  ### v0.9.0
424
+
381
425
  #### Added
426
+
382
427
  - display warning if other dev-service instances are running
383
428
 
384
429
  #### Changed
430
+
385
431
  - migrate to ESM (due to package requirements)
386
432
 
387
433
  #### Fixed
434
+
388
435
  - don’t observe own ports in port check.
389
436
 
390
437
  #### Removed
438
+
391
439
  - support for node 10 (due to migration to ESM)
392
440
 
393
441
  ### v0.8.1
442
+
394
443
  #### Fixed
444
+
395
445
  - avoiding errors when projectname contains certain special characters
396
446
 
397
447
  ### v0.8.0
448
+
398
449
  #### Added
450
+
399
451
  - tests for `service check`
400
452
 
401
453
  #### Changed
454
+
402
455
  - `service start` checks for used ports before starting any service(s)
403
456
  - updating list of provided services in readme
404
457
 
405
458
  ### v0.7.1
459
+
406
460
  #### Fixed
461
+
407
462
  - fixing further false positives `service check`
408
463
  - package upgrades
409
464
 
410
465
  ### v0.7.0
466
+
411
467
  #### Changed
468
+
412
469
  - refactoring `service check` to avoid false positives
413
470
 
414
471
  ### v0.6.2
472
+
415
473
  #### Fixed
474
+
416
475
  - avoiding side effects between different dev repos
417
476
 
418
477
  ### v0.6.1
478
+
419
479
  #### Fixed
480
+
420
481
  - making tests work again after change in docker client api
421
482
 
422
483
  ### v0.6.0
484
+
423
485
  #### Added
486
+
424
487
  - new service: `elasticsearch`
425
488
  - new service: `rabbitmq`
426
489
 
427
490
  ### v0.5.0
491
+
428
492
  #### Added
493
+
429
494
  - new `service check` to find processes blocking required ports
430
495
 
431
496
  ### v0.4.0
497
+
432
498
  #### Added
499
+
433
500
  - optional service customization
434
501
 
435
502
  ### v0.3.0
503
+
436
504
  #### Added
505
+
437
506
  - new `service restart` command
438
507
 
439
508
  #### Changed
509
+
440
510
  - expanding `service start`, `service stop` and `service logs` by optional `[service]` parameter
441
511
 
442
512
  ### v0.2.2
513
+
443
514
  #### Fixed
515
+
444
516
  - package upgrades
445
517
 
446
518
  ### v0.2.1
519
+
447
520
  #### Fixed
521
+
448
522
  - typo in readme
449
523
 
450
524
  ### v0.2.0
525
+
451
526
  #### Added
527
+
452
528
  - new `service logs` command
453
529
 
454
530
  ### v0.1.1
531
+
455
532
  #### changed
533
+
456
534
  - configure git ignore services/.compose folder
457
535
 
458
536
  ### v0.1.0
537
+
459
538
  #### Added
539
+
460
540
  - initial version with basic commands
461
541
 
462
542
  ---
package/bin/cli-check.js CHANGED
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import process from 'node:process'
3
4
  import { program } from 'commander'
4
5
 
6
+ import { checkOtherServices, checkUsedPorts } from '../src/check.js'
5
7
  import { version } from '../src/constants.js'
6
- import { checkUsedPorts, checkOtherServices } from '../src/check.js'
7
8
  import { error } from '../src/utils.js'
8
9
 
9
10
  program
@@ -15,10 +16,12 @@ program
15
16
 
16
17
  if (service) {
17
18
  await checkUsedPorts(service)
18
- } else {
19
+ }
20
+ else {
19
21
  await checkUsedPorts()
20
22
  }
21
- } catch (e) {
23
+ }
24
+ catch (e) {
22
25
  error(e)
23
26
  }
24
27
  })
@@ -1,23 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import process from 'node:process'
3
4
  import { program } from 'commander'
4
5
 
5
6
  import { version } from '../src/constants.js'
6
- import { error } from '../src/utils.js'
7
7
  import { install } from '../src/install.js'
8
+ import { error } from '../src/utils.js'
8
9
 
9
10
  program
10
11
  .version(version)
11
12
  .option(
12
13
  '--enable-classic-volumes',
13
- "Deriving volume names from current project's name"
14
+ 'Deriving volume names from current project\'s name'
14
15
  )
15
16
  .option('--enable-volumes-id', 'Deriving volume names from a unique ID')
16
17
  .option('--enable-mapped-volumes', 'Mapping volumes into local file system')
17
18
  .action(async (options) => {
18
19
  try {
19
20
  await install(options)
20
- } catch (e) {
21
+ }
22
+ catch (e) {
21
23
  error(e)
22
24
  }
23
25
  })
package/bin/cli-list.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import process from 'node:process'
3
4
  import { program } from 'commander'
4
5
 
5
6
  import { version } from '../src/constants.js'
@@ -9,7 +10,8 @@ import { compose, error } from '../src/utils.js'
9
10
  program.version(version).action(async () => {
10
11
  try {
11
12
  await compose('ps')
12
- } catch (e) {
13
+ }
14
+ catch (e) {
13
15
  error(e)
14
16
  }
15
17
  })
package/bin/cli-logs.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import process from 'node:process'
3
4
  import { program } from 'commander'
4
5
 
5
6
  import { version } from '../src/constants.js'
@@ -13,10 +14,12 @@ program
13
14
  try {
14
15
  if (service) {
15
16
  await compose('logs', '-f', service)
16
- } else {
17
+ }
18
+ else {
17
19
  await compose('logs', '-f')
18
20
  }
19
- } catch (e) {
21
+ }
22
+ catch (e) {
20
23
  error(e)
21
24
  }
22
25
  })
package/bin/cli-pull.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import process from 'node:process'
3
4
  import { program } from 'commander'
4
5
 
5
6
  import { version } from '../src/constants.js'
@@ -12,10 +13,12 @@ program
12
13
  try {
13
14
  if (service) {
14
15
  await compose('pull', service)
15
- } else {
16
+ }
17
+ else {
16
18
  await compose('pull')
17
19
  }
18
- } catch (e) {
20
+ }
21
+ catch (e) {
19
22
  error(e)
20
23
  }
21
24
  })
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import process from 'node:process'
3
4
  import { program } from 'commander'
4
5
 
5
6
  import { version } from '../src/constants.js'
@@ -13,10 +14,12 @@ program
13
14
  try {
14
15
  if (service) {
15
16
  await compose('restart', service)
16
- } else {
17
+ }
18
+ else {
17
19
  await compose('restart')
18
20
  }
19
- } catch (e) {
21
+ }
22
+ catch (e) {
20
23
  error(e)
21
24
  }
22
25
  })
package/bin/cli-start.js CHANGED
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import process from 'node:process'
3
4
  import { program } from 'commander'
4
5
 
6
+ import { checkOtherServices, checkUsedPorts } from '../src/check.js'
5
7
  import { version } from '../src/constants.js'
6
- import { checkUsedPorts, checkOtherServices } from '../src/check.js'
7
8
  import { compose, error } from '../src/utils.js'
8
9
 
9
10
  program
@@ -16,11 +17,13 @@ program
16
17
  if (service) {
17
18
  await checkUsedPorts(service)
18
19
  await compose('up', '-d', service)
19
- } else {
20
+ }
21
+ else {
20
22
  await checkUsedPorts()
21
23
  await compose('up', '-d')
22
24
  }
23
- } catch (e) {
25
+ }
26
+ catch (e) {
24
27
  error(e)
25
28
  }
26
29
  })
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+
3
+ import process from 'node:process'
4
+ import { program } from 'commander'
5
+
6
+ import { version } from '../src/constants.js'
7
+ import { status } from '../src/status.js'
8
+ import { error } from '../src/utils.js'
9
+
10
+ program.version(version).action(async () => {
11
+ try {
12
+ await status()
13
+ }
14
+ catch (e) {
15
+ error(e)
16
+ }
17
+ })
18
+
19
+ program.parse(process.argv)
package/bin/cli-stop.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import process from 'node:process'
3
4
  import { program } from 'commander'
4
5
 
5
6
  import { version } from '../src/constants.js'
@@ -14,13 +15,15 @@ program
14
15
  // stop service(s):
15
16
  if (service) {
16
17
  await compose('stop', service)
17
- } else {
18
+ }
19
+ else {
18
20
  await compose('stop')
19
21
  }
20
22
 
21
23
  // clean up:
22
24
  await compose('rm', '-fv')
23
- } catch (e) {
25
+ }
26
+ catch (e) {
24
27
  error(e)
25
28
  }
26
29
  })
package/bin/cli.js CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import { createRequire } from 'node:module'
4
+ import process from 'node:process'
3
5
  import { Command } from 'commander'
4
- import { createRequire } from 'module'
5
6
 
6
7
  const require = createRequire(import.meta.url)
7
8
  const program = new Command()
@@ -27,6 +28,7 @@ program
27
28
  'pull [service]',
28
29
  'pulls current images for all or given installed services'
29
30
  )
31
+ .command('status', 'show detected docker tools and their versions')
30
32
 
31
33
  /**
32
34
  * read args
package/package.json CHANGED
@@ -1,9 +1,16 @@
1
1
  {
2
2
  "name": "@uscreen.de/dev-service",
3
- "version": "0.13.0",
3
+ "type": "module",
4
+ "version": "0.14.0",
4
5
  "description": "cli to manage services in dev repos",
6
+ "author": "Martin Herting <herting@uscreen.de>",
7
+ "license": "MIT",
8
+ "homepage": "https://github.com/uscreen/dev-service",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/uscreen/dev-service.git"
12
+ },
5
13
  "main": "index.js",
6
- "type": "module",
7
14
  "bin": {
8
15
  "service": "./bin/cli.js",
9
16
  "service-install": "./bin/cli-install.js",
@@ -13,40 +20,38 @@
13
20
  "service-stop": "./bin/cli-stop.js",
14
21
  "service-restart": "./bin/cli-restart.js",
15
22
  "service-check": "./bin/cli-check.js",
16
- "service-pull": "./bin/cli-pull.js"
17
- },
18
- "homepage": "https://github.com/uscreen/dev-service",
19
- "repository": {
20
- "type": "git",
21
- "url": "git+https://github.com/uscreen/dev-service.git"
22
- },
23
- "author": "Martin Herting <herting@uscreen.de>",
24
- "license": "MIT",
25
- "engines": {
26
- "node": ">=20"
23
+ "service-pull": "./bin/cli-pull.js",
24
+ "service-status": "./bin/cli-status.js"
27
25
  },
28
26
  "files": [
29
27
  "bin/",
30
28
  "src/",
31
29
  "templates"
32
30
  ],
33
- "devDependencies": {
34
- "@uscreen.de/eslint-config-prettystandard-node": "^0.2.12",
35
- "c8": "^10.1.3"
31
+ "engines": {
32
+ "node": ">=20"
36
33
  },
37
34
  "dependencies": {
38
35
  "chalk": "^5.6.2",
39
- "commander": "^14.0.2",
40
- "fs-extra": "^11.3.2",
41
- "nanoid": "^5.1.6",
36
+ "commander": "^14.0.3",
37
+ "fs-extra": "^11.3.4",
38
+ "nanoid": "^5.1.7",
42
39
  "parse-json": "^8.3.0",
43
- "read-pkg": "^9.0.1",
44
- "yaml": "^2.8.1"
40
+ "read-pkg": "^10.1.0",
41
+ "yaml": "^2.8.3"
42
+ },
43
+ "devDependencies": {
44
+ "@antfu/eslint-config": "^7.7.3",
45
+ "c8": "^11.0.0",
46
+ "eslint": "^9.39.4",
47
+ "eslint-plugin-format": "^2.0.1"
45
48
  },
46
49
  "scripts": {
47
50
  "preinstall": "npx only-allow pnpm",
48
51
  "test": "node --test --test-concurrency=1 --test-reporter spec",
49
52
  "test:cov": "c8 --reporter=html --reporter=text node --test --test-concurrency=1",
50
- "test:ci": "c8 --reporter=lcov --reporter=text node --test --test-concurrency=1"
53
+ "test:ci": "c8 --reporter=lcov --reporter=text node --test --test-concurrency=1",
54
+ "lint": "eslint .",
55
+ "lint:fix": "eslint . --fix"
51
56
  }
52
57
  }