@codemarc/blt 1.8.3 → 1.8.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.
Files changed (59) hide show
  1. package/README.md +18 -8
  2. package/dist/blt +19 -19
  3. package/dist/blt.js.map +1 -1
  4. package/dist/commands/app/data.d.ts +6 -0
  5. package/dist/commands/app/data.d.ts.map +1 -1
  6. package/dist/commands/app/data.js +5 -0
  7. package/dist/commands/app/data.js.map +1 -1
  8. package/dist/commands/app/env-check.d.ts +14 -8
  9. package/dist/commands/app/env-check.d.ts.map +1 -1
  10. package/dist/commands/app/env-check.js +51 -21
  11. package/dist/commands/app/env-check.js.map +1 -1
  12. package/dist/commands/app/env-decrypt.d.ts +9 -0
  13. package/dist/commands/app/env-decrypt.d.ts.map +1 -0
  14. package/dist/commands/app/env-decrypt.js +37 -0
  15. package/dist/commands/app/env-decrypt.js.map +1 -0
  16. package/dist/commands/app/pos.d.ts +2 -1
  17. package/dist/commands/app/pos.d.ts.map +1 -1
  18. package/dist/commands/app/pos.js +35 -33
  19. package/dist/commands/app/pos.js.map +1 -1
  20. package/dist/commands/app/site-env.d.ts +12 -0
  21. package/dist/commands/app/site-env.d.ts.map +1 -0
  22. package/dist/commands/app/site-env.js +53 -0
  23. package/dist/commands/app/site-env.js.map +1 -0
  24. package/dist/commands/app.d.ts.map +1 -1
  25. package/dist/commands/app.js +37 -11
  26. package/dist/commands/app.js.map +1 -1
  27. package/dist/commands/env/get.d.ts +3 -2
  28. package/dist/commands/env/get.d.ts.map +1 -1
  29. package/dist/commands/env/get.js +13 -41
  30. package/dist/commands/env/get.js.map +1 -1
  31. package/dist/commands/env/list.d.ts +8 -0
  32. package/dist/commands/env/list.d.ts.map +1 -0
  33. package/dist/commands/env/list.js +21 -0
  34. package/dist/commands/env/list.js.map +1 -0
  35. package/dist/commands/env.d.ts.map +1 -1
  36. package/dist/commands/env.js +13 -4
  37. package/dist/commands/env.js.map +1 -1
  38. package/dist/commands/init/script.d.ts +1 -0
  39. package/dist/commands/init/script.d.ts.map +1 -1
  40. package/dist/commands/init/script.js +33 -11
  41. package/dist/commands/init/script.js.map +1 -1
  42. package/dist/commands/init.d.ts.map +1 -1
  43. package/dist/commands/init.js +6 -0
  44. package/dist/commands/init.js.map +1 -1
  45. package/dist/commands/show/env.d.ts.map +1 -1
  46. package/dist/commands/show/env.js +7 -25
  47. package/dist/commands/show/env.js.map +1 -1
  48. package/dist/commands/workflow.d.ts.map +1 -1
  49. package/dist/commands/workflow.js +1 -7
  50. package/dist/commands/workflow.js.map +1 -1
  51. package/dist/lib/github.d.ts +17 -0
  52. package/dist/lib/github.d.ts.map +1 -0
  53. package/dist/lib/github.js +53 -0
  54. package/dist/lib/github.js.map +1 -0
  55. package/dist/lib/repositories.d.ts +1 -0
  56. package/dist/lib/repositories.d.ts.map +1 -1
  57. package/dist/lib/repositories.js +30 -14
  58. package/dist/lib/repositories.js.map +1 -1
  59. package/package.json +10 -10
package/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
  - **Bucket**: Supabase storage — list buckets, list/upload/download files, get URLs
19
19
  - **Workflow**: List, show, delete, reload, and deploy GitHub Actions workflows (requires `gh`)
20
20
  - **Show**: Schema info, row counts, env vars, DB version, repo list
21
- - **Env**: Decrypt trailz `.trailz/env/.env.<name>.bin` to `.env` via smash (`blt env get`; expands `$VAR` by default; requires `SMASH_KEY`)
21
+ - **Env**: Decrypt trailz `.trailz/env/env.<name>.bin` to `.env` via smash (`blt env get`; expands `$VAR` by default; requires `SMASH_KEY`)
22
22
  - **Spin**: Manage DigitalOcean droplets and DNS for BLT test environments
23
23
  - **App**: Developer-triggered POS deployment and test data refresh workflows
24
24
  - **Cleanup**: Remove generated SQL/instance files, clean infrequently used YAML tags
@@ -429,15 +429,16 @@ blt deploy sql ./migrations/001_init.sql
429
429
 
430
430
  The `app` namespace wraps developer on-demand workflows for BLT test environments.
431
431
 
432
- ### `blt app pos --branch <branch> --env <env> <target>`
432
+ ### `blt app pos <target> [--branch <branch>] [--env <env>]`
433
433
 
434
- Build and deploy POS to a configured test target.
434
+ Build and deploy POS to a configured test target. Uses `deploy/sites/<target>.bltcore.com` and the site env bundle (`BLT_ENV_NAME` from `.trailz/env/env.<name>.bin`). Writes `app/.dm.env` from the same bundle, renders nginx templates when present, then deploys via SSH/SCP.
435
435
 
436
436
  ```bash
437
- blt app pos --branch laf-test --env test-laf test1
437
+ blt app pos test1 --branch laf-test
438
+ ./regen.sh # same flow from deploy/sites/test1.bltcore.com (default branch laf-test)
438
439
  ```
439
440
 
440
- The first implementation uses the existing `deploy/sites/test1.bltcore.com` layout and deploys through SSH/SCP to the target alias.
441
+ `--env` is optional when it matches `BLT_ENV_NAME` in the site bundle. `--branch` defaults to `laf-test`.
441
442
 
442
443
  ### `blt app data refresh --from <source-env> --to <target-env>`
443
444
 
@@ -447,7 +448,16 @@ Pull a data snapshot from one environment and apply it to another.
447
448
  blt app data refresh --from laf --to test-laf
448
449
  ```
449
450
 
450
- This command uses `.trailz/env/.env.<name>.bin` bundles in the **current working directory** (for example a deploy site checkout) and the existing `blt data pull` / `blt data apply` implementation. Snapshots default to `<cwd>/snapshots/` in **toon** format (override with `--out` / `--format`).
451
+ This command uses `.trailz/env/env.<name>.bin` bundles in the **current working directory** (for example a deploy site checkout) and the existing `blt data pull` / `blt data apply` implementation. Snapshots default to `<cwd>/data-snapshots/` in **toon** format (override with `--out` / `--format`).
452
+
453
+ ### `blt app data remove <instance>`
454
+
455
+ Delete all stamped snapshot runs for an instance under the snapshot base (default `<cwd>/data-snapshots/<instance>/`). No env bundle required.
456
+
457
+ ```bash
458
+ blt app data remove laf
459
+ blt app data remove laf --dry-run
460
+ ```
451
461
 
452
462
  ---
453
463
 
@@ -959,14 +969,14 @@ blt spin setup test-laf --user root
959
969
 
960
970
  ### `blt env get <name>`
961
971
 
962
- Decrypt using `smash -n`. Ciphertext must be at `.trailz/env/.env.<name>.bin`; the CLI invokes smash with **`.env.<name>` (no `.bin`)** — that matches `@codemarc/smashdata`, which reads `${path}.bin` for decrypt. Set **`SMASH_KEY`** in your environment (same as when you encrypted). Writes plaintext to `.env` in the current directory. **`$VAR` references in the trailz file are expanded by default** (e.g. `SUPABASE_URL=https://$SUPABASE_PROJECT_REF.supabase.co`); use `--no-expand` to keep references verbatim.
972
+ Decrypt using `smash -n`. Ciphertext must be at `.trailz/env/env.<name>.bin`; the CLI invokes smash with **`env.<name>` (no `.bin`)** — that matches `@codemarc/smashdata`, which reads `${path}.bin` for decrypt. Set **`SMASH_KEY`** in your environment (same as when you encrypted). Writes plaintext to `.env` in the current directory. **`$VAR` references in the trailz file are expanded by default** (e.g. `SUPABASE_URL=https://$SUPABASE_PROJECT_REF.supabase.co`); use `--no-expand` to keep references verbatim.
963
973
 
964
974
  ```bash
965
975
  blt env get laf
966
976
  blt env get bae --no-expand
967
977
  ```
968
978
 
969
- Equivalent to `smash -n .trailz/env/.env.laf >.env` from the project root when `.trailz/env/.env.laf.bin` exists.
979
+ Equivalent to `smash -n .trailz/env/env.laf >.env` from the project root when `.trailz/env/env.laf.bin` exists.
970
980
 
971
981
  ---
972
982
 
package/dist/blt CHANGED
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env bun
2
2
  import { program } from "@caporal/core";
3
+ import appCommand from "./commands/app";
3
4
  import bucketCommand from "./commands/bucket";
4
5
  import buildCommand from "./commands/build";
6
+ import cleanupCommand from "./commands/cleanup";
7
+ // import dataCommand from "./commands/data";
5
8
  import deployCommand from "./commands/deploy";
9
+ import envCommand from "./commands/env";
6
10
  import imageCommand from "./commands/image";
7
11
  import initCommand from "./commands/init";
8
12
  import pdfCommand from "./commands/pdf";
9
- import versionCommand from "./commands/version";
10
13
  import showCommand from "./commands/show";
11
- import cleanupCommand from "./commands/cleanup";
12
- import workflowCommand from "./commands/workflow";
13
- import waiCommand from "./commands/wai";
14
- import templateCommand from "./commands/template";
15
- import envCommand from "./commands/env";
16
- import dataCommand from "./commands/data";
17
14
  import spinCommand from "./commands/spin";
18
- import appCommand from "./commands/app";
15
+ import templateCommand from "./commands/template";
16
+ import versionCommand from "./commands/version";
17
+ import waiCommand from "./commands/wai";
18
+ import workflowCommand from "./commands/workflow";
19
19
  import { join, dirname } from "node:path";
20
20
  import { readFileSync } from "node:fs";
21
21
  import { fileURLToPath } from "node:url";
@@ -29,22 +29,22 @@ export function getPackageVersion() {
29
29
  program.name("blt")
30
30
  .version(getPackageVersion())
31
31
  .description("BLT Core Cli");
32
+ appCommand(program);
33
+ bucketCommand(program);
34
+ buildCommand(program);
35
+ cleanupCommand(program);
36
+ // dataCommand(program);
37
+ deployCommand(program);
38
+ envCommand(program);
32
39
  imageCommand(program);
33
40
  initCommand(program);
34
41
  pdfCommand(program);
35
- versionCommand(program);
36
- buildCommand(program);
37
- deployCommand(program);
38
- bucketCommand(program);
39
42
  showCommand(program);
40
- cleanupCommand(program);
41
- workflowCommand(program);
42
- waiCommand(program);
43
- templateCommand(program);
44
- envCommand(program);
45
- dataCommand(program);
46
43
  spinCommand(program);
47
- appCommand(program);
44
+ templateCommand(program);
45
+ versionCommand(program);
46
+ waiCommand(program);
47
+ workflowCommand(program);
48
48
  // If no command is provided, show help
49
49
  const args = process.argv.slice(2);
50
50
  if (args.length === 0) {
package/dist/blt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"blt.js","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAG,IAAI,EAAE,cAAc,CAAC,CAAC;AAE/D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;KAC5B,WAAW,CAAC,cAAc,CAAC,CAAC;AAE5B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,UAAU,CAAC,OAAO,CAAC,CAAC;AAEtB,uCAAuC;AACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AACD,OAAO,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"blt.js","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,6CAA6C;AAC7C,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAG,IAAI,EAAE,cAAc,CAAC,CAAC;AAE/D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;KAC5B,WAAW,CAAC,cAAc,CAAC,CAAC;AAE5B,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,wBAAwB;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,eAAe,CAAC,OAAO,CAAC,CAAC;AAE3B,uCAAuC;AACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AACD,OAAO,CAAC,GAAG,EAAE,CAAC"}
@@ -22,8 +22,14 @@ export type AppDataRefreshOptions = {
22
22
  out: string;
23
23
  format: DataFormat;
24
24
  };
25
+ export type AppDataRemoveOptions = {
26
+ instance: string;
27
+ out: string;
28
+ dryRun: boolean;
29
+ };
25
30
  export declare function appDataPull(opts: AppDataPullOptions, logger: Logger): Promise<void>;
26
31
  export declare function appDataApply(opts: AppDataApplyOptions, logger: Logger): Promise<void>;
27
32
  export declare function appDataRefresh(opts: AppDataRefreshOptions, logger: Logger): Promise<void>;
33
+ export declare function appDataRemove(opts: AppDataRemoveOptions, logger: Logger): void;
28
34
  export {};
29
35
  //# sourceMappingURL=data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/commands/app/data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAO5C,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,eAAO,MAAM,uBAAuB,EAAE,UAAmB,CAAC;AAE1D,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,SAAgB,GAAG,MAAM,CAE3F;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;CACnB,CAAC;AAsBF,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB3F;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/F"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/commands/app/data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQ5C,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,eAAO,MAAM,uBAAuB,EAAE,UAAmB,CAAC;AAE1D,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,SAAgB,GAAG,MAAM,CAE3F;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CAChB,CAAC;AAsBF,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB3F;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG9E"}
@@ -1,6 +1,7 @@
1
1
  import { isAbsolute, resolve } from "node:path";
2
2
  import { dataPull } from "../data/pull";
3
3
  import { dataApply } from "../data/apply";
4
+ import { dataRemove } from "../data/remove";
4
5
  import { resolveLatestSnapshot } from "../data/helpers";
5
6
  import { ensureAppEnv, parseDotEnvContent, trailzEnvBasePath } from "./env-check";
6
7
  import { readCommand } from "./shell";
@@ -67,4 +68,8 @@ export async function appDataRefresh(opts, logger) {
67
68
  await appDataPull({ env: opts.from, out: opts.out, format: opts.format }, logger);
68
69
  await appDataApply({ env: opts.to, snapshotDir: "latest", out: opts.out, dryRun: false }, logger);
69
70
  }
71
+ export function appDataRemove(opts, logger) {
72
+ const outDir = resolveAppSnapshotOutDir(opts.out, process.cwd());
73
+ dataRemove(opts.instance, { outBaseDir: outDir, dryRun: opts.dryRun }, logger);
74
+ }
70
75
  //# sourceMappingURL=data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/commands/app/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/commands/app/data.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import type { Logger } from "@caporal/core";
2
2
  /** Canonical tag written by `blt env get` and recognized on preflight. */
3
3
  export declare const BLT_ENV_NAME_KEY = "BLT_ENV_NAME";
4
- /** Legacy / human-readable header (still parsed for older `.env` files). */
4
+ /** Human-readable header written by `blt env get` (parsed on preflight). */
5
5
  export declare const ENV_FROM_COMMENT_RE: RegExp;
6
+ /** Pre-rename trailz bundles (`.env.<name>.bin`); still parsed from older `.env` files. */
7
+ export declare const LEGACY_ENV_FROM_COMMENT_RE: RegExp;
6
8
  export type AppEnvSource = "local-dotenv" | "trailz-bundle";
7
9
  export type AppEnvAvailability = {
8
10
  envName: string;
@@ -12,14 +14,18 @@ export type AppEnvAvailability = {
12
14
  bundlePath: string;
13
15
  };
14
16
  export declare function trailzEnvBasePath(cwd: string, envName: string): string;
17
+ export declare function legacyTrailzEnvBasePath(cwd: string, envName: string): string;
15
18
  export declare function trailzEnvBundlePath(cwd: string, envName: string): string;
16
- /** Device-manager bundle name paired with a site env (e.g. test1 test1-dm). */
17
- export declare function siteDmEnvName(siteEnvName: string): string;
18
- export declare function appDmEnvPath(cwd: string): string;
19
+ export declare function legacyTrailzEnvBundlePath(cwd: string, envName: string): string;
20
+ /** Smash plaintext path + ciphertext path; prefers `env.<name>.bin`, falls back to legacy `.env.<name>.bin`. */
21
+ export declare function resolveTrailzEnvPaths(cwd: string, envName: string): {
22
+ basePath: string;
23
+ bundlePath: string;
24
+ } | null;
25
+ /** Names with a trailz ciphertext bundle in `cwd/.trailz/env/` (sorted). */
26
+ export declare function listTrailzEnvNames(cwd?: string): string[];
19
27
  export declare function dotEnvPathFor(cwd: string): string;
20
- /** Header prepended when decrypting trailz env bundles to `.env`. */
21
- export declare function formatEnvFileHeader(envName: string): string;
22
- /** Parse `BLT_ENV_NAME` or `# from .trailz/env/.env.<name>.bin` from a `.env` body. */
28
+ /** Parse `BLT_ENV_NAME` or `# from .trailz/env/env.<name>.bin` from a `.env` body. */
23
29
  export declare function parseEnvNameFromDotEnv(content: string): string | null;
24
30
  /** Parse assignment lines from `.env` text (skips comments and `BLT_ENV_NAME`). */
25
31
  export declare function parseDotEnvAssignments(content: string): Record<string, string>;
@@ -39,7 +45,7 @@ export declare function ensureAppEnv(opts: {
39
45
  envName: string;
40
46
  cwd: string;
41
47
  logger?: Logger;
42
- /** When true, skip cwd `.env` and require `.trailz/env/.env.<name>.bin` (app data workflows). */
48
+ /** When true, skip cwd `.env` and require `.trailz/env/env.<name>.bin` (app data workflows). */
43
49
  trailzOnly?: boolean;
44
50
  }): AppEnvAvailability;
45
51
  //# sourceMappingURL=env-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env-check.d.ts","sourceRoot":"","sources":["../../../src/commands/app/env-check.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,QAA6E,CAAC;AAE9G,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYrE;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9E;AAED,mEAAmE;AACnE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAED,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,CAAC,UAAwB,EACxC,MAAM,UAAO,GACX,MAAM,CAAC,UAAU,CAInB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,kBAAkB,CAsDrB"}
1
+ {"version":3,"file":"env-check.d.ts","sourceRoot":"","sources":["../../../src/commands/app/env-check.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,QAA2E,CAAC;AAE5G,2FAA2F;AAC3F,eAAO,MAAM,0BAA0B,QACoC,CAAC;AAM5E,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,gHAAgH;AAChH,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACb;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAcjD;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,EAAE,CAoBxE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAarE;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9E;AAED,mEAAmE;AACnE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAED,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,CAAC,UAAwB,EACxC,MAAM,UAAO,GACX,MAAM,CAAC,UAAU,CAInB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,kBAAkB,CAuDrB"}
@@ -1,37 +1,66 @@
1
- import { existsSync, readFileSync } from "node:fs";
1
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import dotenv from "dotenv";
4
4
  import dotenvExpand from "dotenv-expand";
5
5
  /** Canonical tag written by `blt env get` and recognized on preflight. */
6
6
  export const BLT_ENV_NAME_KEY = "BLT_ENV_NAME";
7
- /** Legacy / human-readable header (still parsed for older `.env` files). */
8
- export const ENV_FROM_COMMENT_RE = /^#\s*from\s+\.trailz\/env\/\.env\.([a-zA-Z0-9][a-zA-Z0-9._-]*)\.bin\s*$/m;
7
+ /** Human-readable header written by `blt env get` (parsed on preflight). */
8
+ export const ENV_FROM_COMMENT_RE = /^#\s*from\s+\.trailz\/env\/env\.([a-zA-Z0-9][a-zA-Z0-9._-]*)\.bin\s*$/m;
9
+ /** Pre-rename trailz bundles (`.env.<name>.bin`); still parsed from older `.env` files. */
10
+ export const LEGACY_ENV_FROM_COMMENT_RE = /^#\s*from\s+\.trailz\/env\/\.env\.([a-zA-Z0-9][a-zA-Z0-9._-]*)\.bin\s*$/m;
11
+ /** Ciphertext filenames under `.trailz/env/` (basename only). */
12
+ const TRAILZ_ENV_BUNDLE_RE = /^env\.([a-zA-Z0-9][a-zA-Z0-9._-]*)\.bin$/;
13
+ const LEGACY_TRAILZ_ENV_BUNDLE_RE = /^\.env\.([a-zA-Z0-9][a-zA-Z0-9._-]*)\.bin$/;
9
14
  export function trailzEnvBasePath(cwd, envName) {
15
+ return join(cwd, ".trailz", "env", `env.${envName}`);
16
+ }
17
+ export function legacyTrailzEnvBasePath(cwd, envName) {
10
18
  return join(cwd, ".trailz", "env", `.env.${envName}`);
11
19
  }
12
20
  export function trailzEnvBundlePath(cwd, envName) {
13
21
  return `${trailzEnvBasePath(cwd, envName)}.bin`;
14
22
  }
15
- /** Device-manager bundle name paired with a site env (e.g. test1 → test1-dm). */
16
- export function siteDmEnvName(siteEnvName) {
17
- return `${siteEnvName}-dm`;
23
+ export function legacyTrailzEnvBundlePath(cwd, envName) {
24
+ return `${legacyTrailzEnvBasePath(cwd, envName)}.bin`;
18
25
  }
19
- export function appDmEnvPath(cwd) {
20
- return join(cwd, "app", ".dm.env");
26
+ /** Smash plaintext path + ciphertext path; prefers `env.<name>.bin`, falls back to legacy `.env.<name>.bin`. */
27
+ export function resolveTrailzEnvPaths(cwd, envName) {
28
+ const newBase = trailzEnvBasePath(cwd, envName);
29
+ const newBin = `${newBase}.bin`;
30
+ if (existsSync(newBin)) {
31
+ return { basePath: newBase, bundlePath: newBin };
32
+ }
33
+ const legacyBase = legacyTrailzEnvBasePath(cwd, envName);
34
+ const legacyBin = `${legacyBase}.bin`;
35
+ if (existsSync(legacyBin)) {
36
+ return { basePath: legacyBase, bundlePath: legacyBin };
37
+ }
38
+ return null;
39
+ }
40
+ /** Names with a trailz ciphertext bundle in `cwd/.trailz/env/` (sorted). */
41
+ export function listTrailzEnvNames(cwd = process.cwd()) {
42
+ const envDir = join(cwd, ".trailz", "env");
43
+ if (!existsSync(envDir)) {
44
+ return [];
45
+ }
46
+ const names = new Set();
47
+ for (const file of readdirSync(envDir)) {
48
+ const current = TRAILZ_ENV_BUNDLE_RE.exec(file);
49
+ if (current) {
50
+ names.add(current[1]);
51
+ continue;
52
+ }
53
+ const legacy = LEGACY_TRAILZ_ENV_BUNDLE_RE.exec(file);
54
+ if (legacy) {
55
+ names.add(legacy[1]);
56
+ }
57
+ }
58
+ return [...names].sort();
21
59
  }
22
60
  export function dotEnvPathFor(cwd) {
23
61
  return join(cwd, ".env");
24
62
  }
25
- /** Header prepended when decrypting trailz env bundles to `.env`. */
26
- export function formatEnvFileHeader(envName) {
27
- return [
28
- `# BLT environment: ${envName}`,
29
- `# from .trailz/env/.env.${envName}.bin`,
30
- `${BLT_ENV_NAME_KEY}=${envName}`,
31
- "",
32
- ].join("\n");
33
- }
34
- /** Parse `BLT_ENV_NAME` or `# from .trailz/env/.env.<name>.bin` from a `.env` body. */
63
+ /** Parse `BLT_ENV_NAME` or `# from .trailz/env/env.<name>.bin` from a `.env` body. */
35
64
  export function parseEnvNameFromDotEnv(content) {
36
65
  for (const rawLine of content.split("\n")) {
37
66
  const line = rawLine.trim();
@@ -42,7 +71,7 @@ export function parseEnvNameFromDotEnv(content) {
42
71
  return value.length > 0 ? value : null;
43
72
  }
44
73
  }
45
- const commentMatch = ENV_FROM_COMMENT_RE.exec(content);
74
+ const commentMatch = ENV_FROM_COMMENT_RE.exec(content) ?? LEGACY_ENV_FROM_COMMENT_RE.exec(content);
46
75
  return commentMatch?.[1] ?? null;
47
76
  }
48
77
  /** Parse assignment lines from `.env` text (skips comments and `BLT_ENV_NAME`). */
@@ -91,7 +120,8 @@ export function parseDotEnvContent(content, baseEnv = process.env, expand = true
91
120
  * Accepts a loaded, tagged `.env` or a trailz ciphertext bundle (+ SMASH_KEY).
92
121
  */
93
122
  export function ensureAppEnv(opts) {
94
- const bundlePath = trailzEnvBundlePath(opts.cwd, opts.envName);
123
+ const resolved = resolveTrailzEnvPaths(opts.cwd, opts.envName);
124
+ const bundlePath = resolved?.bundlePath ?? trailzEnvBundlePath(opts.cwd, opts.envName);
95
125
  const dotEnvPath = dotEnvPathFor(opts.cwd);
96
126
  if (!opts.trailzOnly && existsSync(dotEnvPath)) {
97
127
  const content = readFileSync(dotEnvPath, "utf8");
@@ -114,7 +144,7 @@ export function ensureAppEnv(opts) {
114
144
  opts.logger?.info(`Local .env exists in ${opts.cwd} but is not tagged with ${BLT_ENV_NAME_KEY}; checking trailz bundle`);
115
145
  }
116
146
  }
117
- if (!existsSync(bundlePath)) {
147
+ if (!resolved) {
118
148
  throw new Error(`Environment "${opts.envName}" is not available in ${opts.cwd}.\n` +
119
149
  ` Expected tagged .env (${BLT_ENV_NAME_KEY}=${opts.envName}) or ciphertext at:\n` +
120
150
  ` ${bundlePath}\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"env-check.js","sourceRoot":"","sources":["../../../src/commands/app/env-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-check.js","sourceRoot":"","sources":["../../../src/commands/app/env-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** Resolve smash CLI (local node_modules or bunx fallback). */
2
+ export declare function resolveSmashCommand(cwd: string): string[];
3
+ export type DecryptTrailzEnvOptions = {
4
+ cwd?: string;
5
+ expand?: boolean;
6
+ };
7
+ /** Decrypt a trailz env bundle (`smash -n <basePath>`) and optionally expand `$VAR` references. */
8
+ export declare function decryptTrailzEnvBase(basePath: string, options?: DecryptTrailzEnvOptions): string;
9
+ //# sourceMappingURL=env-decrypt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-decrypt.d.ts","sourceRoot":"","sources":["../../../src/commands/app/env-decrypt.ts"],"names":[],"mappings":"AAKA,+DAA+D;AAC/D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUzD;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,mGAAmG;AACnG,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,uBAA4B,GACnC,MAAM,CAuBR"}
@@ -0,0 +1,37 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { existsSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { expandDotEnvBody } from "./env-check";
5
+ /** Resolve smash CLI (local node_modules or bunx fallback). */
6
+ export function resolveSmashCommand(cwd) {
7
+ const binSmash = join(cwd, "node_modules", ".bin", "smash");
8
+ const script = join(cwd, "node_modules", "@codemarc", "smashdata", "smash");
9
+ if (existsSync(binSmash)) {
10
+ return [binSmash];
11
+ }
12
+ if (existsSync(script)) {
13
+ return ["node", script];
14
+ }
15
+ return ["bunx", "@codemarc/smashdata"];
16
+ }
17
+ /** Decrypt a trailz env bundle (`smash -n <basePath>`) and optionally expand `$VAR` references. */
18
+ export function decryptTrailzEnvBase(basePath, options = {}) {
19
+ const cwd = options.cwd ?? process.cwd();
20
+ const expand = options.expand ?? true;
21
+ const smashCmd = resolveSmashCommand(cwd);
22
+ const [command, ...commandArgs] = smashCmd;
23
+ const result = spawnSync(command, [...commandArgs, "-n", basePath], {
24
+ cwd,
25
+ env: process.env,
26
+ encoding: "utf8",
27
+ });
28
+ if (result.error) {
29
+ throw result.error;
30
+ }
31
+ if ((result.status ?? 0) !== 0) {
32
+ throw new Error(`smash -n ${basePath} failed${result.stderr ? `: ${result.stderr.trim()}` : ""}`);
33
+ }
34
+ const decrypted = (result.stdout ?? "").replace(/^\uFEFF/, "").trimStart();
35
+ return expand ? expandDotEnvBody(decrypted) : decrypted;
36
+ }
37
+ //# sourceMappingURL=env-decrypt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-decrypt.js","sourceRoot":"","sources":["../../../src/commands/app/env-decrypt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,+DAA+D;AAC/D,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC5E,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACxC,CAAC;AAOD,mGAAmG;AACnG,MAAM,UAAU,oBAAoB,CACnC,QAAgB,EAChB,UAAmC,EAAE;IAErC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IACtC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,GAAG,QAAQ,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;QACnE,GAAG;QACH,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,MAAM,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACd,YAAY,QAAQ,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChF,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IAC3E,OAAO,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import type { Logger } from "@caporal/core";
2
+ export declare const DEFAULT_POS_BRANCH = "laf-test";
2
3
  export type DeployPosAppOptions = {
3
4
  target: string;
4
5
  branch: string;
5
- env: string;
6
+ env?: string;
6
7
  };
7
8
  export declare function deployPosApp(opts: DeployPosAppOptions, logger: Logger): Promise<void>;
8
9
  //# sourceMappingURL=pos.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pos.d.ts","sourceRoot":"","sources":["../../../src/commands/app/pos.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,MAAM,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACZ,CAAC;AAQF,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF3F"}
1
+ {"version":3,"file":"pos.d.ts","sourceRoot":"","sources":["../../../src/commands/app/pos.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAO5C,eAAO,MAAM,kBAAkB,aAAa,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAoBF,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF3F"}
@@ -1,34 +1,50 @@
1
- import { existsSync, rmSync } from "node:fs";
1
+ import { appendFileSync, existsSync, rmSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { findWorkspaceRoot, resolveDeploySiteDir } from "./paths";
4
- import { appDmEnvPath, ensureAppEnv, siteDmEnvName, trailzEnvBundlePath } from "./env-check";
4
+ import { ensureAppEnv } from "./env-check";
5
+ import { decryptTrailzEnvBase } from "./env-decrypt";
6
+ import { loadSiteEnvContext, renderNginxTemplatesIfPresent } from "./site-env";
5
7
  import { runCommand } from "./shell";
8
+ export const DEFAULT_POS_BRANCH = "laf-test";
6
9
  function removeIfExists(path) {
7
10
  if (existsSync(path)) {
8
11
  rmSync(path, { recursive: true, force: true });
9
12
  }
10
13
  }
14
+ function expandedSiteEnvBody(siteEnvBase, siteDir) {
15
+ return decryptTrailzEnvBase(siteEnvBase, { cwd: siteDir, expand: true });
16
+ }
17
+ function writeExpandedSiteEnv(path, siteEnvBase, siteDir) {
18
+ writeFileSync(path, `${expandedSiteEnvBody(siteEnvBase, siteDir)}\n`);
19
+ }
20
+ function appendExpandedSiteEnv(path, siteEnvBase, siteDir) {
21
+ appendFileSync(path, `\n${expandedSiteEnvBody(siteEnvBase, siteDir)}\n`);
22
+ }
11
23
  export async function deployPosApp(opts, logger) {
12
24
  const workspaceRoot = findWorkspaceRoot();
13
25
  const siteDir = resolveDeploySiteDir(opts.target, workspaceRoot);
26
+ const site = loadSiteEnvContext(siteDir, logger);
27
+ const envName = opts.env ?? site.bltEnvName;
14
28
  const envPlain = join(siteDir, ".env");
15
29
  const appZip = join(siteDir, "app.zip");
16
- const siteEnvRel = `.trailz/env/.env.${opts.env}`;
17
- ensureAppEnv({ envName: opts.env, cwd: siteDir, logger });
18
- logger.info(`Deploying POS branch "${opts.branch}" with env "${opts.env}" to "${opts.target}"`);
30
+ if (envName !== site.bltEnvName) {
31
+ throw new Error(`Requested env "${envName}" does not match BLT_ENV_NAME="${site.bltEnvName}" in site bundle.`);
32
+ }
33
+ if (opts.target !== site.target) {
34
+ throw new Error(`SSH target "${opts.target}" does not match site target "${site.target}" from bundle.`);
35
+ }
36
+ ensureAppEnv({ envName, cwd: siteDir, logger });
37
+ logger.info(`Deploying POS branch "${opts.branch}" with env "${envName}" to "${site.target}"`);
19
38
  logger.info(`Site directory: ${siteDir}`);
20
- runCommand("bash", ["-lc", `smash -n ../../../.trailz/keys | grep GITHUB_TOKEN > .env`], logger, {
21
- cwd: siteDir,
22
- });
39
+ runCommand("bash", ["-lc", `smash -n ../../../.trailz/keys/keys | grep GITHUB_TOKEN > .env`], logger, { cwd: siteDir });
23
40
  runCommand("bash", ["-lc", `printf '\\nTZ=America/New_York\\n' >> .env`], logger, {
24
41
  cwd: siteDir,
25
42
  });
26
43
  runCommand("docker", ["build", "-f", "Dockerfile", "-t", "blt-core-pos", "."], logger, {
27
44
  cwd: siteDir,
28
45
  });
29
- runCommand("bash", ["-lc", `smash -n ${siteEnvRel} >> .env`], logger, {
30
- cwd: siteDir,
31
- });
46
+ logger.info("Merging expanded site env into build .env");
47
+ appendExpandedSiteEnv(envPlain, site.siteEnvBase, siteDir);
32
48
  runCommand("docker", [
33
49
  "run",
34
50
  "-it",
@@ -42,31 +58,17 @@ export async function deployPosApp(opts, logger) {
42
58
  "blt-core-pos",
43
59
  "/home/blt/buildcore.sh",
44
60
  ], logger, { cwd: siteDir });
45
- const dmEnvName = siteDmEnvName(opts.env);
46
- const dmBundlePath = trailzEnvBundlePath(siteDir, dmEnvName);
47
- const dmEnvOut = appDmEnvPath(siteDir);
48
- const dmSiteEnvRel = `.trailz/env/.env.${dmEnvName}`;
49
- if (existsSync(dmBundlePath)) {
50
- logger.info(`Writing gateway env from .trailz/env/.env.${dmEnvName}.bin → app/.dm.env`);
51
- runCommand("bash", ["-lc", `smash -n ${dmSiteEnvRel} > app/.dm.env`], logger, {
52
- cwd: siteDir,
53
- });
54
- }
55
- else {
56
- logger.info(`No DM env bundle at ${dmBundlePath}; skipping app/.dm.env`);
57
- if (existsSync(dmEnvOut)) {
58
- rmSync(dmEnvOut, { force: true });
59
- }
60
- }
61
+ logger.info("Writing expanded gateway env from same bundle → app/.dm.env");
62
+ writeExpandedSiteEnv(join(siteDir, "app", ".dm.env"), site.siteEnvBase, siteDir);
63
+ renderNginxTemplatesIfPresent(site, logger);
61
64
  removeIfExists(appZip);
62
65
  runCommand("zip", ["-9r", "app.zip", "app/"], logger, { cwd: siteDir });
63
- runCommand("bash", ["-lc", `smash -n ${siteEnvRel} > .env`], logger, {
64
- cwd: siteDir,
65
- });
66
- runCommand("scp", [envPlain, `${opts.target}:`], logger, { cwd: siteDir });
67
- runCommand("scp", [appZip, `${opts.target}:`], logger, { cwd: siteDir });
66
+ logger.info("Writing expanded site .env for droplet deploy");
67
+ writeExpandedSiteEnv(envPlain, site.siteEnvBase, siteDir);
68
+ runCommand("scp", [envPlain, `${site.target}:`], logger, { cwd: siteDir });
69
+ runCommand("scp", [appZip, `${site.target}:`], logger, { cwd: siteDir });
68
70
  runCommand("ssh", [
69
- opts.target,
71
+ site.target,
70
72
  "rm -rf app.last && mv app app.last && unzip app.zip && cd app && docker compose restart",
71
73
  ], logger, { cwd: siteDir });
72
74
  logger.info("POS deploy complete.");
@@ -1 +1 @@
1
- {"version":3,"file":"pos.js","sourceRoot":"","sources":["../../../src/commands/app/pos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pos.js","sourceRoot":"","sources":["../../../src/commands/app/pos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Logger } from "@caporal/core";
2
+ export type SiteEnvContext = {
3
+ siteDir: string;
4
+ siteSlug: string;
5
+ bltEnvName: string;
6
+ target: string;
7
+ dmHost: string;
8
+ siteEnvBase: string;
9
+ };
10
+ export declare function loadSiteEnvContext(siteDir: string, logger: Logger): SiteEnvContext;
11
+ export declare function renderNginxTemplatesIfPresent(site: SiteEnvContext, logger: Logger): void;
12
+ //# sourceMappingURL=site-env.d.ts.map