@enspirit/emb 0.17.0 → 0.17.5

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
@@ -14,7 +14,7 @@ $ npm install -g @enspirit/emb
14
14
  $ emb COMMAND
15
15
  running command...
16
16
  $ emb (--version)
17
- @enspirit/emb/0.17.0 darwin-arm64 node-v22.21.1
17
+ @enspirit/emb/0.17.5 darwin-arm64 node-v22.21.1
18
18
  $ emb --help [COMMAND]
19
19
  USAGE
20
20
  $ emb COMMAND
@@ -112,6 +112,8 @@ EXAMPLES
112
112
  $ emb clean
113
113
  ```
114
114
 
115
+ _See code: [src/commands/clean.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/clean.ts)_
116
+
115
117
  ## `emb components`
116
118
 
117
119
  List components.
@@ -135,6 +137,8 @@ EXAMPLES
135
137
  $ emb components
136
138
  ```
137
139
 
140
+ _See code: [src/commands/components/index.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/components/index.ts)_
141
+
138
142
  ## `emb components logs [COMPONENT]`
139
143
 
140
144
  Get components logs.
@@ -167,6 +171,8 @@ EXAMPLES
167
171
  $ emb components logs --no-follow backend
168
172
  ```
169
173
 
174
+ _See code: [src/commands/components/logs.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/components/logs.ts)_
175
+
170
176
  ## `emb components shell COMPONENT`
171
177
 
172
178
  Get a shell on a running component.
@@ -193,6 +199,8 @@ EXAMPLES
193
199
  $ emb components shell
194
200
  ```
195
201
 
202
+ _See code: [src/commands/components/shell.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/components/shell.ts)_
203
+
196
204
  ## `emb config print`
197
205
 
198
206
  Print the current config.
@@ -216,6 +224,8 @@ EXAMPLES
216
224
  $ emb config print
217
225
  ```
218
226
 
227
+ _See code: [src/commands/config/print.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/config/print.ts)_
228
+
219
229
  ## `emb containers`
220
230
 
221
231
  List docker containers.
@@ -239,6 +249,8 @@ EXAMPLES
239
249
  $ emb containers
240
250
  ```
241
251
 
252
+ _See code: [src/commands/containers/index.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/containers/index.ts)_
253
+
242
254
  ## `emb containers prune`
243
255
 
244
256
  Prune containers.
@@ -261,6 +273,8 @@ EXAMPLES
261
273
  $ emb containers prune
262
274
  ```
263
275
 
276
+ _See code: [src/commands/containers/prune.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/containers/prune.ts)_
277
+
264
278
  ## `emb down`
265
279
 
266
280
  Stop the whole project.
@@ -284,6 +298,8 @@ EXAMPLES
284
298
  $ emb down
285
299
  ```
286
300
 
301
+ _See code: [src/commands/down.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/down.ts)_
302
+
287
303
  ## `emb help [COMMAND]`
288
304
 
289
305
  Display help for emb.
@@ -328,6 +344,8 @@ EXAMPLES
328
344
  $ emb images
329
345
  ```
330
346
 
347
+ _See code: [src/commands/images/index.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/images/index.ts)_
348
+
331
349
  ## `emb images delete`
332
350
 
333
351
  Delete project images.
@@ -351,6 +369,8 @@ EXAMPLES
351
369
  $ emb images delete
352
370
  ```
353
371
 
372
+ _See code: [src/commands/images/delete.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/images/delete.ts)_
373
+
354
374
  ## `emb images prune`
355
375
 
356
376
  Prune project images.
@@ -374,6 +394,8 @@ EXAMPLES
374
394
  $ emb images prune
375
395
  ```
376
396
 
397
+ _See code: [src/commands/images/prune.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/images/prune.ts)_
398
+
377
399
  ## `emb images push`
378
400
 
379
401
  Push docker images.
@@ -401,6 +423,8 @@ EXAMPLES
401
423
  $ emb images push --registry my.registry.io --retag newtag
402
424
  ```
403
425
 
426
+ _See code: [src/commands/images/push.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/images/push.ts)_
427
+
404
428
  ## `emb kubernetes logs COMPONENT`
405
429
 
406
430
  Follow kubernetes logs.
@@ -428,6 +452,8 @@ EXAMPLES
428
452
  $ emb kubernetes logs
429
453
  ```
430
454
 
455
+ _See code: [src/commands/kubernetes/logs.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/kubernetes/logs.ts)_
456
+
431
457
  ## `emb kubernetes ps`
432
458
 
433
459
  Show running pods.
@@ -449,6 +475,8 @@ EXAMPLES
449
475
  $ emb kubernetes ps
450
476
  ```
451
477
 
478
+ _See code: [src/commands/kubernetes/ps.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/kubernetes/ps.ts)_
479
+
452
480
  ## `emb kubernetes restart [DEPLOYMENT]`
453
481
 
454
482
  Restart pods of an instance.
@@ -472,6 +500,8 @@ EXAMPLES
472
500
  $ emb kubernetes restart
473
501
  ```
474
502
 
503
+ _See code: [src/commands/kubernetes/restart.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/kubernetes/restart.ts)_
504
+
475
505
  ## `emb kubernetes shell COMPONENT`
476
506
 
477
507
  Get a shell on a deployed component.
@@ -499,6 +529,8 @@ EXAMPLES
499
529
  $ emb kubernetes shell
500
530
  ```
501
531
 
532
+ _See code: [src/commands/kubernetes/shell.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/kubernetes/shell.ts)_
533
+
502
534
  ## `emb logs [COMPONENT]`
503
535
 
504
536
  Get components logs.
@@ -552,6 +584,8 @@ EXAMPLES
552
584
  $ emb ps
553
585
  ```
554
586
 
587
+ _See code: [src/commands/ps.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/ps.ts)_
588
+
555
589
  ## `emb resources`
556
590
 
557
591
  List resources.
@@ -575,6 +609,8 @@ EXAMPLES
575
609
  $ emb resources
576
610
  ```
577
611
 
612
+ _See code: [src/commands/resources/index.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/resources/index.ts)_
613
+
578
614
  ## `emb resources build [COMPONENT]`
579
615
 
580
616
  Build the resources of the monorepo
@@ -603,6 +639,8 @@ EXAMPLES
603
639
  $ emb resources build build --flavor development
604
640
  ```
605
641
 
642
+ _See code: [src/commands/resources/build.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/resources/build.ts)_
643
+
606
644
  ## `emb restart [COMPONENT]`
607
645
 
608
646
  Restart the whole project.
@@ -629,6 +667,8 @@ EXAMPLES
629
667
  $ emb restart
630
668
  ```
631
669
 
670
+ _See code: [src/commands/restart.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/restart.ts)_
671
+
632
672
  ## `emb run TASK`
633
673
 
634
674
  Run tasks.
@@ -685,6 +725,8 @@ EXAMPLES
685
725
  $ emb secrets --json
686
726
  ```
687
727
 
728
+ _See code: [src/commands/secrets/index.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/secrets/index.ts)_
729
+
688
730
  ## `emb secrets providers`
689
731
 
690
732
  Show configured secret providers and their status.
@@ -708,6 +750,8 @@ EXAMPLES
708
750
  $ emb secrets providers
709
751
  ```
710
752
 
753
+ _See code: [src/commands/secrets/providers.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/secrets/providers.ts)_
754
+
711
755
  ## `emb secrets validate`
712
756
 
713
757
  Validate that all secret references can be resolved (without showing values).
@@ -736,6 +780,8 @@ EXAMPLES
736
780
  $ emb secrets validate --json
737
781
  ```
738
782
 
783
+ _See code: [src/commands/secrets/validate.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/secrets/validate.ts)_
784
+
739
785
  ## `emb shell COMPONENT`
740
786
 
741
787
  Get a shell on a running component.
@@ -787,6 +833,8 @@ EXAMPLES
787
833
  $ emb start
788
834
  ```
789
835
 
836
+ _See code: [src/commands/start.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/start.ts)_
837
+
790
838
  ## `emb stop`
791
839
 
792
840
  Stop the whole project.
@@ -810,6 +858,8 @@ EXAMPLES
810
858
  $ emb stop
811
859
  ```
812
860
 
861
+ _See code: [src/commands/stop.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/stop.ts)_
862
+
813
863
  ## `emb tasks`
814
864
 
815
865
  List tasks.
@@ -832,6 +882,8 @@ EXAMPLES
832
882
  $ emb tasks
833
883
  ```
834
884
 
885
+ _See code: [src/commands/tasks/index.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/tasks/index.ts)_
886
+
835
887
  ## `emb tasks run TASK`
836
888
 
837
889
  Run tasks.
@@ -863,6 +915,8 @@ EXAMPLES
863
915
  $ emb tasks run
864
916
  ```
865
917
 
918
+ _See code: [src/commands/tasks/run.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/tasks/run.ts)_
919
+
866
920
  ## `emb up [COMPONENT]`
867
921
 
868
922
  Start the whole project.
@@ -890,6 +944,8 @@ EXAMPLES
890
944
  $ emb up
891
945
  ```
892
946
 
947
+ _See code: [src/commands/up.ts](https://github.com/enspirit/emb/blob/v0.17.5/src/commands/up.ts)_
948
+
893
949
  ## `emb update [CHANNEL]`
894
950
 
895
951
  update the emb CLI
package/bin/release ADDED
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Colors for output
5
+ RED='\033[0;31m'
6
+ GREEN='\033[0;32m'
7
+ YELLOW='\033[1;33m'
8
+ NC='\033[0m' # No Color
9
+
10
+ error() {
11
+ echo -e "${RED}Error: $1${NC}" >&2
12
+ exit 1
13
+ }
14
+
15
+ info() {
16
+ echo -e "${GREEN}$1${NC}"
17
+ }
18
+
19
+ warn() {
20
+ echo -e "${YELLOW}$1${NC}"
21
+ }
22
+
23
+ # Check argument
24
+ if [ $# -ne 1 ]; then
25
+ echo "Usage: $0 <patch|minor|major>"
26
+ echo ""
27
+ echo "Examples:"
28
+ echo " $0 patch # 0.17.0 -> 0.17.1"
29
+ echo " $0 minor # 0.17.0 -> 0.18.0"
30
+ echo " $0 major # 0.17.0 -> 1.0.0"
31
+ exit 1
32
+ fi
33
+
34
+ BUMP_TYPE="$1"
35
+
36
+ if [[ "$BUMP_TYPE" != "patch" && "$BUMP_TYPE" != "minor" && "$BUMP_TYPE" != "major" ]]; then
37
+ error "Invalid bump type: $BUMP_TYPE. Must be one of: patch, minor, major"
38
+ fi
39
+
40
+ # Check we're on master branch
41
+ CURRENT_BRANCH=$(git branch --show-current)
42
+ if [ "$CURRENT_BRANCH" != "master" ]; then
43
+ error "Must be on master branch (currently on: $CURRENT_BRANCH)"
44
+ fi
45
+
46
+ # Check for pristine git status
47
+ if [ -n "$(git status --porcelain)" ]; then
48
+ error "Working directory is not clean. Commit or stash your changes first.\n$(git status --short)"
49
+ fi
50
+
51
+ # Check we're up to date with remote
52
+ git fetch origin master --quiet
53
+ LOCAL=$(git rev-parse HEAD)
54
+ REMOTE=$(git rev-parse origin/master)
55
+ if [ "$LOCAL" != "$REMOTE" ]; then
56
+ error "Local master is not up to date with origin/master. Run 'git pull' first."
57
+ fi
58
+
59
+ # Get current version
60
+ CURRENT_VERSION=$(node -p "require('./package.json').version")
61
+ info "Current version: $CURRENT_VERSION"
62
+
63
+ # Calculate new version
64
+ IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
65
+
66
+ case "$BUMP_TYPE" in
67
+ major)
68
+ NEW_VERSION="$((MAJOR + 1)).0.0"
69
+ ;;
70
+ minor)
71
+ NEW_VERSION="${MAJOR}.$((MINOR + 1)).0"
72
+ ;;
73
+ patch)
74
+ NEW_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))"
75
+ ;;
76
+ esac
77
+
78
+ info "New version: $NEW_VERSION"
79
+
80
+ # Check tag doesn't already exist
81
+ if git rev-parse "$NEW_VERSION" >/dev/null 2>&1; then
82
+ error "Tag $NEW_VERSION already exists"
83
+ fi
84
+
85
+ # Confirm with user
86
+ echo ""
87
+ warn "This will:"
88
+ echo " 1. Update package.json version to $NEW_VERSION"
89
+ echo " 2. Commit the change"
90
+ echo " 3. Create tag $NEW_VERSION"
91
+ echo " 4. Push to origin (commit + tag)"
92
+ echo ""
93
+ read -p "Continue? [y/N] " -n 1 -r
94
+ echo ""
95
+
96
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
97
+ echo "Aborted."
98
+ exit 0
99
+ fi
100
+
101
+ # Update package.json version
102
+ info "Updating package.json..."
103
+ npm version "$NEW_VERSION" --no-git-tag-version --allow-same-version
104
+
105
+ # Commit
106
+ info "Committing..."
107
+ git add package.json
108
+ git commit -m "Bump to $NEW_VERSION"
109
+
110
+ # Create tag
111
+ info "Creating tag $NEW_VERSION..."
112
+ git tag "$NEW_VERSION"
113
+
114
+ # Push
115
+ info "Pushing to origin..."
116
+ git push origin master
117
+ git push origin "$NEW_VERSION"
118
+
119
+ echo ""
120
+ info "Release $NEW_VERSION complete!"
121
+ echo "GitHub Actions will now build, test, and publish to npm."
122
+ echo "Monitor the release at: https://github.com/enspirit/emb/actions"
@@ -1,4 +1,4 @@
1
- import { AmbiguousReferenceError, getContext, UnkownReferenceError } from '../../../index.js';
1
+ import { AmbiguousReferenceError, CommandExecError, getContext, UnkownReferenceError, } from '../../../index.js';
2
2
  import { Args, Flags } from '@oclif/core';
3
3
  import { BaseCommand } from '../../index.js';
4
4
  import { ExecutorType, RunTasksOperation } from '../../../monorepo/index.js';
@@ -51,6 +51,11 @@ export default class RunTask extends BaseCommand {
51
51
  `Check the list of tasks available by running: \`emb tasks\``,
52
52
  ]);
53
53
  }
54
+ if (error instanceof CommandExecError) {
55
+ throw error.toCliError([
56
+ `Task command exited with code ${error.exitCode}`,
57
+ ]);
58
+ }
54
59
  throw error;
55
60
  }
56
61
  }
@@ -1,6 +1,12 @@
1
+ import { CommandExecError } from '../../../index.js';
1
2
  import { execa } from 'execa';
3
+ import { Readable } from 'node:stream';
2
4
  import * as z from 'zod';
3
5
  import { AbstractOperation } from '../../../operations/index.js';
6
+ // Type guard for execa error objects
7
+ function isExecaError(error) {
8
+ return error instanceof Error && 'exitCode' in error;
9
+ }
4
10
  /**
5
11
  * https://docs.docker.com/reference/api/engine/version/v1.37/#tag/Exec/operation/ContainerExec
6
12
  */
@@ -27,20 +33,44 @@ export class ExecuteLocalCommandOperation extends AbstractOperation {
27
33
  this.out = out;
28
34
  }
29
35
  async _run(input) {
30
- const proc = input.interactive
31
- ? execa(input.script, {
32
- cwd: input.workingDir,
33
- shell: true,
34
- env: input.env,
35
- stdin: 'inherit',
36
- })
37
- : execa(input.script, {
36
+ try {
37
+ if (input.interactive) {
38
+ // For interactive mode, inherit all stdio streams so the child process
39
+ // has direct access to the terminal TTY. This allows interactive CLI tools
40
+ // (like ionic, npm, etc.) to detect TTY and show prompts.
41
+ await execa(input.script, {
42
+ cwd: input.workingDir,
43
+ shell: true,
44
+ env: input.env,
45
+ stdio: 'inherit',
46
+ });
47
+ // Return an empty stream for type compatibility - the caller won't use it
48
+ // since interactive mode outputs directly to the terminal
49
+ return new Readable({
50
+ read() {
51
+ this.push(null);
52
+ },
53
+ });
54
+ }
55
+ // Non-interactive mode: capture output
56
+ const proc = execa(input.script, {
38
57
  all: true,
39
58
  cwd: input.workingDir,
40
59
  shell: true,
41
60
  env: input.env,
42
61
  });
43
- proc.all?.pipe(this.out || process.stdout);
44
- return proc.all || proc.stdout;
62
+ // With all: true, proc.all is always defined
63
+ proc.all.pipe(this.out || process.stdout);
64
+ await proc;
65
+ return proc.all;
66
+ }
67
+ catch (error) {
68
+ if (isExecaError(error)) {
69
+ const stderr = error.stderr?.trim();
70
+ const message = stderr || error.shortMessage || error.message;
71
+ throw new CommandExecError(message, error.exitCode ?? 1, error.signal);
72
+ }
73
+ throw error;
74
+ }
45
75
  }
46
76
  }
@@ -977,139 +977,6 @@
977
977
  "push.js"
978
978
  ]
979
979
  },
980
- "resources:build": {
981
- "aliases": [],
982
- "args": {
983
- "component": {
984
- "description": "List of resources to build (defaults to all)",
985
- "name": "component",
986
- "required": false
987
- }
988
- },
989
- "description": "Build the resources of the monorepo",
990
- "examples": [
991
- "<%= config.bin %> <%= command.id %> build --flavor development"
992
- ],
993
- "flags": {
994
- "json": {
995
- "description": "Format output as json.",
996
- "helpGroup": "GLOBAL",
997
- "name": "json",
998
- "allowNo": false,
999
- "type": "boolean"
1000
- },
1001
- "verbose": {
1002
- "name": "verbose",
1003
- "allowNo": true,
1004
- "type": "boolean"
1005
- },
1006
- "root": {
1007
- "char": "C",
1008
- "description": "Run as if emb was started in <path>. Can also be set via EMB_ROOT env var.",
1009
- "name": "root",
1010
- "required": false,
1011
- "hasDynamicHelp": false,
1012
- "multiple": false,
1013
- "type": "option"
1014
- },
1015
- "flavor": {
1016
- "description": "Specify the flavor to use.",
1017
- "name": "flavor",
1018
- "required": false,
1019
- "hasDynamicHelp": false,
1020
- "multiple": false,
1021
- "type": "option"
1022
- },
1023
- "dry-run": {
1024
- "description": "Do not build the resources but only produce build meta information",
1025
- "name": "dry-run",
1026
- "required": false,
1027
- "allowNo": false,
1028
- "type": "boolean"
1029
- },
1030
- "force": {
1031
- "char": "f",
1032
- "description": "Bypass the cache and force the build",
1033
- "name": "force",
1034
- "required": false,
1035
- "allowNo": false,
1036
- "type": "boolean"
1037
- }
1038
- },
1039
- "hasDynamicHelp": false,
1040
- "hiddenAliases": [],
1041
- "id": "resources:build",
1042
- "pluginAlias": "@enspirit/emb",
1043
- "pluginName": "@enspirit/emb",
1044
- "pluginType": "core",
1045
- "strict": false,
1046
- "enableJsonFlag": true,
1047
- "isESM": true,
1048
- "relativePath": [
1049
- "dist",
1050
- "src",
1051
- "cli",
1052
- "commands",
1053
- "resources",
1054
- "build.js"
1055
- ]
1056
- },
1057
- "resources": {
1058
- "aliases": [],
1059
- "args": {},
1060
- "description": "List resources.",
1061
- "examples": [
1062
- "<%= config.bin %> <%= command.id %>"
1063
- ],
1064
- "flags": {
1065
- "json": {
1066
- "description": "Format output as json.",
1067
- "helpGroup": "GLOBAL",
1068
- "name": "json",
1069
- "allowNo": false,
1070
- "type": "boolean"
1071
- },
1072
- "verbose": {
1073
- "name": "verbose",
1074
- "allowNo": true,
1075
- "type": "boolean"
1076
- },
1077
- "root": {
1078
- "char": "C",
1079
- "description": "Run as if emb was started in <path>. Can also be set via EMB_ROOT env var.",
1080
- "name": "root",
1081
- "required": false,
1082
- "hasDynamicHelp": false,
1083
- "multiple": false,
1084
- "type": "option"
1085
- },
1086
- "flavor": {
1087
- "description": "Specify the flavor to use.",
1088
- "name": "flavor",
1089
- "required": false,
1090
- "hasDynamicHelp": false,
1091
- "multiple": false,
1092
- "type": "option"
1093
- }
1094
- },
1095
- "hasDynamicHelp": false,
1096
- "hiddenAliases": [],
1097
- "id": "resources",
1098
- "pluginAlias": "@enspirit/emb",
1099
- "pluginName": "@enspirit/emb",
1100
- "pluginType": "core",
1101
- "strict": true,
1102
- "enableJsonFlag": true,
1103
- "isESM": true,
1104
- "relativePath": [
1105
- "dist",
1106
- "src",
1107
- "cli",
1108
- "commands",
1109
- "resources",
1110
- "index.js"
1111
- ]
1112
- },
1113
980
  "kubernetes:logs": {
1114
981
  "aliases": [
1115
982
  "logs"
@@ -1368,12 +1235,13 @@
1368
1235
  "shell.js"
1369
1236
  ]
1370
1237
  },
1371
- "tasks": {
1238
+ "secrets": {
1372
1239
  "aliases": [],
1373
1240
  "args": {},
1374
- "description": "List tasks.",
1241
+ "description": "List all secret references in the configuration.",
1375
1242
  "examples": [
1376
- "<%= config.bin %> <%= command.id %>"
1243
+ "<%= config.bin %> <%= command.id %>",
1244
+ "<%= config.bin %> <%= command.id %> --json"
1377
1245
  ],
1378
1246
  "flags": {
1379
1247
  "json": {
@@ -1396,11 +1264,19 @@
1396
1264
  "hasDynamicHelp": false,
1397
1265
  "multiple": false,
1398
1266
  "type": "option"
1267
+ },
1268
+ "flavor": {
1269
+ "description": "Specify the flavor to use.",
1270
+ "name": "flavor",
1271
+ "required": false,
1272
+ "hasDynamicHelp": false,
1273
+ "multiple": false,
1274
+ "type": "option"
1399
1275
  }
1400
1276
  },
1401
1277
  "hasDynamicHelp": false,
1402
1278
  "hiddenAliases": [],
1403
- "id": "tasks",
1279
+ "id": "secrets",
1404
1280
  "pluginAlias": "@enspirit/emb",
1405
1281
  "pluginName": "@enspirit/emb",
1406
1282
  "pluginType": "core",
@@ -1412,22 +1288,14 @@
1412
1288
  "src",
1413
1289
  "cli",
1414
1290
  "commands",
1415
- "tasks",
1291
+ "secrets",
1416
1292
  "index.js"
1417
1293
  ]
1418
1294
  },
1419
- "tasks:run": {
1420
- "aliases": [
1421
- "run"
1422
- ],
1423
- "args": {
1424
- "task": {
1425
- "description": "List of tasks to run. You can provide either ids or names (eg: component:task or task)",
1426
- "name": "task",
1427
- "required": true
1428
- }
1429
- },
1430
- "description": "Run tasks.",
1295
+ "secrets:providers": {
1296
+ "aliases": [],
1297
+ "args": {},
1298
+ "description": "Show configured secret providers and their status.",
1431
1299
  "examples": [
1432
1300
  "<%= config.bin %> <%= command.id %>"
1433
1301
  ],
@@ -1453,33 +1321,22 @@
1453
1321
  "multiple": false,
1454
1322
  "type": "option"
1455
1323
  },
1456
- "executor": {
1457
- "char": "x",
1458
- "description": "Where to run the task. (experimental!)",
1459
- "name": "executor",
1324
+ "flavor": {
1325
+ "description": "Specify the flavor to use.",
1326
+ "name": "flavor",
1327
+ "required": false,
1460
1328
  "hasDynamicHelp": false,
1461
1329
  "multiple": false,
1462
- "options": [
1463
- "container",
1464
- "local"
1465
- ],
1466
1330
  "type": "option"
1467
- },
1468
- "all-matching": {
1469
- "char": "a",
1470
- "description": "Run all tasks matching (when multiple matches)",
1471
- "name": "all-matching",
1472
- "allowNo": false,
1473
- "type": "boolean"
1474
1331
  }
1475
1332
  },
1476
1333
  "hasDynamicHelp": false,
1477
1334
  "hiddenAliases": [],
1478
- "id": "tasks:run",
1335
+ "id": "secrets:providers",
1479
1336
  "pluginAlias": "@enspirit/emb",
1480
1337
  "pluginName": "@enspirit/emb",
1481
1338
  "pluginType": "core",
1482
- "strict": false,
1339
+ "strict": true,
1483
1340
  "enableJsonFlag": true,
1484
1341
  "isESM": true,
1485
1342
  "relativePath": [
@@ -1487,16 +1344,17 @@
1487
1344
  "src",
1488
1345
  "cli",
1489
1346
  "commands",
1490
- "tasks",
1491
- "run.js"
1347
+ "secrets",
1348
+ "providers.js"
1492
1349
  ]
1493
1350
  },
1494
- "secrets": {
1351
+ "secrets:validate": {
1495
1352
  "aliases": [],
1496
1353
  "args": {},
1497
- "description": "List all secret references in the configuration.",
1354
+ "description": "Validate that all secret references can be resolved (without showing values).",
1498
1355
  "examples": [
1499
1356
  "<%= config.bin %> <%= command.id %>",
1357
+ "<%= config.bin %> <%= command.id %> --fail-fast",
1500
1358
  "<%= config.bin %> <%= command.id %> --json"
1501
1359
  ],
1502
1360
  "flags": {
@@ -1528,11 +1386,17 @@
1528
1386
  "hasDynamicHelp": false,
1529
1387
  "multiple": false,
1530
1388
  "type": "option"
1389
+ },
1390
+ "fail-fast": {
1391
+ "description": "Stop on first validation error",
1392
+ "name": "fail-fast",
1393
+ "allowNo": false,
1394
+ "type": "boolean"
1531
1395
  }
1532
1396
  },
1533
1397
  "hasDynamicHelp": false,
1534
1398
  "hiddenAliases": [],
1535
- "id": "secrets",
1399
+ "id": "secrets:validate",
1536
1400
  "pluginAlias": "@enspirit/emb",
1537
1401
  "pluginName": "@enspirit/emb",
1538
1402
  "pluginType": "core",
@@ -1545,15 +1409,21 @@
1545
1409
  "cli",
1546
1410
  "commands",
1547
1411
  "secrets",
1548
- "index.js"
1412
+ "validate.js"
1549
1413
  ]
1550
1414
  },
1551
- "secrets:providers": {
1415
+ "resources:build": {
1552
1416
  "aliases": [],
1553
- "args": {},
1554
- "description": "Show configured secret providers and their status.",
1417
+ "args": {
1418
+ "component": {
1419
+ "description": "List of resources to build (defaults to all)",
1420
+ "name": "component",
1421
+ "required": false
1422
+ }
1423
+ },
1424
+ "description": "Build the resources of the monorepo",
1555
1425
  "examples": [
1556
- "<%= config.bin %> <%= command.id %>"
1426
+ "<%= config.bin %> <%= command.id %> build --flavor development"
1557
1427
  ],
1558
1428
  "flags": {
1559
1429
  "json": {
@@ -1584,15 +1454,30 @@
1584
1454
  "hasDynamicHelp": false,
1585
1455
  "multiple": false,
1586
1456
  "type": "option"
1457
+ },
1458
+ "dry-run": {
1459
+ "description": "Do not build the resources but only produce build meta information",
1460
+ "name": "dry-run",
1461
+ "required": false,
1462
+ "allowNo": false,
1463
+ "type": "boolean"
1464
+ },
1465
+ "force": {
1466
+ "char": "f",
1467
+ "description": "Bypass the cache and force the build",
1468
+ "name": "force",
1469
+ "required": false,
1470
+ "allowNo": false,
1471
+ "type": "boolean"
1587
1472
  }
1588
1473
  },
1589
1474
  "hasDynamicHelp": false,
1590
1475
  "hiddenAliases": [],
1591
- "id": "secrets:providers",
1476
+ "id": "resources:build",
1592
1477
  "pluginAlias": "@enspirit/emb",
1593
1478
  "pluginName": "@enspirit/emb",
1594
1479
  "pluginType": "core",
1595
- "strict": true,
1480
+ "strict": false,
1596
1481
  "enableJsonFlag": true,
1597
1482
  "isESM": true,
1598
1483
  "relativePath": [
@@ -1600,18 +1485,16 @@
1600
1485
  "src",
1601
1486
  "cli",
1602
1487
  "commands",
1603
- "secrets",
1604
- "providers.js"
1488
+ "resources",
1489
+ "build.js"
1605
1490
  ]
1606
1491
  },
1607
- "secrets:validate": {
1492
+ "resources": {
1608
1493
  "aliases": [],
1609
1494
  "args": {},
1610
- "description": "Validate that all secret references can be resolved (without showing values).",
1495
+ "description": "List resources.",
1611
1496
  "examples": [
1612
- "<%= config.bin %> <%= command.id %>",
1613
- "<%= config.bin %> <%= command.id %> --fail-fast",
1614
- "<%= config.bin %> <%= command.id %> --json"
1497
+ "<%= config.bin %> <%= command.id %>"
1615
1498
  ],
1616
1499
  "flags": {
1617
1500
  "json": {
@@ -1642,17 +1525,59 @@
1642
1525
  "hasDynamicHelp": false,
1643
1526
  "multiple": false,
1644
1527
  "type": "option"
1645
- },
1646
- "fail-fast": {
1647
- "description": "Stop on first validation error",
1648
- "name": "fail-fast",
1528
+ }
1529
+ },
1530
+ "hasDynamicHelp": false,
1531
+ "hiddenAliases": [],
1532
+ "id": "resources",
1533
+ "pluginAlias": "@enspirit/emb",
1534
+ "pluginName": "@enspirit/emb",
1535
+ "pluginType": "core",
1536
+ "strict": true,
1537
+ "enableJsonFlag": true,
1538
+ "isESM": true,
1539
+ "relativePath": [
1540
+ "dist",
1541
+ "src",
1542
+ "cli",
1543
+ "commands",
1544
+ "resources",
1545
+ "index.js"
1546
+ ]
1547
+ },
1548
+ "tasks": {
1549
+ "aliases": [],
1550
+ "args": {},
1551
+ "description": "List tasks.",
1552
+ "examples": [
1553
+ "<%= config.bin %> <%= command.id %>"
1554
+ ],
1555
+ "flags": {
1556
+ "json": {
1557
+ "description": "Format output as json.",
1558
+ "helpGroup": "GLOBAL",
1559
+ "name": "json",
1649
1560
  "allowNo": false,
1650
1561
  "type": "boolean"
1562
+ },
1563
+ "verbose": {
1564
+ "name": "verbose",
1565
+ "allowNo": true,
1566
+ "type": "boolean"
1567
+ },
1568
+ "root": {
1569
+ "char": "C",
1570
+ "description": "Run as if emb was started in <path>. Can also be set via EMB_ROOT env var.",
1571
+ "name": "root",
1572
+ "required": false,
1573
+ "hasDynamicHelp": false,
1574
+ "multiple": false,
1575
+ "type": "option"
1651
1576
  }
1652
1577
  },
1653
1578
  "hasDynamicHelp": false,
1654
1579
  "hiddenAliases": [],
1655
- "id": "secrets:validate",
1580
+ "id": "tasks",
1656
1581
  "pluginAlias": "@enspirit/emb",
1657
1582
  "pluginName": "@enspirit/emb",
1658
1583
  "pluginType": "core",
@@ -1664,10 +1589,85 @@
1664
1589
  "src",
1665
1590
  "cli",
1666
1591
  "commands",
1667
- "secrets",
1668
- "validate.js"
1592
+ "tasks",
1593
+ "index.js"
1594
+ ]
1595
+ },
1596
+ "tasks:run": {
1597
+ "aliases": [
1598
+ "run"
1599
+ ],
1600
+ "args": {
1601
+ "task": {
1602
+ "description": "List of tasks to run. You can provide either ids or names (eg: component:task or task)",
1603
+ "name": "task",
1604
+ "required": true
1605
+ }
1606
+ },
1607
+ "description": "Run tasks.",
1608
+ "examples": [
1609
+ "<%= config.bin %> <%= command.id %>"
1610
+ ],
1611
+ "flags": {
1612
+ "json": {
1613
+ "description": "Format output as json.",
1614
+ "helpGroup": "GLOBAL",
1615
+ "name": "json",
1616
+ "allowNo": false,
1617
+ "type": "boolean"
1618
+ },
1619
+ "verbose": {
1620
+ "name": "verbose",
1621
+ "allowNo": true,
1622
+ "type": "boolean"
1623
+ },
1624
+ "root": {
1625
+ "char": "C",
1626
+ "description": "Run as if emb was started in <path>. Can also be set via EMB_ROOT env var.",
1627
+ "name": "root",
1628
+ "required": false,
1629
+ "hasDynamicHelp": false,
1630
+ "multiple": false,
1631
+ "type": "option"
1632
+ },
1633
+ "executor": {
1634
+ "char": "x",
1635
+ "description": "Where to run the task. (experimental!)",
1636
+ "name": "executor",
1637
+ "hasDynamicHelp": false,
1638
+ "multiple": false,
1639
+ "options": [
1640
+ "container",
1641
+ "local"
1642
+ ],
1643
+ "type": "option"
1644
+ },
1645
+ "all-matching": {
1646
+ "char": "a",
1647
+ "description": "Run all tasks matching (when multiple matches)",
1648
+ "name": "all-matching",
1649
+ "allowNo": false,
1650
+ "type": "boolean"
1651
+ }
1652
+ },
1653
+ "hasDynamicHelp": false,
1654
+ "hiddenAliases": [],
1655
+ "id": "tasks:run",
1656
+ "pluginAlias": "@enspirit/emb",
1657
+ "pluginName": "@enspirit/emb",
1658
+ "pluginType": "core",
1659
+ "strict": false,
1660
+ "enableJsonFlag": true,
1661
+ "isESM": true,
1662
+ "relativePath": [
1663
+ "dist",
1664
+ "src",
1665
+ "cli",
1666
+ "commands",
1667
+ "tasks",
1668
+ "run.js"
1669
1669
  ]
1670
1670
  }
1671
1671
  },
1672
- "version": "0.17.0"
1672
+ "version": "0.17.5"
1673
1673
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@enspirit/emb",
3
3
  "type": "module",
4
- "version": "0.17.0",
4
+ "version": "0.17.5",
5
5
  "keywords": [
6
6
  "monorepo",
7
7
  "docker",
@@ -14,6 +14,10 @@
14
14
  "author": "Louis Lambeau <louis.lambeau@enspirit.be>",
15
15
  "license": "ISC",
16
16
  "description": "A replacement for our Makefile-for-monorepos",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/enspirit/emb"
20
+ },
17
21
  "bin": {
18
22
  "emb": "./bin/run.js"
19
23
  },