@databricks-solutions/lakebase-scm-utils 0.2.40 → 0.2.41

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 (36) hide show
  1. package/dist/scripts/index.cjs +2 -2
  2. package/dist/scripts/index.js +2 -2
  3. package/dist/scripts/lakebase/ci-resolve-branch.cli.cjs +2 -2
  4. package/dist/scripts/lakebase/ci-resolve-branch.cli.js +2 -2
  5. package/dist/scripts/lakebase/collapse-heads.cli.cjs +2 -2
  6. package/dist/scripts/lakebase/collapse-heads.cli.js +2 -2
  7. package/dist/scripts/lakebase/detect-language.cli.cjs +2 -2
  8. package/dist/scripts/lakebase/detect-language.cli.js +2 -2
  9. package/dist/scripts/lakebase/doctor.cli.cjs +2 -2
  10. package/dist/scripts/lakebase/doctor.cli.js +2 -2
  11. package/dist/scripts/lakebase/get-connection.cli.cjs +2 -2
  12. package/dist/scripts/lakebase/get-connection.cli.js +2 -2
  13. package/dist/scripts/lakebase/index.cjs +2 -2
  14. package/dist/scripts/lakebase/index.js +2 -2
  15. package/dist/scripts/lakebase/infra-runner.cli.cjs +2 -2
  16. package/dist/scripts/lakebase/infra-runner.cli.js +2 -2
  17. package/dist/scripts/lakebase/new-migration.cli.cjs +2 -2
  18. package/dist/scripts/lakebase/new-migration.cli.js +2 -2
  19. package/dist/scripts/lakebase/schema-diff.cli.cjs +2 -2
  20. package/dist/scripts/lakebase/schema-diff.cli.js +2 -2
  21. package/dist/scripts/lakebase/schema-migrate.cli.cjs +2 -2
  22. package/dist/scripts/lakebase/schema-migrate.cli.js +2 -2
  23. package/dist/scripts/lakebase/scm-claim-feature.cli.cjs +2 -2
  24. package/dist/scripts/lakebase/scm-claim-feature.cli.js +2 -2
  25. package/dist/scripts/lakebase/scm-doctor.cli.cjs +2 -2
  26. package/dist/scripts/lakebase/scm-doctor.cli.js +2 -2
  27. package/dist/scripts/lakebase/scm-merge.cli.cjs +2 -2
  28. package/dist/scripts/lakebase/scm-merge.cli.js +2 -2
  29. package/dist/scripts/lakebase/scm-reconcile-tier.cli.cjs +2 -2
  30. package/dist/scripts/lakebase/scm-reconcile-tier.cli.js +2 -2
  31. package/dist/scripts/util/index.cjs +2 -2
  32. package/dist/scripts/util/index.js +2 -2
  33. package/package.json +1 -1
  34. package/templates/project/common/.github/workflows/merge.yml +14 -5
  35. package/templates/project/common/.github/workflows/pr.yml +14 -5
  36. package/templates/project/common/scripts/lk +66 -33
@@ -88895,8 +88895,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
88895
88895
  var cached;
88896
88896
  function substrateSelfVersion() {
88897
88897
  if (cached !== void 0) return cached;
88898
- if ("0.2.40".length > 0) {
88899
- cached = "0.2.40";
88898
+ if ("0.2.41".length > 0) {
88899
+ cached = "0.2.41";
88900
88900
  return cached;
88901
88901
  }
88902
88902
  cached = "unknown";
@@ -9700,8 +9700,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
9700
9700
  var cached;
9701
9701
  function substrateSelfVersion() {
9702
9702
  if (cached !== void 0) return cached;
9703
- if ("0.2.40".length > 0) {
9704
- cached = "0.2.40";
9703
+ if ("0.2.41".length > 0) {
9704
+ cached = "0.2.41";
9705
9705
  return cached;
9706
9706
  }
9707
9707
  cached = "unknown";
@@ -79609,8 +79609,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79609
79609
  var cached;
79610
79610
  function substrateSelfVersion() {
79611
79611
  if (cached !== void 0) return cached;
79612
- if ("0.2.40".length > 0) {
79613
- cached = "0.2.40";
79612
+ if ("0.2.41".length > 0) {
79613
+ cached = "0.2.41";
79614
79614
  return cached;
79615
79615
  }
79616
79616
  cached = "unknown";
@@ -701,8 +701,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
701
701
  var cached;
702
702
  function substrateSelfVersion() {
703
703
  if (cached !== void 0) return cached;
704
- if ("0.2.40".length > 0) {
705
- cached = "0.2.40";
704
+ if ("0.2.41".length > 0) {
705
+ cached = "0.2.41";
706
706
  return cached;
707
707
  }
708
708
  cached = "unknown";
@@ -79270,8 +79270,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79270
79270
  var cached;
79271
79271
  function substrateSelfVersion() {
79272
79272
  if (cached !== void 0) return cached;
79273
- if ("0.2.40".length > 0) {
79274
- cached = "0.2.40";
79273
+ if ("0.2.41".length > 0) {
79274
+ cached = "0.2.41";
79275
79275
  return cached;
79276
79276
  }
79277
79277
  cached = "unknown";
@@ -373,8 +373,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
373
373
  var cached;
374
374
  function substrateSelfVersion() {
375
375
  if (cached !== void 0) return cached;
376
- if ("0.2.40".length > 0) {
377
- cached = "0.2.40";
376
+ if ("0.2.41".length > 0) {
377
+ cached = "0.2.41";
378
378
  return cached;
379
379
  }
380
380
  cached = "unknown";
@@ -79270,8 +79270,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79270
79270
  var cached;
79271
79271
  function substrateSelfVersion() {
79272
79272
  if (cached !== void 0) return cached;
79273
- if ("0.2.40".length > 0) {
79274
- cached = "0.2.40";
79273
+ if ("0.2.41".length > 0) {
79274
+ cached = "0.2.41";
79275
79275
  return cached;
79276
79276
  }
79277
79277
  cached = "unknown";
@@ -373,8 +373,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
373
373
  var cached;
374
374
  function substrateSelfVersion() {
375
375
  if (cached !== void 0) return cached;
376
- if ("0.2.40".length > 0) {
377
- cached = "0.2.40";
376
+ if ("0.2.41".length > 0) {
377
+ cached = "0.2.41";
378
378
  return cached;
379
379
  }
380
380
  cached = "unknown";
@@ -79362,8 +79362,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79362
79362
  var cached;
79363
79363
  function substrateSelfVersion() {
79364
79364
  if (cached !== void 0) return cached;
79365
- if ("0.2.40".length > 0) {
79366
- cached = "0.2.40";
79365
+ if ("0.2.41".length > 0) {
79366
+ cached = "0.2.41";
79367
79367
  return cached;
79368
79368
  }
79369
79369
  cached = "unknown";
@@ -464,8 +464,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
464
464
  var cached;
465
465
  function substrateSelfVersion() {
466
466
  if (cached !== void 0) return cached;
467
- if ("0.2.40".length > 0) {
468
- cached = "0.2.40";
467
+ if ("0.2.41".length > 0) {
468
+ cached = "0.2.41";
469
469
  return cached;
470
470
  }
471
471
  cached = "unknown";
@@ -79265,8 +79265,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79265
79265
  var cached;
79266
79266
  function substrateSelfVersion() {
79267
79267
  if (cached !== void 0) return cached;
79268
- if ("0.2.40".length > 0) {
79269
- cached = "0.2.40";
79268
+ if ("0.2.41".length > 0) {
79269
+ cached = "0.2.41";
79270
79270
  return cached;
79271
79271
  }
79272
79272
  cached = "unknown";
@@ -369,8 +369,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
369
369
  var cached;
370
370
  function substrateSelfVersion() {
371
371
  if (cached !== void 0) return cached;
372
- if ("0.2.40".length > 0) {
373
- cached = "0.2.40";
372
+ if ("0.2.41".length > 0) {
373
+ cached = "0.2.41";
374
374
  return cached;
375
375
  }
376
376
  cached = "unknown";
@@ -81566,8 +81566,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
81566
81566
  var cached;
81567
81567
  function substrateSelfVersion() {
81568
81568
  if (cached !== void 0) return cached;
81569
- if ("0.2.40".length > 0) {
81570
- cached = "0.2.40";
81569
+ if ("0.2.41".length > 0) {
81570
+ cached = "0.2.41";
81571
81571
  return cached;
81572
81572
  }
81573
81573
  cached = "unknown";
@@ -2498,8 +2498,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
2498
2498
  var cached;
2499
2499
  function substrateSelfVersion() {
2500
2500
  if (cached !== void 0) return cached;
2501
- if ("0.2.40".length > 0) {
2502
- cached = "0.2.40";
2501
+ if ("0.2.41".length > 0) {
2502
+ cached = "0.2.41";
2503
2503
  return cached;
2504
2504
  }
2505
2505
  cached = "unknown";
@@ -79270,8 +79270,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79270
79270
  var cached;
79271
79271
  function substrateSelfVersion() {
79272
79272
  if (cached !== void 0) return cached;
79273
- if ("0.2.40".length > 0) {
79274
- cached = "0.2.40";
79273
+ if ("0.2.41".length > 0) {
79274
+ cached = "0.2.41";
79275
79275
  return cached;
79276
79276
  }
79277
79277
  cached = "unknown";
@@ -373,8 +373,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
373
373
  var cached;
374
374
  function substrateSelfVersion() {
375
375
  if (cached !== void 0) return cached;
376
- if ("0.2.40".length > 0) {
377
- cached = "0.2.40";
376
+ if ("0.2.41".length > 0) {
377
+ cached = "0.2.41";
378
378
  return cached;
379
379
  }
380
380
  cached = "unknown";
@@ -79270,8 +79270,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79270
79270
  var cached;
79271
79271
  function substrateSelfVersion() {
79272
79272
  if (cached !== void 0) return cached;
79273
- if ("0.2.40".length > 0) {
79274
- cached = "0.2.40";
79273
+ if ("0.2.41".length > 0) {
79274
+ cached = "0.2.41";
79275
79275
  return cached;
79276
79276
  }
79277
79277
  cached = "unknown";
@@ -373,8 +373,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
373
373
  var cached;
374
374
  function substrateSelfVersion() {
375
375
  if (cached !== void 0) return cached;
376
- if ("0.2.40".length > 0) {
377
- cached = "0.2.40";
376
+ if ("0.2.41".length > 0) {
377
+ cached = "0.2.41";
378
378
  return cached;
379
379
  }
380
380
  cached = "unknown";
@@ -79268,8 +79268,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79268
79268
  var cached;
79269
79269
  function substrateSelfVersion() {
79270
79270
  if (cached !== void 0) return cached;
79271
- if ("0.2.40".length > 0) {
79272
- cached = "0.2.40";
79271
+ if ("0.2.41".length > 0) {
79272
+ cached = "0.2.41";
79273
79273
  return cached;
79274
79274
  }
79275
79275
  cached = "unknown";
@@ -369,8 +369,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
369
369
  var cached;
370
370
  function substrateSelfVersion() {
371
371
  if (cached !== void 0) return cached;
372
- if ("0.2.40".length > 0) {
373
- cached = "0.2.40";
372
+ if ("0.2.41".length > 0) {
373
+ cached = "0.2.41";
374
374
  return cached;
375
375
  }
376
376
  cached = "unknown";
@@ -79304,8 +79304,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79304
79304
  var cached;
79305
79305
  function substrateSelfVersion() {
79306
79306
  if (cached !== void 0) return cached;
79307
- if ("0.2.40".length > 0) {
79308
- cached = "0.2.40";
79307
+ if ("0.2.41".length > 0) {
79308
+ cached = "0.2.41";
79309
79309
  return cached;
79310
79310
  }
79311
79311
  cached = "unknown";
@@ -407,8 +407,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
407
407
  var cached;
408
408
  function substrateSelfVersion() {
409
409
  if (cached !== void 0) return cached;
410
- if ("0.2.40".length > 0) {
411
- cached = "0.2.40";
410
+ if ("0.2.41".length > 0) {
411
+ cached = "0.2.41";
412
412
  return cached;
413
413
  }
414
414
  cached = "unknown";
@@ -79763,8 +79763,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79763
79763
  var cached;
79764
79764
  function substrateSelfVersion() {
79765
79765
  if (cached !== void 0) return cached;
79766
- if ("0.2.40".length > 0) {
79767
- cached = "0.2.40";
79766
+ if ("0.2.41".length > 0) {
79767
+ cached = "0.2.41";
79768
79768
  return cached;
79769
79769
  }
79770
79770
  cached = "unknown";
@@ -844,8 +844,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
844
844
  var cached;
845
845
  function substrateSelfVersion() {
846
846
  if (cached !== void 0) return cached;
847
- if ("0.2.40".length > 0) {
848
- cached = "0.2.40";
847
+ if ("0.2.41".length > 0) {
848
+ cached = "0.2.41";
849
849
  return cached;
850
850
  }
851
851
  cached = "unknown";
@@ -88187,8 +88187,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
88187
88187
  var cached;
88188
88188
  function substrateSelfVersion() {
88189
88189
  if (cached !== void 0) return cached;
88190
- if ("0.2.40".length > 0) {
88191
- cached = "0.2.40";
88190
+ if ("0.2.41".length > 0) {
88191
+ cached = "0.2.41";
88192
88192
  return cached;
88193
88193
  }
88194
88194
  cached = "unknown";
@@ -9340,8 +9340,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
9340
9340
  var cached;
9341
9341
  function substrateSelfVersion() {
9342
9342
  if (cached !== void 0) return cached;
9343
- if ("0.2.40".length > 0) {
9344
- cached = "0.2.40";
9343
+ if ("0.2.41".length > 0) {
9344
+ cached = "0.2.41";
9345
9345
  return cached;
9346
9346
  }
9347
9347
  cached = "unknown";
@@ -88153,8 +88153,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
88153
88153
  var cached;
88154
88154
  function substrateSelfVersion() {
88155
88155
  if (cached !== void 0) return cached;
88156
- if ("0.2.40".length > 0) {
88157
- cached = "0.2.40";
88156
+ if ("0.2.41".length > 0) {
88157
+ cached = "0.2.41";
88158
88158
  return cached;
88159
88159
  }
88160
88160
  cached = "unknown";
@@ -9306,8 +9306,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
9306
9306
  var cached;
9307
9307
  function substrateSelfVersion() {
9308
9308
  if (cached !== void 0) return cached;
9309
- if ("0.2.40".length > 0) {
9310
- cached = "0.2.40";
9309
+ if ("0.2.41".length > 0) {
9310
+ cached = "0.2.41";
9311
9311
  return cached;
9312
9312
  }
9313
9313
  cached = "unknown";
@@ -79268,8 +79268,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
79268
79268
  var cached;
79269
79269
  function substrateSelfVersion() {
79270
79270
  if (cached !== void 0) return cached;
79271
- if ("0.2.40".length > 0) {
79272
- cached = "0.2.40";
79271
+ if ("0.2.41".length > 0) {
79272
+ cached = "0.2.41";
79273
79273
  return cached;
79274
79274
  }
79275
79275
  cached = "unknown";
@@ -369,8 +369,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
369
369
  var cached;
370
370
  function substrateSelfVersion() {
371
371
  if (cached !== void 0) return cached;
372
- if ("0.2.40".length > 0) {
373
- cached = "0.2.40";
372
+ if ("0.2.41".length > 0) {
373
+ cached = "0.2.41";
374
374
  return cached;
375
375
  }
376
376
  cached = "unknown";
@@ -1659,8 +1659,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
1659
1659
  var cached;
1660
1660
  function substrateSelfVersion() {
1661
1661
  if (cached !== void 0) return cached;
1662
- if ("0.2.40".length > 0) {
1663
- cached = "0.2.40";
1662
+ if ("0.2.41".length > 0) {
1663
+ cached = "0.2.41";
1664
1664
  return cached;
1665
1665
  }
1666
1666
  cached = "unknown";
@@ -1630,8 +1630,8 @@ var PKG_NAME = "@databricks-solutions/lakebase-scm-utils";
1630
1630
  var cached;
1631
1631
  function substrateSelfVersion() {
1632
1632
  if (cached !== void 0) return cached;
1633
- if ("0.2.40".length > 0) {
1634
- cached = "0.2.40";
1633
+ if ("0.2.41".length > 0) {
1634
+ cached = "0.2.41";
1635
1635
  return cached;
1636
1636
  }
1637
1637
  cached = "unknown";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@databricks-solutions/lakebase-scm-utils",
3
- "version": "0.2.40",
3
+ "version": "0.2.41",
4
4
  "description": "Lakebase SCM + substrate engine: database branching, paired-branch SCM workflows, connection/credential minting, schema migration, project scaffold + deploy primitives, and the git/github utility layer. Extracted from consort for portable, standalone consumption by lakebase-scm-extension and the SFTDD orchestration.",
5
5
  "type": "module",
6
6
  "private": false,
@@ -72,7 +72,16 @@ jobs:
72
72
  # the version this project was scaffolded from, when .lakebase/scm-utils-ref is absent.
73
73
  run: |
74
74
  SCM_UTILS_REF="$(tr -d '[:space:]' < .lakebase/scm-utils-ref 2>/dev/null || true)"
75
- echo "SCM_UTILS_REF=${SCM_UTILS_REF:-v{{LAKEBASE_SCM_UTILS_VERSION}}}" >> "$GITHUB_ENV"
75
+ SCM_UTILS_REF="${SCM_UTILS_REF:-v{{LAKEBASE_SCM_UTILS_VERSION}}}"
76
+ echo "SCM_UTILS_REF=${SCM_UTILS_REF}" >> "$GITHUB_ENV"
77
+ # Registry-first: version-tag refs install the published tarball from the
78
+ # npm registry (seconds); branch/SHA refs keep the GitHub source form
79
+ # (their only source).
80
+ case "$SCM_UTILS_REF" in
81
+ v[0-9]*) echo "SCM_UTILS_NPX_PKG=@databricks-solutions/lakebase-scm-utils@${SCM_UTILS_REF#v}" >> "$GITHUB_ENV" ;;
82
+ [0-9]*) echo "SCM_UTILS_NPX_PKG=@databricks-solutions/lakebase-scm-utils@${SCM_UTILS_REF}" >> "$GITHUB_ENV" ;;
83
+ *) echo "SCM_UTILS_NPX_PKG=github:databricks-solutions/lakebase-scm-utils#${SCM_UTILS_REF}" >> "$GITHUB_ENV" ;;
84
+ esac
76
85
 
77
86
  - name: Detect project language
78
87
  id: detect-lang
@@ -84,7 +93,7 @@ jobs:
84
93
  # this project.
85
94
  run: |
86
95
  LANG="$(npx --yes \
87
- --package=github:databricks-solutions/lakebase-scm-utils#"${SCM_UTILS_REF}" \
96
+ --package="${SCM_UTILS_NPX_PKG}" \
88
97
  lakebase-detect-language)"
89
98
  echo "lang=$LANG" >> $GITHUB_OUTPUT
90
99
  echo "Detected language: $LANG"
@@ -268,7 +277,7 @@ jobs:
268
277
  echo " instance: $LAKEBASE_PROJECT_ID"
269
278
  echo " source: $DEFAULT_NAME"
270
279
  echo " backup: $SNAPSHOT_NAME"
271
- if CREATE_OUT="$(npx --yes --package=github:databricks-solutions/lakebase-scm-utils#"${SCM_UTILS_REF}" \
280
+ if CREATE_OUT="$(npx --yes --package="${SCM_UTILS_NPX_PKG}" \
272
281
  lakebase-cut-backup \
273
282
  --instance "$LAKEBASE_PROJECT_ID" \
274
283
  --source "$DEFAULT_NAME" \
@@ -312,7 +321,7 @@ jobs:
312
321
  # is the promotion opt-in (allowTier) + verifies the tier reached head,
313
322
  # so a partial promotion fails the job instead of leaving git ahead of
314
323
  # the Lakebase schema. Single-tier (default branch) also goes through it.
315
- npx --yes --package=github:databricks-solutions/lakebase-scm-utils#"${SCM_UTILS_REF}" \
324
+ npx --yes --package="${SCM_UTILS_NPX_PKG}" \
316
325
  lakebase-schema-migrate apply-tier \
317
326
  --instance "$LAKEBASE_PROJECT_ID" \
318
327
  --branch "$LAKEBASE_BRANCH_NAME" \
@@ -394,7 +403,7 @@ jobs:
394
403
  echo " substrate ref: ${SCM_UTILS_REF}"
395
404
  echo " instance: $LAKEBASE_PROJECT_ID"
396
405
  echo " branch: $LAKEBASE_BRANCH_NAME"
397
- npx --yes --package=github:databricks-solutions/lakebase-scm-utils#"${SCM_UTILS_REF}" \
406
+ npx --yes --package="${SCM_UTILS_NPX_PKG}" \
398
407
  lakebase-schema-migrate status \
399
408
  --instance "$LAKEBASE_PROJECT_ID" \
400
409
  --branch "$LAKEBASE_BRANCH_NAME" \
@@ -31,7 +31,16 @@ jobs:
31
31
  # the version this project was scaffolded from, when .lakebase/scm-utils-ref is absent.
32
32
  run: |
33
33
  SCM_UTILS_REF="$(tr -d '[:space:]' < .lakebase/scm-utils-ref 2>/dev/null || true)"
34
- echo "SCM_UTILS_REF=${SCM_UTILS_REF:-v{{LAKEBASE_SCM_UTILS_VERSION}}}" >> "$GITHUB_ENV"
34
+ SCM_UTILS_REF="${SCM_UTILS_REF:-v{{LAKEBASE_SCM_UTILS_VERSION}}}"
35
+ echo "SCM_UTILS_REF=${SCM_UTILS_REF}" >> "$GITHUB_ENV"
36
+ # Registry-first: version-tag refs install the published tarball from the
37
+ # npm registry (seconds); branch/SHA refs keep the GitHub source form
38
+ # (their only source).
39
+ case "$SCM_UTILS_REF" in
40
+ v[0-9]*) echo "SCM_UTILS_NPX_PKG=@databricks-solutions/lakebase-scm-utils@${SCM_UTILS_REF#v}" >> "$GITHUB_ENV" ;;
41
+ [0-9]*) echo "SCM_UTILS_NPX_PKG=@databricks-solutions/lakebase-scm-utils@${SCM_UTILS_REF}" >> "$GITHUB_ENV" ;;
42
+ *) echo "SCM_UTILS_NPX_PKG=github:databricks-solutions/lakebase-scm-utils#${SCM_UTILS_REF}" >> "$GITHUB_ENV" ;;
43
+ esac
35
44
 
36
45
  - name: Detect project language
37
46
  id: detect-lang
@@ -43,7 +52,7 @@ jobs:
43
52
  # this project.
44
53
  run: |
45
54
  LANG="$(npx --yes \
46
- --package=github:databricks-solutions/lakebase-scm-utils#"${SCM_UTILS_REF}" \
55
+ --package="${SCM_UTILS_NPX_PKG}" \
47
56
  lakebase-detect-language)"
48
57
  echo "lang=$LANG" >> $GITHUB_OUTPUT
49
58
  echo "Detected language: $LANG"
@@ -343,7 +352,7 @@ jobs:
343
352
  echo " substrate ref: ${SCM_UTILS_REF}"
344
353
  echo " instance: $LAKEBASE_PROJECT_ID"
345
354
  echo " branch: $LAKEBASE_BRANCH_NAME"
346
- npx --yes --package=github:databricks-solutions/lakebase-scm-utils#"${SCM_UTILS_REF}" \
355
+ npx --yes --package="${SCM_UTILS_NPX_PKG}" \
347
356
  lakebase-schema-migrate apply \
348
357
  --instance "$LAKEBASE_PROJECT_ID" \
349
358
  --branch "$LAKEBASE_BRANCH_NAME" \
@@ -469,7 +478,7 @@ jobs:
469
478
  # `|| URL=""` clause keeps the workflow green and the env var
470
479
  # unset so the downstream Playwright step degrades cleanly.
471
480
  URL="$(npx --yes \
472
- --package=github:databricks-solutions/lakebase-scm-utils#"${SCM_UTILS_REF}" \
481
+ --package="${SCM_UTILS_NPX_PKG}" \
473
482
  lakebase-ci-app-endpoint \
474
483
  --instance "$LAKEBASE_PROJECT_ID" \
475
484
  --branch "$CI_BRANCH")" || URL=""
@@ -590,7 +599,7 @@ jobs:
590
599
  if [ -n "$PRODUCTION_DATASOURCE_URL" ] && [ -n "$BRANCH" ]; then
591
600
  echo "### Schema diff: \`${BRANCH}\` vs parent (\`${PR_BASE_REF}\`)" >> "$MD"
592
601
  echo "" >> "$MD"
593
- if ! npx --yes --package=github:databricks-solutions/lakebase-scm-utils#"${SCM_UTILS_REF}" \
602
+ if ! npx --yes --package="${SCM_UTILS_NPX_PKG}" \
594
603
  lakebase-schema-diff \
595
604
  --instance "$LAKEBASE_PROJECT_ID" \
596
605
  --branch "$BRANCH" \
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env bash
2
2
  # lk , run a substrate/SCM or SFTDD CLI fast, without the npx tax.
3
3
  #
4
- # `npx --package=github:databricks-solutions/<pkg>#<ref> <bin>` re-resolves the
5
- # GitHub ref on EVERY call (~3.5s even warm). This shim resolves a package ONCE
6
- # per ref into a shared cache and runs the bin via `node dist/...` (~0.09s).
4
+ # `npx --package=<pkg>@<version> <bin>` re-resolves on EVERY call (~3.5s even
5
+ # warm). This shim resolves a package ONCE per ref into a shared cache and runs
6
+ # the bin via `node dist/...` (~0.09s). Cold-cache installs pull the published
7
+ # tarball from the npm registry for version-tag refs (seconds; GitHub is the
8
+ # fallback) and clone+install from GitHub for branch/SHA refs (their only source).
7
9
  #
8
10
  # Two packages back a scaffolded project, and lk routes each bin to its owner so
9
11
  # each runs from its OWN dist (no cross-package node_modules paths):
@@ -110,27 +112,20 @@ resolve_pkg() {
110
112
  node -e 'const fs=require("fs"),p=require("path"),r=process.argv[1];let b={};try{b=(require(r+"/package.json").bin)||{}}catch(e){process.stderr.write("lk: cannot read package.json at "+r+"\n");process.exit(1)}const m=Object.values(b).filter(x=>!fs.existsSync(p.join(r,x)));if(m.length){process.stderr.write("lk: "+r+" dist is INCOMPLETE , "+m.length+"/"+Object.keys(b).length+" bin(s) have no file (e.g. "+m.slice(0,3).join(", ")+").\n");process.exit(1)}' "$1"
111
113
  }
112
114
 
113
- install_pkg() {
114
- local committish="$1" sha="$2" tmp
115
- mkdir -p "$cache_root"
116
- tmp="$(mktemp -d "${cache_root}/.tmp.XXXXXX")"
117
- # Tell the consumer what is happening: this is a full npm install from git and
118
- # takes a couple minutes over the network the FIRST time a ref is cached (the
119
- # kit + its runtime deps). Without this, a silent multi-minute install looks
120
- # hung. `--omit=dev` skips the build-toolchain devDeps (tsup/vitest/typescript/
121
- # esbuild) , the kit ships prebuilt dist/, so consumers never build; `--no-audit
122
- # --no-fund` drop registry round-trips. npm's own progress goes to stderr (>&2)
123
- # so an interactive warm/rewarm narrates instead of going dark.
124
- echo "lk: Downloading the Consort toolkit (${pkg}@${committish}) , one-time for this version, ~1-2 min (kit + its dependencies). Later commands are instant." >&2
125
- # SHOW WHAT IS BEING INSTALLED , not just a clock. npm's progress bar is TTY-only
126
- # (silent when piped to a log for the relay), but `--loglevel=http` prints one line
127
- # per package fetched (`npm http fetch GET 200 …/<pkg>/-/<pkg>-<ver>.tgz`) , exactly
128
- # "what is being installed". We run npm to a temp log and FORWARD its new lines
129
- # (prefixed `lk:` so the narrator relays them) every few seconds as they land; only
130
- # when npm is briefly between fetches (e.g. the initial git clone) do we print an
131
- # elapsed-time line. So the relay never goes silent and never looks like a timeout.
115
+ # npm_install_with_progress <spec>: install <spec> into $tmp in the background
116
+ # while narrating. `--omit=dev` skips the build-toolchain devDeps (tsup/vitest/
117
+ # typescript/esbuild) , the kit ships prebuilt dist/, so consumers never build;
118
+ # `--no-audit --no-fund` drop registry round-trips. SHOW WHAT IS BEING INSTALLED,
119
+ # not just a clock: npm's progress bar is TTY-only (silent when piped to a log
120
+ # for the relay), but `--loglevel=http` prints one line per package fetched, so
121
+ # we FORWARD its new lines (prefixed `lk:`) every few seconds as they land; only
122
+ # when npm is briefly between fetches (e.g. a git clone) do we print an elapsed
123
+ # line. The relay never goes silent and never looks like a timeout. Returns
124
+ # npm's exit status.
125
+ npm_install_with_progress() {
126
+ local spec="$1"
132
127
  local npmlog; npmlog="$(mktemp)"
133
- npm install --loglevel=http --no-save --prefer-online --omit=dev --no-audit --no-fund --prefix "$tmp" "${gh}#${committish}" > "$npmlog" 2>&1 &
128
+ npm install --loglevel=http --no-save --prefer-online --omit=dev --no-audit --no-fund --prefix "$tmp" "$spec" > "$npmlog" 2>&1 &
134
129
  local npm_pid=$! start last cur
135
130
  start=$(date +%s); last=0
136
131
  while kill -0 "$npm_pid" 2>/dev/null; do
@@ -140,22 +135,60 @@ resolve_pkg() {
140
135
  tail -c "+$((last + 1))" "$npmlog" | sed 's/^/lk: /' >&2 # forward the real npm progress
141
136
  last="$cur"
142
137
  else
143
- echo "lk: … still installing the Consort TOOLKIT itself (the kit — one-time per version, cached + reused across projects) ($(( $(date +%s) - start ))s elapsed; ~1-2 min typical)…" >&2
138
+ echo "lk: … still installing the Consort TOOLKIT itself (the kit — one-time per version, cached + reused across projects) ($(( $(date +%s) - start ))s elapsed)…" >&2
144
139
  fi
145
140
  done
146
- # Flush any final lines npm wrote between the last poll and exit, then drop the log
147
- # (all branches below are covered , no leaked temp on success OR failure).
141
+ # Flush any final lines npm wrote between the last poll and exit, then drop the
142
+ # log (all branches below are covered , no leaked temp on success OR failure).
148
143
  cur=$(wc -c < "$npmlog" 2>/dev/null || echo 0)
149
144
  [ "$cur" -gt "$last" ] && tail -c "+$((last + 1))" "$npmlog" | sed 's/^/lk: /' >&2
150
145
  rm -f "$npmlog"
151
- if wait "$npm_pid" && [ -d "${tmp}/node_modules/${pkg}/dist" ]; then
152
- rm -rf "$cache"
153
- if mv "$tmp" "$cache" 2>/dev/null; then
154
- [ -n "$sha" ] && printf '%s\n' "$sha" > "${cache}/.pkg-sha" 2>/dev/null || true
155
- echo "lk: Consort toolkit ready (${pkg}@${committish}; subsequent commands are instant)." >&2
156
- return 0
146
+ wait "$npm_pid"
147
+ }
148
+
149
+ # finalize_install <committish> <sha>: promote a completed $tmp install into the
150
+ # version-keyed cache slot.
151
+ finalize_install() {
152
+ local committish="$1" sha="$2"
153
+ rm -rf "$cache"
154
+ if mv "$tmp" "$cache" 2>/dev/null; then
155
+ [ -n "$sha" ] && printf '%s\n' "$sha" > "${cache}/.pkg-sha" 2>/dev/null || true
156
+ echo "lk: Consort toolkit ready (${pkg}@${committish}; subsequent commands are instant)." >&2
157
+ return 0
158
+ fi
159
+ rm -rf "$tmp"; return 1
160
+ }
161
+
162
+ install_pkg() {
163
+ local committish="$1" sha="$2" tmp
164
+ mkdir -p "$cache_root"
165
+ tmp="$(mktemp -d "${cache_root}/.tmp.XXXXXX")"
166
+ # Tell the consumer what is happening: without narration a cold-cache install
167
+ # looks hung (a GitHub install takes a couple of minutes the FIRST time a ref
168
+ # is cached; a registry install is seconds).
169
+ echo "lk: Downloading the Consort toolkit (${pkg}@${committish}) , one-time for this version. Later commands are instant." >&2
170
+ # Registry-first for immutable version tags (v0.2.40 -> ${pkg}@0.2.40): a
171
+ # registry tarball lands in seconds (no git clone, no build). GitHub stays the
172
+ # fallback (e.g. a tag not yet published) and is the only path for branch/SHA
173
+ # refs, which the registry never has.
174
+ local ver=""
175
+ if [ "$is_sha" -eq 0 ]; then
176
+ case "$ref" in
177
+ v[0-9]*) ver="${ref#v}" ;;
178
+ [0-9]*) ver="$ref" ;;
179
+ esac
180
+ fi
181
+ if [ -n "$ver" ]; then
182
+ if npm_install_with_progress "${pkg}@${ver}" && [ -d "${tmp}/node_modules/${pkg}/dist" ]; then
183
+ finalize_install "$committish" "$sha"
184
+ return $?
157
185
  fi
158
- rm -rf "$tmp"; return 1
186
+ echo "lk: registry install of ${pkg}@${ver} did not complete; falling back to GitHub (${gh}#${committish})." >&2
187
+ rm -rf "$tmp"; tmp="$(mktemp -d "${cache_root}/.tmp.XXXXXX")"
188
+ fi
189
+ if npm_install_with_progress "${gh}#${committish}" && [ -d "${tmp}/node_modules/${pkg}/dist" ]; then
190
+ finalize_install "$committish" "$sha"
191
+ return $?
159
192
  fi
160
193
  rm -rf "$tmp"; return 1
161
194
  }