hereya-cli 0.63.0 → 0.64.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/README.md +104 -41
- package/dist/backend/cloud/cloud-backend.js +3 -0
- package/dist/backend/common.d.ts +1 -0
- package/dist/backend/file.js +1 -1
- package/dist/commands/docker/run/index.d.ts +15 -0
- package/dist/commands/docker/run/index.js +111 -0
- package/dist/commands/flow/docker/run/index.d.ts +16 -0
- package/dist/commands/flow/docker/run/index.js +67 -0
- package/dist/commands/workspace/install/index.js +1 -0
- package/dist/infrastructure/local.d.ts +4 -0
- package/dist/infrastructure/local.js +24 -0
- package/dist/lib/package/index.js +2 -1
- package/oclif.manifest.json +131 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ $ npm install -g hereya-cli
|
|
|
20
20
|
$ hereya COMMAND
|
|
21
21
|
running command...
|
|
22
22
|
$ hereya (--version)
|
|
23
|
-
hereya-cli/0.
|
|
23
|
+
hereya-cli/0.64.1 linux-x64 node-v24.13.1
|
|
24
24
|
$ hereya --help [COMMAND]
|
|
25
25
|
USAGE
|
|
26
26
|
$ hereya COMMAND
|
|
@@ -38,10 +38,12 @@ USAGE
|
|
|
38
38
|
* [`hereya delete-state`](#hereya-delete-state)
|
|
39
39
|
* [`hereya deploy`](#hereya-deploy)
|
|
40
40
|
* [`hereya doc PACKAGE`](#hereya-doc-package)
|
|
41
|
+
* [`hereya docker run IMAGE`](#hereya-docker-run-image)
|
|
41
42
|
* [`hereya down`](#hereya-down)
|
|
42
43
|
* [`hereya env [NAME]`](#hereya-env-name)
|
|
43
44
|
* [`hereya env set [NAME]`](#hereya-env-set-name)
|
|
44
45
|
* [`hereya flow add PACKAGE`](#hereya-flow-add-package)
|
|
46
|
+
* [`hereya flow docker run IMAGE`](#hereya-flow-docker-run-image)
|
|
45
47
|
* [`hereya flow down`](#hereya-flow-down)
|
|
46
48
|
* [`hereya flow env [NAME]`](#hereya-flow-env-name)
|
|
47
49
|
* [`hereya flow provid PACKAGE`](#hereya-flow-provid-package)
|
|
@@ -103,7 +105,7 @@ EXAMPLES
|
|
|
103
105
|
$ hereya add cloudy/docker_postgres
|
|
104
106
|
```
|
|
105
107
|
|
|
106
|
-
_See code: [src/commands/add/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
108
|
+
_See code: [src/commands/add/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/add/index.ts)_
|
|
107
109
|
|
|
108
110
|
## `hereya bootstrap INFRASTRUCTURETYPE`
|
|
109
111
|
|
|
@@ -128,7 +130,7 @@ EXAMPLES
|
|
|
128
130
|
$ hereya bootstrap local
|
|
129
131
|
```
|
|
130
132
|
|
|
131
|
-
_See code: [src/commands/bootstrap/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
133
|
+
_See code: [src/commands/bootstrap/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/bootstrap/index.ts)_
|
|
132
134
|
|
|
133
135
|
## `hereya config export-backend [FILE]`
|
|
134
136
|
|
|
@@ -150,7 +152,7 @@ EXAMPLES
|
|
|
150
152
|
$ hereya config export-backend ./path/to/export.json
|
|
151
153
|
```
|
|
152
154
|
|
|
153
|
-
_See code: [src/commands/config/export-backend/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
155
|
+
_See code: [src/commands/config/export-backend/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/config/export-backend/index.ts)_
|
|
154
156
|
|
|
155
157
|
## `hereya config get-backend`
|
|
156
158
|
|
|
@@ -167,7 +169,7 @@ EXAMPLES
|
|
|
167
169
|
$ hereya config get-backend
|
|
168
170
|
```
|
|
169
171
|
|
|
170
|
-
_See code: [src/commands/config/get-backend/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
172
|
+
_See code: [src/commands/config/get-backend/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/config/get-backend/index.ts)_
|
|
171
173
|
|
|
172
174
|
## `hereya config import-backend FILE`
|
|
173
175
|
|
|
@@ -187,7 +189,7 @@ EXAMPLES
|
|
|
187
189
|
$ hereya config import-backend ./path/to/cloud-backend.json
|
|
188
190
|
```
|
|
189
191
|
|
|
190
|
-
_See code: [src/commands/config/import-backend/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
192
|
+
_See code: [src/commands/config/import-backend/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/config/import-backend/index.ts)_
|
|
191
193
|
|
|
192
194
|
## `hereya config use-backend TYPE`
|
|
193
195
|
|
|
@@ -209,7 +211,7 @@ EXAMPLES
|
|
|
209
211
|
$ hereya config use-backend local
|
|
210
212
|
```
|
|
211
213
|
|
|
212
|
-
_See code: [src/commands/config/use-backend/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
214
|
+
_See code: [src/commands/config/use-backend/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/config/use-backend/index.ts)_
|
|
213
215
|
|
|
214
216
|
## `hereya delete-state`
|
|
215
217
|
|
|
@@ -235,7 +237,7 @@ EXAMPLES
|
|
|
235
237
|
$ hereya delete-state --workspace staging
|
|
236
238
|
```
|
|
237
239
|
|
|
238
|
-
_See code: [src/commands/delete-state/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
240
|
+
_See code: [src/commands/delete-state/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/delete-state/index.ts)_
|
|
239
241
|
|
|
240
242
|
## `hereya deploy`
|
|
241
243
|
|
|
@@ -260,7 +262,7 @@ EXAMPLES
|
|
|
260
262
|
$ hereya deploy
|
|
261
263
|
```
|
|
262
264
|
|
|
263
|
-
_See code: [src/commands/deploy/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
265
|
+
_See code: [src/commands/deploy/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/deploy/index.ts)_
|
|
264
266
|
|
|
265
267
|
## `hereya doc PACKAGE`
|
|
266
268
|
|
|
@@ -293,7 +295,38 @@ EXAMPLES
|
|
|
293
295
|
$ hereya doc my-package --no-doc
|
|
294
296
|
```
|
|
295
297
|
|
|
296
|
-
_See code: [src/commands/doc/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
298
|
+
_See code: [src/commands/doc/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/doc/index.ts)_
|
|
299
|
+
|
|
300
|
+
## `hereya docker run IMAGE`
|
|
301
|
+
|
|
302
|
+
Run a Docker container with hereya env vars injected as -e flags.
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
USAGE
|
|
306
|
+
$ hereya docker run IMAGE... [--chdir <value>] [-p <value>] [-w <value>]
|
|
307
|
+
|
|
308
|
+
ARGUMENTS
|
|
309
|
+
IMAGE... Docker image to run
|
|
310
|
+
|
|
311
|
+
FLAGS
|
|
312
|
+
-p, --port=<value> [default: 8080] port to forward and set as PORT env var (default: 8080)
|
|
313
|
+
-w, --workspace=<value> name of the workspace to use
|
|
314
|
+
--chdir=<value> directory to run command in
|
|
315
|
+
|
|
316
|
+
DESCRIPTION
|
|
317
|
+
Run a Docker container with hereya env vars injected as -e flags.
|
|
318
|
+
|
|
319
|
+
EXAMPLES
|
|
320
|
+
$ hereya docker run myapp:latest
|
|
321
|
+
|
|
322
|
+
$ hereya docker run -w staging myapp:latest
|
|
323
|
+
|
|
324
|
+
$ hereya docker run -p 3000 myapp:latest
|
|
325
|
+
|
|
326
|
+
$ hereya docker run myapp:latest -- --rm -v ./data:/data
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
_See code: [src/commands/docker/run/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/docker/run/index.ts)_
|
|
297
330
|
|
|
298
331
|
## `hereya down`
|
|
299
332
|
|
|
@@ -320,7 +353,7 @@ EXAMPLES
|
|
|
320
353
|
$ hereya down
|
|
321
354
|
```
|
|
322
355
|
|
|
323
|
-
_See code: [src/commands/down/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
356
|
+
_See code: [src/commands/down/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/down/index.ts)_
|
|
324
357
|
|
|
325
358
|
## `hereya env [NAME]`
|
|
326
359
|
|
|
@@ -351,7 +384,7 @@ EXAMPLES
|
|
|
351
384
|
$ hereya env -w dev -l
|
|
352
385
|
```
|
|
353
386
|
|
|
354
|
-
_See code: [src/commands/env/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
387
|
+
_See code: [src/commands/env/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/env/index.ts)_
|
|
355
388
|
|
|
356
389
|
## `hereya env set [NAME]`
|
|
357
390
|
|
|
@@ -378,7 +411,7 @@ EXAMPLES
|
|
|
378
411
|
$ hereya env set FOO -v bar -w dev
|
|
379
412
|
```
|
|
380
413
|
|
|
381
|
-
_See code: [src/commands/env/set/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
414
|
+
_See code: [src/commands/env/set/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/env/set/index.ts)_
|
|
382
415
|
|
|
383
416
|
## `hereya flow add PACKAGE`
|
|
384
417
|
|
|
@@ -416,7 +449,37 @@ EXAMPLES
|
|
|
416
449
|
$ hereya flow add cloudy/docker_postgres -p DB_NAME=mydb -p DB_USER=admin
|
|
417
450
|
```
|
|
418
451
|
|
|
419
|
-
_See code: [src/commands/flow/add/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
452
|
+
_See code: [src/commands/flow/add/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/flow/add/index.ts)_
|
|
453
|
+
|
|
454
|
+
## `hereya flow docker run IMAGE`
|
|
455
|
+
|
|
456
|
+
Run a Docker container with hereya env vars in a git branch-based workspace
|
|
457
|
+
|
|
458
|
+
```
|
|
459
|
+
USAGE
|
|
460
|
+
$ hereya flow docker run IMAGE... [--chdir <value>] [--pin] [-p <value>] [--profile <value>]
|
|
461
|
+
|
|
462
|
+
ARGUMENTS
|
|
463
|
+
IMAGE... Docker image to run
|
|
464
|
+
|
|
465
|
+
FLAGS
|
|
466
|
+
-p, --port=<value> [default: 8080] port to forward and set as PORT env var (default: 8080)
|
|
467
|
+
--chdir=<value> directory to run command in
|
|
468
|
+
--pin append git commit SHA to workspace name for commit-specific isolation
|
|
469
|
+
--profile=<value> profile to use for the workspace (will be appended to workspace name)
|
|
470
|
+
|
|
471
|
+
DESCRIPTION
|
|
472
|
+
Run a Docker container with hereya env vars in a git branch-based workspace
|
|
473
|
+
|
|
474
|
+
EXAMPLES
|
|
475
|
+
$ hereya flow docker run myapp:latest
|
|
476
|
+
|
|
477
|
+
$ hereya flow docker run --profile staging myapp:latest
|
|
478
|
+
|
|
479
|
+
$ hereya flow docker run --pin myapp:latest -- --rm
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
_See code: [src/commands/flow/docker/run/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/flow/docker/run/index.ts)_
|
|
420
483
|
|
|
421
484
|
## `hereya flow down`
|
|
422
485
|
|
|
@@ -450,7 +513,7 @@ EXAMPLES
|
|
|
450
513
|
$ hereya flow down --pin
|
|
451
514
|
```
|
|
452
515
|
|
|
453
|
-
_See code: [src/commands/flow/down/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
516
|
+
_See code: [src/commands/flow/down/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/flow/down/index.ts)_
|
|
454
517
|
|
|
455
518
|
## `hereya flow env [NAME]`
|
|
456
519
|
|
|
@@ -484,7 +547,7 @@ EXAMPLES
|
|
|
484
547
|
$ hereya flow env -l
|
|
485
548
|
```
|
|
486
549
|
|
|
487
|
-
_See code: [src/commands/flow/env/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
550
|
+
_See code: [src/commands/flow/env/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/flow/env/index.ts)_
|
|
488
551
|
|
|
489
552
|
## `hereya flow provid PACKAGE`
|
|
490
553
|
|
|
@@ -513,7 +576,7 @@ EXAMPLES
|
|
|
513
576
|
$ hereya flow provid hereya/postgres --pin
|
|
514
577
|
```
|
|
515
578
|
|
|
516
|
-
_See code: [src/commands/flow/provid/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
579
|
+
_See code: [src/commands/flow/provid/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/flow/provid/index.ts)_
|
|
517
580
|
|
|
518
581
|
## `hereya flow remove PACKAGE`
|
|
519
582
|
|
|
@@ -543,7 +606,7 @@ EXAMPLES
|
|
|
543
606
|
$ hereya flow remove cloudy/docker_postgres --profile staging
|
|
544
607
|
```
|
|
545
608
|
|
|
546
|
-
_See code: [src/commands/flow/remove/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
609
|
+
_See code: [src/commands/flow/remove/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/flow/remove/index.ts)_
|
|
547
610
|
|
|
548
611
|
## `hereya flow run CMD`
|
|
549
612
|
|
|
@@ -572,7 +635,7 @@ EXAMPLES
|
|
|
572
635
|
$ hereya flow run --pin -- npm test
|
|
573
636
|
```
|
|
574
637
|
|
|
575
|
-
_See code: [src/commands/flow/run/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
638
|
+
_See code: [src/commands/flow/run/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/flow/run/index.ts)_
|
|
576
639
|
|
|
577
640
|
## `hereya flow up`
|
|
578
641
|
|
|
@@ -606,7 +669,7 @@ EXAMPLES
|
|
|
606
669
|
$ hereya flow up --pin
|
|
607
670
|
```
|
|
608
671
|
|
|
609
|
-
_See code: [src/commands/flow/up/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
672
|
+
_See code: [src/commands/flow/up/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/flow/up/index.ts)_
|
|
610
673
|
|
|
611
674
|
## `hereya help [COMMAND]`
|
|
612
675
|
|
|
@@ -663,7 +726,7 @@ EXAMPLES
|
|
|
663
726
|
$ hereya import org/my-package -f state.tfstate -w my-workspace
|
|
664
727
|
```
|
|
665
728
|
|
|
666
|
-
_See code: [src/commands/import/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
729
|
+
_See code: [src/commands/import/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/import/index.ts)_
|
|
667
730
|
|
|
668
731
|
## `hereya init PROJECT`
|
|
669
732
|
|
|
@@ -689,7 +752,7 @@ EXAMPLES
|
|
|
689
752
|
$ hereya init myProject -w=defaultWorkspace --chdir=./myProject
|
|
690
753
|
```
|
|
691
754
|
|
|
692
|
-
_See code: [src/commands/init/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
755
|
+
_See code: [src/commands/init/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/init/index.ts)_
|
|
693
756
|
|
|
694
757
|
## `hereya login [URL]`
|
|
695
758
|
|
|
@@ -718,7 +781,7 @@ EXAMPLES
|
|
|
718
781
|
$ hereya login --token=your-token https://cloud.hereya.dev
|
|
719
782
|
```
|
|
720
783
|
|
|
721
|
-
_See code: [src/commands/login/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
784
|
+
_See code: [src/commands/login/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/login/index.ts)_
|
|
722
785
|
|
|
723
786
|
## `hereya logout`
|
|
724
787
|
|
|
@@ -735,7 +798,7 @@ EXAMPLES
|
|
|
735
798
|
$ hereya logout
|
|
736
799
|
```
|
|
737
800
|
|
|
738
|
-
_See code: [src/commands/logout/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
801
|
+
_See code: [src/commands/logout/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/logout/index.ts)_
|
|
739
802
|
|
|
740
803
|
## `hereya provid PACKAGE`
|
|
741
804
|
|
|
@@ -763,7 +826,7 @@ EXAMPLES
|
|
|
763
826
|
$ hereya provid hereya/postgres --workspace staging
|
|
764
827
|
```
|
|
765
828
|
|
|
766
|
-
_See code: [src/commands/provid/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
829
|
+
_See code: [src/commands/provid/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/provid/index.ts)_
|
|
767
830
|
|
|
768
831
|
## `hereya publish`
|
|
769
832
|
|
|
@@ -786,7 +849,7 @@ EXAMPLES
|
|
|
786
849
|
$ hereya publish --chdir=/path/to/package
|
|
787
850
|
```
|
|
788
851
|
|
|
789
|
-
_See code: [src/commands/publish/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
852
|
+
_See code: [src/commands/publish/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/publish/index.ts)_
|
|
790
853
|
|
|
791
854
|
## `hereya remove PACKAGE`
|
|
792
855
|
|
|
@@ -814,7 +877,7 @@ EXAMPLES
|
|
|
814
877
|
$ hereya remove cloudy/docker_postgres
|
|
815
878
|
```
|
|
816
879
|
|
|
817
|
-
_See code: [src/commands/remove/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
880
|
+
_See code: [src/commands/remove/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/remove/index.ts)_
|
|
818
881
|
|
|
819
882
|
## `hereya run CMD`
|
|
820
883
|
|
|
@@ -840,7 +903,7 @@ EXAMPLES
|
|
|
840
903
|
$ hereya run -w uat -- node index.js
|
|
841
904
|
```
|
|
842
905
|
|
|
843
|
-
_See code: [src/commands/run/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
906
|
+
_See code: [src/commands/run/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/run/index.ts)_
|
|
844
907
|
|
|
845
908
|
## `hereya search QUERY`
|
|
846
909
|
|
|
@@ -871,7 +934,7 @@ EXAMPLES
|
|
|
871
934
|
$ hereya search database --json
|
|
872
935
|
```
|
|
873
936
|
|
|
874
|
-
_See code: [src/commands/search/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
937
|
+
_See code: [src/commands/search/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/search/index.ts)_
|
|
875
938
|
|
|
876
939
|
## `hereya unbootstrap INFRASTRUCTURETYPE`
|
|
877
940
|
|
|
@@ -896,7 +959,7 @@ EXAMPLES
|
|
|
896
959
|
$ hereya unbootstrap local
|
|
897
960
|
```
|
|
898
961
|
|
|
899
|
-
_See code: [src/commands/unbootstrap/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
962
|
+
_See code: [src/commands/unbootstrap/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/unbootstrap/index.ts)_
|
|
900
963
|
|
|
901
964
|
## `hereya undeploy`
|
|
902
965
|
|
|
@@ -921,7 +984,7 @@ EXAMPLES
|
|
|
921
984
|
$ hereya undeploy
|
|
922
985
|
```
|
|
923
986
|
|
|
924
|
-
_See code: [src/commands/undeploy/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
987
|
+
_See code: [src/commands/undeploy/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/undeploy/index.ts)_
|
|
925
988
|
|
|
926
989
|
## `hereya up`
|
|
927
990
|
|
|
@@ -948,7 +1011,7 @@ EXAMPLES
|
|
|
948
1011
|
$ hereya up
|
|
949
1012
|
```
|
|
950
1013
|
|
|
951
|
-
_See code: [src/commands/up/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1014
|
+
_See code: [src/commands/up/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/up/index.ts)_
|
|
952
1015
|
|
|
953
1016
|
## `hereya workspace create NAME`
|
|
954
1017
|
|
|
@@ -973,7 +1036,7 @@ EXAMPLES
|
|
|
973
1036
|
$ hereya workspace create dev
|
|
974
1037
|
```
|
|
975
1038
|
|
|
976
|
-
_See code: [src/commands/workspace/create/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1039
|
+
_See code: [src/commands/workspace/create/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/create/index.ts)_
|
|
977
1040
|
|
|
978
1041
|
## `hereya workspace delete NAME`
|
|
979
1042
|
|
|
@@ -993,7 +1056,7 @@ EXAMPLES
|
|
|
993
1056
|
$ hereya workspace delete dev
|
|
994
1057
|
```
|
|
995
1058
|
|
|
996
|
-
_See code: [src/commands/workspace/delete/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1059
|
+
_See code: [src/commands/workspace/delete/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/delete/index.ts)_
|
|
997
1060
|
|
|
998
1061
|
## `hereya workspace env [NAME]`
|
|
999
1062
|
|
|
@@ -1019,7 +1082,7 @@ EXAMPLES
|
|
|
1019
1082
|
$ hereya workspace env myEnv -w dev
|
|
1020
1083
|
```
|
|
1021
1084
|
|
|
1022
|
-
_See code: [src/commands/workspace/env/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1085
|
+
_See code: [src/commands/workspace/env/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/env/index.ts)_
|
|
1023
1086
|
|
|
1024
1087
|
## `hereya workspace env set`
|
|
1025
1088
|
|
|
@@ -1043,7 +1106,7 @@ EXAMPLES
|
|
|
1043
1106
|
$ hereya workspace env set -w my-workspace -n myVar -v my-value -i aws -s
|
|
1044
1107
|
```
|
|
1045
1108
|
|
|
1046
|
-
_See code: [src/commands/workspace/env/set/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1109
|
+
_See code: [src/commands/workspace/env/set/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/env/set/index.ts)_
|
|
1047
1110
|
|
|
1048
1111
|
## `hereya workspace env unset`
|
|
1049
1112
|
|
|
@@ -1064,7 +1127,7 @@ EXAMPLES
|
|
|
1064
1127
|
$ hereya workspace env unset -w my-workspace -n myVar
|
|
1065
1128
|
```
|
|
1066
1129
|
|
|
1067
|
-
_See code: [src/commands/workspace/env/unset/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1130
|
+
_See code: [src/commands/workspace/env/unset/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/env/unset/index.ts)_
|
|
1068
1131
|
|
|
1069
1132
|
## `hereya workspace install PACKAGE`
|
|
1070
1133
|
|
|
@@ -1091,7 +1154,7 @@ EXAMPLES
|
|
|
1091
1154
|
$ hereya workspace install hereya/aws-cognito
|
|
1092
1155
|
```
|
|
1093
1156
|
|
|
1094
|
-
_See code: [src/commands/workspace/install/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1157
|
+
_See code: [src/commands/workspace/install/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/install/index.ts)_
|
|
1095
1158
|
|
|
1096
1159
|
## `hereya workspace list`
|
|
1097
1160
|
|
|
@@ -1115,7 +1178,7 @@ EXAMPLES
|
|
|
1115
1178
|
$ hereya workspace list --org personal
|
|
1116
1179
|
```
|
|
1117
1180
|
|
|
1118
|
-
_See code: [src/commands/workspace/list/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1181
|
+
_See code: [src/commands/workspace/list/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/list/index.ts)_
|
|
1119
1182
|
|
|
1120
1183
|
## `hereya workspace set-profile PROFILE`
|
|
1121
1184
|
|
|
@@ -1139,7 +1202,7 @@ EXAMPLES
|
|
|
1139
1202
|
$ hereya workspace set-profile prod-profile -w production
|
|
1140
1203
|
```
|
|
1141
1204
|
|
|
1142
|
-
_See code: [src/commands/workspace/set-profile/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1205
|
+
_See code: [src/commands/workspace/set-profile/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/set-profile/index.ts)_
|
|
1143
1206
|
|
|
1144
1207
|
## `hereya workspace uninstall PACKAGE`
|
|
1145
1208
|
|
|
@@ -1166,5 +1229,5 @@ EXAMPLES
|
|
|
1166
1229
|
$ hereya workspace uninstall hereya/aws-cognito
|
|
1167
1230
|
```
|
|
1168
1231
|
|
|
1169
|
-
_See code: [src/commands/workspace/uninstall/index.ts](https://github.com/hereya/hereya-cli/blob/v0.
|
|
1232
|
+
_See code: [src/commands/workspace/uninstall/index.ts](https://github.com/hereya/hereya-cli/blob/v0.64.1/src/commands/workspace/uninstall/index.ts)_
|
|
1170
1233
|
<!-- commandsstop -->
|
|
@@ -12,6 +12,9 @@ export class CloudBackend {
|
|
|
12
12
|
if (input.parameters) {
|
|
13
13
|
formData.append('parameters', JSON.stringify(input.parameters));
|
|
14
14
|
}
|
|
15
|
+
if (input.version) {
|
|
16
|
+
formData.append('version', input.version);
|
|
17
|
+
}
|
|
15
18
|
const response = await fetch(`${this.config.url}/api/workspaces/${encodeURIComponent(input.workspace)}/packages`, {
|
|
16
19
|
body: formData,
|
|
17
20
|
headers: {
|
package/dist/backend/common.d.ts
CHANGED
package/dist/backend/file.js
CHANGED
|
@@ -33,7 +33,7 @@ export class FileBackend {
|
|
|
33
33
|
...workspace.packages,
|
|
34
34
|
[input.package]: {
|
|
35
35
|
parameters: input.parameters,
|
|
36
|
-
version: '',
|
|
36
|
+
version: input.version || '',
|
|
37
37
|
},
|
|
38
38
|
};
|
|
39
39
|
const newEnv = Object.fromEntries(Object.entries(input.env).map(([key, value]) => [key, `${input.infra}:${value}`]));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class DockerRun extends Command {
|
|
3
|
+
static args: {
|
|
4
|
+
image: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
chdir: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
port: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
workspace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
};
|
|
13
|
+
static strict: boolean;
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
2
|
+
import spawn from 'cross-spawn';
|
|
3
|
+
import { getBackend } from '../../../backend/index.js';
|
|
4
|
+
import { ensureDockerNetwork } from '../../../infrastructure/local.js';
|
|
5
|
+
import { getConfigManager } from '../../../lib/config/index.js';
|
|
6
|
+
import { getEnvManager } from '../../../lib/env/index.js';
|
|
7
|
+
import { getProfileFromWorkspace } from '../../../lib/profile-utils.js';
|
|
8
|
+
import { runShell } from '../../../lib/shell.js';
|
|
9
|
+
import { validateDevelopmentWorkspace } from '../../../lib/workspace-validation.js';
|
|
10
|
+
export default class DockerRun extends Command {
|
|
11
|
+
static args = {
|
|
12
|
+
image: Args.string({ description: 'Docker image to run', required: true }),
|
|
13
|
+
};
|
|
14
|
+
static description = 'Run a Docker container with hereya env vars injected as -e flags.';
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> <%= command.id %> myapp:latest',
|
|
17
|
+
'<%= config.bin %> <%= command.id %> -w staging myapp:latest',
|
|
18
|
+
'<%= config.bin %> <%= command.id %> -p 3000 myapp:latest',
|
|
19
|
+
'<%= config.bin %> <%= command.id %> myapp:latest -- --rm -v ./data:/data',
|
|
20
|
+
];
|
|
21
|
+
static flags = {
|
|
22
|
+
chdir: Flags.string({
|
|
23
|
+
description: 'directory to run command in',
|
|
24
|
+
required: false,
|
|
25
|
+
}),
|
|
26
|
+
port: Flags.integer({
|
|
27
|
+
char: 'p',
|
|
28
|
+
default: 8080,
|
|
29
|
+
description: 'port to forward and set as PORT env var (default: 8080)',
|
|
30
|
+
required: false,
|
|
31
|
+
}),
|
|
32
|
+
workspace: Flags.string({
|
|
33
|
+
char: 'w',
|
|
34
|
+
description: 'name of the workspace to use',
|
|
35
|
+
required: false,
|
|
36
|
+
}),
|
|
37
|
+
};
|
|
38
|
+
static strict = false;
|
|
39
|
+
async run() {
|
|
40
|
+
const { args, argv, flags } = await this.parse(DockerRun);
|
|
41
|
+
const projectRootDir = flags.chdir || process.env.HEREYA_PROJECT_ROOT_DIR;
|
|
42
|
+
const configManager = getConfigManager();
|
|
43
|
+
const loadConfigOutput = await configManager.loadConfig({ projectRootDir });
|
|
44
|
+
if (!loadConfigOutput.found) {
|
|
45
|
+
this.warn(`Project not initialized. Run 'hereya init' first.`);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const { config } = loadConfigOutput;
|
|
49
|
+
let { workspace } = flags;
|
|
50
|
+
if (!workspace) {
|
|
51
|
+
workspace = config.workspace;
|
|
52
|
+
}
|
|
53
|
+
if (!workspace) {
|
|
54
|
+
this.error('you must specify a workspace to run the command in');
|
|
55
|
+
}
|
|
56
|
+
const backend = await getBackend();
|
|
57
|
+
const validation = await validateDevelopmentWorkspace(workspace, backend, 'docker run', config.project);
|
|
58
|
+
if (!validation.isValid) {
|
|
59
|
+
this.error(validation.message);
|
|
60
|
+
}
|
|
61
|
+
const profile = await getProfileFromWorkspace(backend, workspace, config.project);
|
|
62
|
+
const envManager = getEnvManager();
|
|
63
|
+
const getProjectEnvOutput = await envManager.getProjectEnv({
|
|
64
|
+
profile,
|
|
65
|
+
projectRootDir,
|
|
66
|
+
workspace,
|
|
67
|
+
});
|
|
68
|
+
if (!getProjectEnvOutput.success) {
|
|
69
|
+
this.error(getProjectEnvOutput.reason);
|
|
70
|
+
}
|
|
71
|
+
const { env } = getProjectEnvOutput;
|
|
72
|
+
// Apply HEREYA_DOCKER_ overrides: strip prefix and override the base key
|
|
73
|
+
const dockerPrefix = 'HEREYA_DOCKER_';
|
|
74
|
+
for (const key of Object.keys(env)) {
|
|
75
|
+
if (key.startsWith(dockerPrefix)) {
|
|
76
|
+
const targetKey = key.slice(dockerPrefix.length);
|
|
77
|
+
env[targetKey] = env[key];
|
|
78
|
+
delete env[key];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Determine port: existing PORT from env takes precedence, otherwise use --port flag
|
|
82
|
+
const port = env.PORT || String(flags.port);
|
|
83
|
+
env.PORT = port;
|
|
84
|
+
const { image } = args;
|
|
85
|
+
// Build -e flags from env
|
|
86
|
+
const envFlags = [];
|
|
87
|
+
for (const [key, value] of Object.entries(env)) {
|
|
88
|
+
envFlags.push('-e', `${key}=${value}`);
|
|
89
|
+
}
|
|
90
|
+
// Extra args after -- go before the image as docker run flags
|
|
91
|
+
const extraArgs = argv.slice(1);
|
|
92
|
+
// Ensure hereya docker network exists and attach container to it
|
|
93
|
+
const networkName = await ensureDockerNetwork(runShell);
|
|
94
|
+
// docker run --network <net> -p <port>:<port> [extraArgs] -e K=V ... <image>
|
|
95
|
+
const dockerArgs = ['--network', networkName, '-p', `${port}:${port}`, ...extraArgs, ...envFlags, image];
|
|
96
|
+
this.log(`Running docker container "${image}" with ${Object.keys(env).length} env var(s) on port ${port}...`);
|
|
97
|
+
// Use spawn directly without shell to avoid special characters in env values
|
|
98
|
+
// being interpreted by /bin/sh (e.g. parentheses, brackets, semicolons)
|
|
99
|
+
const exitCode = await new Promise((resolve, reject) => {
|
|
100
|
+
const child = spawn('docker', ['run', ...dockerArgs], {
|
|
101
|
+
cwd: projectRootDir,
|
|
102
|
+
stdio: 'inherit',
|
|
103
|
+
});
|
|
104
|
+
child.on('error', reject);
|
|
105
|
+
child.on('close', (code) => resolve(code));
|
|
106
|
+
});
|
|
107
|
+
if (exitCode !== 0) {
|
|
108
|
+
this.error(`Docker run failed with exit code ${exitCode}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class FlowDockerRun extends Command {
|
|
3
|
+
static args: {
|
|
4
|
+
image: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
chdir: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
pin: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
port: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
};
|
|
14
|
+
static strict: boolean;
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
2
|
+
import { getBackend } from '../../../../backend/index.js';
|
|
3
|
+
import { getConfigManager } from '../../../../lib/config/index.js';
|
|
4
|
+
import { buildFlowWorkspaceName } from '../../../../lib/flow-utils.js';
|
|
5
|
+
import { validateFlowCommand } from '../../../../lib/workspace-validation.js';
|
|
6
|
+
import DockerRun from '../../../docker/run/index.js';
|
|
7
|
+
export default class FlowDockerRun extends Command {
|
|
8
|
+
static args = {
|
|
9
|
+
image: Args.string({ description: 'Docker image to run', required: true }),
|
|
10
|
+
};
|
|
11
|
+
static description = 'Run a Docker container with hereya env vars in a git branch-based workspace';
|
|
12
|
+
static examples = [
|
|
13
|
+
'<%= config.bin %> <%= command.id %> myapp:latest',
|
|
14
|
+
'<%= config.bin %> <%= command.id %> --profile staging myapp:latest',
|
|
15
|
+
'<%= config.bin %> <%= command.id %> --pin myapp:latest -- --rm',
|
|
16
|
+
];
|
|
17
|
+
static flags = {
|
|
18
|
+
chdir: Flags.string({
|
|
19
|
+
description: 'directory to run command in',
|
|
20
|
+
required: false,
|
|
21
|
+
}),
|
|
22
|
+
pin: Flags.boolean({
|
|
23
|
+
description: 'append git commit SHA to workspace name for commit-specific isolation',
|
|
24
|
+
required: false,
|
|
25
|
+
}),
|
|
26
|
+
port: Flags.integer({
|
|
27
|
+
char: 'p',
|
|
28
|
+
default: 8080,
|
|
29
|
+
description: 'port to forward and set as PORT env var (default: 8080)',
|
|
30
|
+
required: false,
|
|
31
|
+
}),
|
|
32
|
+
profile: Flags.string({
|
|
33
|
+
description: 'profile to use for the workspace (will be appended to workspace name)',
|
|
34
|
+
required: false,
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
static strict = false;
|
|
38
|
+
async run() {
|
|
39
|
+
const { argv, flags } = await this.parse(FlowDockerRun);
|
|
40
|
+
const projectRootDir = flags.chdir || process.env.HEREYA_PROJECT_ROOT_DIR;
|
|
41
|
+
const configManager = getConfigManager();
|
|
42
|
+
const loadConfigOutput = await configManager.loadConfig({ projectRootDir });
|
|
43
|
+
if (!loadConfigOutput.found) {
|
|
44
|
+
this.error("Project not initialized. Run 'hereya init' first.");
|
|
45
|
+
}
|
|
46
|
+
const workspaceName = await buildFlowWorkspaceName({
|
|
47
|
+
pin: flags.pin,
|
|
48
|
+
profile: flags.profile,
|
|
49
|
+
project: loadConfigOutput.config.project,
|
|
50
|
+
projectRootDir,
|
|
51
|
+
});
|
|
52
|
+
const backend = await getBackend();
|
|
53
|
+
const validation = await validateFlowCommand(workspaceName, backend);
|
|
54
|
+
if (!validation.isValid) {
|
|
55
|
+
this.error(validation.message);
|
|
56
|
+
}
|
|
57
|
+
const dockerRunArgs = ['--workspace', workspaceName];
|
|
58
|
+
if (flags.chdir)
|
|
59
|
+
dockerRunArgs.push('--chdir', flags.chdir);
|
|
60
|
+
if (flags.port !== 8080)
|
|
61
|
+
dockerRunArgs.push('--port', String(flags.port));
|
|
62
|
+
// Add all arguments (image and extra args after --)
|
|
63
|
+
const allArgs = argv;
|
|
64
|
+
dockerRunArgs.push('--', ...allArgs);
|
|
65
|
+
await DockerRun.run(dockerRunArgs);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -108,6 +108,7 @@ export default class WorkspaceInstall extends Command {
|
|
|
108
108
|
infra: metadata.infra,
|
|
109
109
|
package: ctx.provisionOutput.pkgName,
|
|
110
110
|
parameters: ctx.parameters,
|
|
111
|
+
version: ctx.provisionOutput.version,
|
|
111
112
|
workspace: flags.workspace,
|
|
112
113
|
});
|
|
113
114
|
if (!output.success) {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Logger } from '../lib/log.js';
|
|
2
|
+
import { runShell } from '../lib/shell.js';
|
|
1
3
|
import { DeployInput, DeployOutput, Infrastructure, ProvisionInput, ProvisionOutput, SaveEnvInput, SaveEnvOutput, StoreEnvInput, StoreEnvOutput, UndeployInput, UndeployOutput, UnstoreEnvInput, UnstoreEnvOutput, UploadStateFileInput, UploadStateFileOutput } from './common.js';
|
|
2
4
|
export declare class LocalInfrastructure implements Infrastructure {
|
|
3
5
|
bootstrap(): Promise<void>;
|
|
@@ -15,4 +17,6 @@ export declare class LocalInfrastructure implements Infrastructure {
|
|
|
15
17
|
undeploy(input: UndeployInput): Promise<UndeployOutput>;
|
|
16
18
|
unstoreEnv(_: UnstoreEnvInput): Promise<UnstoreEnvOutput>;
|
|
17
19
|
uploadStateFile(_: UploadStateFileInput): Promise<UploadStateFileOutput>;
|
|
20
|
+
private ensureDockerNetwork;
|
|
18
21
|
}
|
|
22
|
+
export declare function ensureDockerNetwork(shellFn: typeof runShell, logger?: Logger): Promise<string>;
|
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { getIac } from '../iac/index.js';
|
|
5
5
|
import { downloadPackage } from '../lib/package/index.js';
|
|
6
|
+
import { runShell } from '../lib/shell.js';
|
|
6
7
|
import { getPackageDownloadPath, } from './common.js';
|
|
7
8
|
export class LocalInfrastructure {
|
|
8
9
|
async bootstrap() {
|
|
@@ -17,6 +18,8 @@ export class LocalInfrastructure {
|
|
|
17
18
|
return this.provision(input);
|
|
18
19
|
}
|
|
19
20
|
async destroy(input) {
|
|
21
|
+
const networkName = process.env.HEREYA_DOCKER_NETWORK || 'hereya-docker-network';
|
|
22
|
+
input.parameters = { ...input.parameters, hereyaDockerNetwork: networkName };
|
|
20
23
|
const destPath = await getPackageDownloadPath({ id: input.id, version: input.version });
|
|
21
24
|
const downloadPath = await downloadPackage(input.pkgUrl, destPath);
|
|
22
25
|
const iac$ = getIac({ type: input.iacType });
|
|
@@ -42,6 +45,8 @@ export class LocalInfrastructure {
|
|
|
42
45
|
return { env: output.env, success: true };
|
|
43
46
|
}
|
|
44
47
|
async provision(input) {
|
|
48
|
+
const hereyaDockerNetwork = await this.ensureDockerNetwork(input.logger);
|
|
49
|
+
input.parameters = { ...input.parameters, hereyaDockerNetwork };
|
|
45
50
|
const destPath = await getPackageDownloadPath({ id: input.id, version: input.version });
|
|
46
51
|
const downloadPath = await downloadPackage(input.pkgUrl, destPath);
|
|
47
52
|
const iac$ = getIac({ type: input.iacType });
|
|
@@ -91,4 +96,23 @@ export class LocalInfrastructure {
|
|
|
91
96
|
uploadStateFile(_) {
|
|
92
97
|
throw new Error(`Uploading state file is not supported for local infrastructure`);
|
|
93
98
|
}
|
|
99
|
+
async ensureDockerNetwork(logger) {
|
|
100
|
+
return ensureDockerNetwork(runShell, logger);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export async function ensureDockerNetwork(shellFn, logger) {
|
|
104
|
+
const networkName = process.env.HEREYA_DOCKER_NETWORK || 'hereya-docker-network';
|
|
105
|
+
try {
|
|
106
|
+
await shellFn('docker', ['network', 'inspect', networkName], { logger });
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
try {
|
|
110
|
+
await shellFn('docker', ['network', 'create', networkName], { logger });
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Network was likely created by a concurrent call; verify it exists
|
|
114
|
+
await shellFn('docker', ['network', 'inspect', networkName], { logger });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return networkName;
|
|
94
118
|
}
|
|
@@ -94,7 +94,8 @@ function parsePackageSpec(spec) {
|
|
|
94
94
|
return { packageName: spec };
|
|
95
95
|
}
|
|
96
96
|
const [, packageName, version] = match;
|
|
97
|
-
|
|
97
|
+
// Treat "latest" as no specific version - it's not a valid git tag
|
|
98
|
+
return { packageName, version: version === 'latest' ? undefined : version };
|
|
98
99
|
}
|
|
99
100
|
// Helper function to try cloud resolution
|
|
100
101
|
async function tryCloudResolution(input) {
|
package/oclif.manifest.json
CHANGED
|
@@ -1082,6 +1082,68 @@
|
|
|
1082
1082
|
"index.js"
|
|
1083
1083
|
]
|
|
1084
1084
|
},
|
|
1085
|
+
"docker:run": {
|
|
1086
|
+
"aliases": [],
|
|
1087
|
+
"args": {
|
|
1088
|
+
"image": {
|
|
1089
|
+
"description": "Docker image to run",
|
|
1090
|
+
"name": "image",
|
|
1091
|
+
"required": true
|
|
1092
|
+
}
|
|
1093
|
+
},
|
|
1094
|
+
"description": "Run a Docker container with hereya env vars injected as -e flags.",
|
|
1095
|
+
"examples": [
|
|
1096
|
+
"<%= config.bin %> <%= command.id %> myapp:latest",
|
|
1097
|
+
"<%= config.bin %> <%= command.id %> -w staging myapp:latest",
|
|
1098
|
+
"<%= config.bin %> <%= command.id %> -p 3000 myapp:latest",
|
|
1099
|
+
"<%= config.bin %> <%= command.id %> myapp:latest -- --rm -v ./data:/data"
|
|
1100
|
+
],
|
|
1101
|
+
"flags": {
|
|
1102
|
+
"chdir": {
|
|
1103
|
+
"description": "directory to run command in",
|
|
1104
|
+
"name": "chdir",
|
|
1105
|
+
"required": false,
|
|
1106
|
+
"hasDynamicHelp": false,
|
|
1107
|
+
"multiple": false,
|
|
1108
|
+
"type": "option"
|
|
1109
|
+
},
|
|
1110
|
+
"port": {
|
|
1111
|
+
"char": "p",
|
|
1112
|
+
"description": "port to forward and set as PORT env var (default: 8080)",
|
|
1113
|
+
"name": "port",
|
|
1114
|
+
"required": false,
|
|
1115
|
+
"default": 8080,
|
|
1116
|
+
"hasDynamicHelp": false,
|
|
1117
|
+
"multiple": false,
|
|
1118
|
+
"type": "option"
|
|
1119
|
+
},
|
|
1120
|
+
"workspace": {
|
|
1121
|
+
"char": "w",
|
|
1122
|
+
"description": "name of the workspace to use",
|
|
1123
|
+
"name": "workspace",
|
|
1124
|
+
"required": false,
|
|
1125
|
+
"hasDynamicHelp": false,
|
|
1126
|
+
"multiple": false,
|
|
1127
|
+
"type": "option"
|
|
1128
|
+
}
|
|
1129
|
+
},
|
|
1130
|
+
"hasDynamicHelp": false,
|
|
1131
|
+
"hiddenAliases": [],
|
|
1132
|
+
"id": "docker:run",
|
|
1133
|
+
"pluginAlias": "hereya-cli",
|
|
1134
|
+
"pluginName": "hereya-cli",
|
|
1135
|
+
"pluginType": "core",
|
|
1136
|
+
"strict": false,
|
|
1137
|
+
"enableJsonFlag": false,
|
|
1138
|
+
"isESM": true,
|
|
1139
|
+
"relativePath": [
|
|
1140
|
+
"dist",
|
|
1141
|
+
"commands",
|
|
1142
|
+
"docker",
|
|
1143
|
+
"run",
|
|
1144
|
+
"index.js"
|
|
1145
|
+
]
|
|
1146
|
+
},
|
|
1085
1147
|
"env:set": {
|
|
1086
1148
|
"aliases": [],
|
|
1087
1149
|
"args": {
|
|
@@ -1941,6 +2003,74 @@
|
|
|
1941
2003
|
"index.js"
|
|
1942
2004
|
]
|
|
1943
2005
|
},
|
|
2006
|
+
"flow:docker:run": {
|
|
2007
|
+
"aliases": [],
|
|
2008
|
+
"args": {
|
|
2009
|
+
"image": {
|
|
2010
|
+
"description": "Docker image to run",
|
|
2011
|
+
"name": "image",
|
|
2012
|
+
"required": true
|
|
2013
|
+
}
|
|
2014
|
+
},
|
|
2015
|
+
"description": "Run a Docker container with hereya env vars in a git branch-based workspace",
|
|
2016
|
+
"examples": [
|
|
2017
|
+
"<%= config.bin %> <%= command.id %> myapp:latest",
|
|
2018
|
+
"<%= config.bin %> <%= command.id %> --profile staging myapp:latest",
|
|
2019
|
+
"<%= config.bin %> <%= command.id %> --pin myapp:latest -- --rm"
|
|
2020
|
+
],
|
|
2021
|
+
"flags": {
|
|
2022
|
+
"chdir": {
|
|
2023
|
+
"description": "directory to run command in",
|
|
2024
|
+
"name": "chdir",
|
|
2025
|
+
"required": false,
|
|
2026
|
+
"hasDynamicHelp": false,
|
|
2027
|
+
"multiple": false,
|
|
2028
|
+
"type": "option"
|
|
2029
|
+
},
|
|
2030
|
+
"pin": {
|
|
2031
|
+
"description": "append git commit SHA to workspace name for commit-specific isolation",
|
|
2032
|
+
"name": "pin",
|
|
2033
|
+
"required": false,
|
|
2034
|
+
"allowNo": false,
|
|
2035
|
+
"type": "boolean"
|
|
2036
|
+
},
|
|
2037
|
+
"port": {
|
|
2038
|
+
"char": "p",
|
|
2039
|
+
"description": "port to forward and set as PORT env var (default: 8080)",
|
|
2040
|
+
"name": "port",
|
|
2041
|
+
"required": false,
|
|
2042
|
+
"default": 8080,
|
|
2043
|
+
"hasDynamicHelp": false,
|
|
2044
|
+
"multiple": false,
|
|
2045
|
+
"type": "option"
|
|
2046
|
+
},
|
|
2047
|
+
"profile": {
|
|
2048
|
+
"description": "profile to use for the workspace (will be appended to workspace name)",
|
|
2049
|
+
"name": "profile",
|
|
2050
|
+
"required": false,
|
|
2051
|
+
"hasDynamicHelp": false,
|
|
2052
|
+
"multiple": false,
|
|
2053
|
+
"type": "option"
|
|
2054
|
+
}
|
|
2055
|
+
},
|
|
2056
|
+
"hasDynamicHelp": false,
|
|
2057
|
+
"hiddenAliases": [],
|
|
2058
|
+
"id": "flow:docker:run",
|
|
2059
|
+
"pluginAlias": "hereya-cli",
|
|
2060
|
+
"pluginName": "hereya-cli",
|
|
2061
|
+
"pluginType": "core",
|
|
2062
|
+
"strict": false,
|
|
2063
|
+
"enableJsonFlag": false,
|
|
2064
|
+
"isESM": true,
|
|
2065
|
+
"relativePath": [
|
|
2066
|
+
"dist",
|
|
2067
|
+
"commands",
|
|
2068
|
+
"flow",
|
|
2069
|
+
"docker",
|
|
2070
|
+
"run",
|
|
2071
|
+
"index.js"
|
|
2072
|
+
]
|
|
2073
|
+
},
|
|
1944
2074
|
"workspace:env:set": {
|
|
1945
2075
|
"aliases": [],
|
|
1946
2076
|
"args": {},
|
|
@@ -2057,5 +2187,5 @@
|
|
|
2057
2187
|
]
|
|
2058
2188
|
}
|
|
2059
2189
|
},
|
|
2060
|
-
"version": "0.
|
|
2190
|
+
"version": "0.64.1"
|
|
2061
2191
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hereya-cli",
|
|
3
3
|
"description": "Infrastructure as Package",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.64.1",
|
|
5
5
|
"author": "Hereya Developers",
|
|
6
6
|
"bin": {
|
|
7
7
|
"hereya": "./bin/run.js"
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"@oclif/plugin-help": "^6.2.25",
|
|
21
21
|
"@oclif/plugin-plugins": "^5.4.31",
|
|
22
22
|
"chalk": "^5.5.0",
|
|
23
|
+
"cross-spawn": "^7.0.6",
|
|
23
24
|
"glob": "^11.0.1",
|
|
24
25
|
"ignore": "^7.0.3",
|
|
25
26
|
"keytar": "^7.9.0",
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
"@oclif/prettier-config": "^0.2.1",
|
|
38
39
|
"@oclif/test": "^4.1.9",
|
|
39
40
|
"@types/chai": "^5.0.1",
|
|
41
|
+
"@types/cross-spawn": "^6.0.6",
|
|
40
42
|
"@types/jsonwebtoken": "^9.0.9",
|
|
41
43
|
"@types/marked-terminal": "^6.1.1",
|
|
42
44
|
"@types/mocha": "^10.0.10",
|