@codemarc/blt 1.10.1 → 1.10.4

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 (56) hide show
  1. package/README.md +94 -6
  2. package/dist/blt +2 -0
  3. package/dist/blt.d.ts.map +1 -1
  4. package/dist/blt.js.map +1 -1
  5. package/dist/commands/db/diff-endpoint.d.ts +16 -0
  6. package/dist/commands/db/diff-endpoint.d.ts.map +1 -0
  7. package/dist/commands/db/diff-endpoint.js +39 -0
  8. package/dist/commands/db/diff-endpoint.js.map +1 -0
  9. package/dist/commands/db/dump.d.ts +23 -0
  10. package/dist/commands/db/dump.d.ts.map +1 -0
  11. package/dist/commands/db/dump.js +49 -0
  12. package/dist/commands/db/dump.js.map +1 -0
  13. package/dist/commands/db/env-url.d.ts +4 -0
  14. package/dist/commands/db/env-url.d.ts.map +1 -0
  15. package/dist/commands/db/env-url.js +34 -0
  16. package/dist/commands/db/env-url.js.map +1 -0
  17. package/dist/commands/db/patch.d.ts +14 -0
  18. package/dist/commands/db/patch.d.ts.map +1 -0
  19. package/dist/commands/db/patch.js +58 -0
  20. package/dist/commands/db/patch.js.map +1 -0
  21. package/dist/commands/db/run.d.ts +4 -0
  22. package/dist/commands/db/run.d.ts.map +1 -0
  23. package/dist/commands/db/run.js +19 -0
  24. package/dist/commands/db/run.js.map +1 -0
  25. package/dist/commands/db/schema-loader.d.ts +28 -0
  26. package/dist/commands/db/schema-loader.d.ts.map +1 -0
  27. package/dist/commands/db/schema-loader.js +121 -0
  28. package/dist/commands/db/schema-loader.js.map +1 -0
  29. package/dist/commands/db/sql.d.ts +10 -0
  30. package/dist/commands/db/sql.d.ts.map +1 -0
  31. package/dist/commands/db/sql.js +152 -0
  32. package/dist/commands/db/sql.js.map +1 -0
  33. package/dist/commands/db/supabase-schema.d.ts +38 -0
  34. package/dist/commands/db/supabase-schema.d.ts.map +1 -0
  35. package/dist/commands/db/supabase-schema.js +132 -0
  36. package/dist/commands/db/supabase-schema.js.map +1 -0
  37. package/dist/commands/db.d.ts +3 -0
  38. package/dist/commands/db.d.ts.map +1 -0
  39. package/dist/commands/db.js +116 -0
  40. package/dist/commands/db.js.map +1 -0
  41. package/dist/commands/init/script.d.ts +37 -1
  42. package/dist/commands/init/script.d.ts.map +1 -1
  43. package/dist/commands/init/script.js +142 -78
  44. package/dist/commands/init/script.js.map +1 -1
  45. package/dist/commands/init.d.ts.map +1 -1
  46. package/dist/commands/init.js +13 -8
  47. package/dist/commands/init.js.map +1 -1
  48. package/dist/commands/show/repo.js +3 -3
  49. package/dist/commands/show/repo.js.map +1 -1
  50. package/dist/lib/repositories.d.ts +21 -5
  51. package/dist/lib/repositories.d.ts.map +1 -1
  52. package/dist/lib/repositories.js +98 -80
  53. package/dist/lib/repositories.js.map +1 -1
  54. package/dist/lib/repositories.manifest.json +54 -0
  55. package/package.json +12 -7
  56. package/repositories.json.example +14 -0
@@ -1,7 +1,7 @@
1
1
  import { chmodSync, existsSync, readFileSync } from "node:fs";
2
2
  import { dirname, join, resolve } from "node:path";
3
3
  import { ensureGhReady, ghInitScriptPreamble, ghRepoCloneCommand, } from "../../lib/github";
4
- import { BUNDLE_REPOSITORY, REPOSITORIES } from "../../lib/repositories";
4
+ import { getBundleRepository, getRepositoryManifestSource, getSubRepositories } from "../../lib/repositories";
5
5
  function parseEnvFile(envPath) {
6
6
  const content = readFileSync(envPath, "utf-8");
7
7
  const out = {};
@@ -26,7 +26,7 @@ function parseEnvFile(envPath) {
26
26
  }
27
27
  return out;
28
28
  }
29
- function connectionFromSupabaseEnv(env) {
29
+ export function connectionFromSupabaseEnv(env) {
30
30
  const connectionString = env.SUPABASE_CONNECTION_STRING;
31
31
  if (!connectionString?.startsWith("postgresql://"))
32
32
  return null;
@@ -50,69 +50,159 @@ function connectionFromSupabaseEnv(env) {
50
50
  return null;
51
51
  }
52
52
  }
53
- /**
54
- * Generate a shell script that clones or pulls all BLT projects into the current directory
55
- */
56
- export async function generateInitScript(options, logger) {
57
- if (options.gh) {
58
- ensureGhReady(logger);
53
+ /** Bash lines to fast-forward sync an existing git checkout. */
54
+ export function gitPullFfOnlyLines(label, indent = "") {
55
+ return [
56
+ `${indent}git fetch origin`,
57
+ `${indent}git pull --ff-only || { echo "ERROR: ${label}: fast-forward pull failed; resolve locally and re-run." >&2; exit 1; }`,
58
+ ];
59
+ }
60
+ /** Bash lines to clone or fast-forward sync the umbrella repo at `.`. */
61
+ export function bundleUmbrellaSyncLines(gh, ssh) {
62
+ const bundle = getBundleRepository();
63
+ const bundleUrl = ssh ? bundle.sshUrl : bundle.url;
64
+ const lines = [`if [ -d ".git" ]; then`];
65
+ lines.push(...gitPullFfOnlyLines("umbrella repo", " "));
66
+ lines.push(`else`);
67
+ if (gh) {
68
+ lines.push(` ${ghRepoCloneCommand(bundle, ".", ssh)}`);
69
+ }
70
+ else {
71
+ lines.push(` git clone ${bundleUrl} .`);
72
+ }
73
+ lines.push(`fi`);
74
+ return lines;
75
+ }
76
+ /** Bash lines to clone or fast-forward sync one sibling repository. */
77
+ export function subRepoSyncLines(repo, gh, ssh) {
78
+ const lines = [
79
+ `# ${repo.description || repo.name}`,
80
+ `if [ -d "${repo.name}" ]; then`,
81
+ ` echo "Pulling ${repo.name}..."`,
82
+ ` (`,
83
+ ` cd ${repo.name}`,
84
+ ...gitPullFfOnlyLines(repo.name, " "),
85
+ ` )`,
86
+ `else`,
87
+ ` echo "Cloning ${repo.name}..."`,
88
+ ];
89
+ if (gh) {
90
+ lines.push(` ${ghRepoCloneCommand(repo, repo.name, ssh)}`);
91
+ }
92
+ else {
93
+ const url = ssh ? repo.sshUrl : repo.url;
94
+ lines.push(` git clone ${url} ${repo.name}`);
95
+ }
96
+ lines.push(`fi`, "");
97
+ return lines;
98
+ }
99
+ /** Workspace folder entries for `-w` / `-b` modes. */
100
+ export function workspaceFoldersForInit(workspace, bundleWorkspace) {
101
+ if (bundleWorkspace) {
102
+ return [{ name: getBundleRepository().name, path: "." }];
103
+ }
104
+ if (workspace) {
105
+ const bundle = getBundleRepository();
106
+ return [
107
+ { name: bundle.name, path: "." },
108
+ ...getSubRepositories().map((repo) => ({
109
+ name: repo.name,
110
+ path: repo.name,
111
+ })),
112
+ ];
59
113
  }
114
+ return undefined;
115
+ }
116
+ /** Build the getblt.sh script body (without writing files). */
117
+ export function buildInitScriptLines(options) {
60
118
  const lines = [
61
119
  "#!/usr/bin/env bash",
62
- "# BLT project init script - clones or pulls all projects into the current directory",
120
+ "# BLT project init script - clones or pulls sibling repos into the current directory",
63
121
  "# Generated by: blt init",
122
+ "# Run from the umbrella repo root (bltcore-com/blt), after: git clone …/blt.git && cd blt",
64
123
  "",
65
- 'set -e',
124
+ "set -e",
66
125
  "",
67
- "cd \"$(dirname \"$0\")\"",
126
+ 'cd "$(dirname "$0")"',
68
127
  "",
69
128
  ];
70
129
  if (options.gh) {
71
130
  lines.push(...ghInitScriptPreamble());
72
131
  }
73
132
  if (options.bundleWorkspace) {
74
- lines.push(`# ${BUNDLE_REPOSITORY.description}`);
75
- lines.push(`echo "Syncing ${BUNDLE_REPOSITORY.name} (umbrella)..."`);
76
- if (options.gh) {
77
- lines.push(`if [ -d ".git" ]; then`);
78
- lines.push(` git fetch origin`);
79
- lines.push(` git reset --hard origin/HEAD`);
80
- lines.push(`else`);
81
- lines.push(` ${ghRepoCloneCommand(BUNDLE_REPOSITORY, ".", options.ssh)}`);
82
- lines.push(`fi`);
83
- }
84
- else {
85
- const bundleUrl = options.ssh ? BUNDLE_REPOSITORY.sshUrl : BUNDLE_REPOSITORY.url;
86
- lines.push(`if [ ! -d ".git" ]; then`);
87
- lines.push(` git init`);
88
- lines.push(`fi`);
89
- lines.push(`if ! git remote get-url origin &>/dev/null; then`);
90
- lines.push(` git remote add origin ${bundleUrl}`);
91
- lines.push(`fi`);
92
- lines.push(`git fetch origin`);
93
- lines.push(`git reset --hard origin/HEAD`);
94
- }
133
+ const bundle = getBundleRepository();
134
+ lines.push(`# ${bundle.description}`);
135
+ lines.push(`echo "Syncing ${bundle.name} (umbrella)..."`);
136
+ lines.push(...bundleUmbrellaSyncLines(options.gh, options.ssh));
95
137
  lines.push("");
96
138
  }
97
- for (const repo of REPOSITORIES) {
98
- lines.push(`# ${repo.description || repo.name}`);
99
- lines.push(`if [ -d "${repo.name}" ]; then`);
100
- lines.push(` echo "Pulling ${repo.name}..."`);
101
- lines.push(` (cd ${repo.name} && git pull)`);
102
- lines.push(`else`);
103
- lines.push(` echo "Cloning ${repo.name}..."`);
104
- if (options.gh) {
105
- lines.push(` ${ghRepoCloneCommand(repo, repo.name, options.ssh)}`);
106
- }
107
- else {
108
- const url = options.ssh ? repo.sshUrl : repo.url;
109
- lines.push(` git clone ${url} ${repo.name}`);
139
+ for (const repo of getSubRepositories()) {
140
+ lines.push(...subRepoSyncLines(repo, options.gh, options.ssh));
141
+ }
142
+ lines.push('echo "Done! All projects are up to date."');
143
+ return lines;
144
+ }
145
+ function applyConnectionsFromEnv(workspaceContent, baseDir, logger) {
146
+ const envPath = join(baseDir, ".env");
147
+ if (!existsSync(envPath)) {
148
+ logger.warn(`No .env at ${envPath}; skipping SQLTools connections.`);
149
+ return;
150
+ }
151
+ const env = parseEnvFile(envPath);
152
+ const connection = connectionFromSupabaseEnv(env);
153
+ if (!connection) {
154
+ logger.warn(`SUPABASE_CONNECTION_STRING missing or invalid in ${envPath}; skipping SQLTools connections.`);
155
+ return;
156
+ }
157
+ workspaceContent.settings = {
158
+ ...(workspaceContent.settings ?? {}),
159
+ "sqltools.connections": [connection],
160
+ };
161
+ logger.warn("SQLTools connection includes database credentials in blt.code-workspace. " +
162
+ "Do not commit this file if it contains secrets; add blt.code-workspace to .gitignore or use user settings.");
163
+ }
164
+ export function buildWorkspaceContent(options, baseDir, logger) {
165
+ const workspaceContent = {};
166
+ const folders = workspaceFoldersForInit(options.workspace, options.bundleWorkspace);
167
+ if (folders) {
168
+ workspaceContent.folders = folders;
169
+ if (options.bundleWorkspace) {
170
+ workspaceContent.settings = {};
110
171
  }
111
- lines.push(`fi`);
112
- lines.push("");
113
172
  }
114
- lines.push("echo \"Done! All projects are up to date.\"");
115
- const script = lines.join("\n");
173
+ if (options.connectionsFromEnv) {
174
+ applyConnectionsFromEnv(workspaceContent, baseDir, logger);
175
+ }
176
+ if (!workspaceContent.folders) {
177
+ workspaceContent.folders = [];
178
+ }
179
+ return workspaceContent;
180
+ }
181
+ export function validateInitOptions(options) {
182
+ if (options.connectionsFromEnv &&
183
+ !options.workspace &&
184
+ !options.bundleWorkspace) {
185
+ return "-c requires -w or -b; SQLTools connections are written to blt.code-workspace";
186
+ }
187
+ return null;
188
+ }
189
+ /**
190
+ * Generate a shell script that clones or pulls all BLT projects into the current directory
191
+ */
192
+ export async function generateInitScript(options, logger) {
193
+ const validationError = validateInitOptions(options);
194
+ if (validationError) {
195
+ logger.error(validationError);
196
+ process.exit(1);
197
+ }
198
+ if (options.gh) {
199
+ ensureGhReady(logger);
200
+ }
201
+ const manifestSource = getRepositoryManifestSource();
202
+ if (manifestSource !== "bundled") {
203
+ logger.info(`Using repository manifest: ${manifestSource}`);
204
+ }
205
+ const script = buildInitScriptLines(options).join("\n");
116
206
  try {
117
207
  await Bun.write(options.output, script);
118
208
  // Make executable on Unix
@@ -123,37 +213,11 @@ export async function generateInitScript(options, logger) {
123
213
  // chmod may fail on Windows, ignore
124
214
  }
125
215
  logger.info(`Created init script: ${options.output}`);
126
- if (options.workspace || options.bundleWorkspace || options.connectionsFromEnv) {
216
+ logger.info("Re-run blt init after editing repositories.json to refresh getblt.sh");
217
+ if (options.workspace || options.bundleWorkspace) {
127
218
  const baseDir = resolve(dirname(options.output));
128
219
  const workspacePath = join(baseDir, "blt.code-workspace");
129
- const workspaceContent = {};
130
- if (options.bundleWorkspace) {
131
- workspaceContent.folders = [{ name: "blt", path: "." }];
132
- workspaceContent.settings = {};
133
- }
134
- else if (options.workspace) {
135
- workspaceContent.folders = REPOSITORIES.map((repo) => ({
136
- name: repo.name,
137
- path: repo.name,
138
- }));
139
- }
140
- if (options.connectionsFromEnv) {
141
- const envPath = join(baseDir, ".env");
142
- if (existsSync(envPath)) {
143
- const env = parseEnvFile(envPath);
144
- const connection = connectionFromSupabaseEnv(env);
145
- if (connection) {
146
- workspaceContent.settings = {
147
- ...(workspaceContent.settings ?? {}),
148
- "sqltools.connections": [connection],
149
- };
150
- }
151
- }
152
- }
153
- // Ensure we have at least folders so the file is valid
154
- if (!workspaceContent.folders) {
155
- workspaceContent.folders = [];
156
- }
220
+ const workspaceContent = buildWorkspaceContent(options, baseDir, logger);
157
221
  await Bun.write(workspacePath, JSON.stringify(workspaceContent, null, "\t") + "\n");
158
222
  logger.info(`Created workspace: ${workspacePath}`);
159
223
  }
@@ -1 +1 @@
1
- {"version":3,"file":"script.js","sourceRoot":"","sources":["../../../src/commands/init/script.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["../../../src/commands/init/script.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAO,EAAE,OAAO,QAyDnD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAO,EAAE,OAAO,QA8DnD"}
@@ -9,14 +9,16 @@ Initialize a BLT workspace by creating a script to clone/pull all projects
9
9
  Usage:
10
10
  blt init [options]
11
11
 
12
- Creates a shell script that will clone all BLT repositories (if they don't exist)
13
- or pull the latest changes (if they do). Run the generated script in the
14
- directory where you want the projects to live.
12
+ Creates a shell script that clones or fast-forward pulls sibling BLT repositories
13
+ (tools, data, pos, ). Run the generated script from the umbrella repo root
14
+ (bltcore-com/blt), not from a parent directory.
15
15
 
16
- With -w, also creates blt.code-workspace with folder entries from the repository list.
17
- With -b, clones/pulls the umbrella repo (codemarc/blt) first, then sub-repos, and
18
- creates blt.code-workspace as a single-root workspace (name "blt", path ".").
19
- With -c, adds sqltools.connections from SUPABASE_* vars in .env if present.
16
+ With -w, also creates blt.code-workspace with the umbrella at "." plus one folder
17
+ per sibling repo.
18
+ With -b, clones/pulls the umbrella repo (bltcore-com/blt) into "." when needed,
19
+ then sub-repos, and creates blt.code-workspace as a single-root workspace
20
+ (name "blt", path ".").
21
+ With -c, adds sqltools.connections from SUPABASE_* vars in .env (requires -w or -b).
20
22
  With -g, use GitHub CLI (gh repo clone) instead of git clone. Requires gh auth login.
21
23
 
22
24
  Example:
@@ -25,6 +27,9 @@ Example:
25
27
  blt init -b
26
28
  blt init -g
27
29
  ./getblt.sh
30
+
31
+ Repository list: bundled src/lib/repositories.manifest.json, or override with
32
+ ./repositories.json in the current directory or BLT_REPOSITORIES_PATH.
28
33
  `;
29
34
  program
30
35
  .command("init", "clone repo script")
@@ -42,7 +47,7 @@ Example:
42
47
  .option("-b, --bundle", "Also generate blt.code-workspace as a single-root workspace (blt → .)", {
43
48
  default: false,
44
49
  })
45
- .option("-c, --connections", "Add sqltools.connections from .env if present", {
50
+ .option("-c, --connections", "Add sqltools.connections from .env (requires -w or -b)", {
46
51
  default: false,
47
52
  })
48
53
  .action(async ({ options, logger }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAgB;IACnD,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBrB,CAAC;IAED,OAAO;SACL,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;SACpC,IAAI,CAAC,YAAY,CAAC;SAClB,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,EAAE;QAC5D,OAAO,EAAE,aAAa;KACtB,CAAC;SACD,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC7E,MAAM,CAAC,UAAU,EAAE,qDAAqD,EAAE;QAC1E,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE,iEAAiE,EAAE;QAC7F,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,cAAc,EAAE,uEAAuE,EAAE;QAChG,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,mBAAmB,EAAE,+CAA+C,EAAE;QAC7E,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACrC,MAAM,kBAAkB,CACvB;YACC,MAAM,EAAE,OAAO,CAAC,MAAgB;YAChC,GAAG,EAAE,OAAO,CAAC,GAAc;YAC3B,EAAE,EAAE,OAAO,CAAC,EAAa;YACzB,SAAS,EAAE,OAAO,CAAC,SAAoB;YACvC,eAAe,EAAE,OAAO,CAAC,MAAiB;YAC1C,kBAAkB,EAAE,OAAO,CAAC,WAAsB;SAClD,EACD,MAAM,CACN,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAgB;IACnD,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BrB,CAAC;IAED,OAAO;SACL,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;SACpC,IAAI,CAAC,YAAY,CAAC;SAClB,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,EAAE;QAC5D,OAAO,EAAE,aAAa;KACtB,CAAC;SACD,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC7E,MAAM,CAAC,UAAU,EAAE,qDAAqD,EAAE;QAC1E,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE,iEAAiE,EAAE;QAC7F,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,cAAc,EAAE,uEAAuE,EAAE;QAChG,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,mBAAmB,EAAE,wDAAwD,EAAE;QACtF,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACrC,MAAM,kBAAkB,CACvB;YACC,MAAM,EAAE,OAAO,CAAC,MAAgB;YAChC,GAAG,EAAE,OAAO,CAAC,GAAc;YAC3B,EAAE,EAAE,OAAO,CAAC,EAAa;YACzB,SAAS,EAAE,OAAO,CAAC,SAAoB;YACvC,eAAe,EAAE,OAAO,CAAC,MAAiB;YAC1C,kBAAkB,EAAE,OAAO,CAAC,WAAsB;SAClD,EACD,MAAM,CACN,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,4 @@
1
- import { REPOSITORIES } from "../../lib/repositories";
1
+ import { getRepositories } from "../../lib/repositories";
2
2
  /**
3
3
  * Render a table row for ASCII table display
4
4
  */
@@ -19,7 +19,7 @@ export async function showRepo(options, logger) {
19
19
  console.log("\n📦 Current Repositories\n");
20
20
  const headers = ["Name", "Description", options.ssh ? "SSH URL" : "URL"];
21
21
  const tableRows = [headers];
22
- for (const repo of REPOSITORIES) {
22
+ for (const repo of getRepositories()) {
23
23
  tableRows.push([
24
24
  repo.name,
25
25
  repo.description || "",
@@ -36,7 +36,7 @@ export async function showRepo(options, logger) {
36
36
  }
37
37
  console.log("");
38
38
  // Print summary
39
- console.log(`Total repositories: ${REPOSITORIES.length}\n`);
39
+ console.log(`Total repositories: ${getRepositories().length}\n`);
40
40
  }
41
41
  catch (error) {
42
42
  const message = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/commands/show/repo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAMtD;;GAEG;AACH,SAAS,SAAS,CAAC,GAAa,EAAE,SAAmB;IACnD,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,SAAmB;IACxC,OAAO,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAoB,EAAE,MAAc;IACjE,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzE,MAAM,SAAS,GAAe,CAAC,OAAO,CAAC,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,CAAC,IAAI;gBACT,IAAI,CAAC,WAAW,IAAI,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;aACrC,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAC3C,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAC9D,CAAC;QAEF,cAAc;QACd,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/commands/show/repo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD;;GAEG;AACH,SAAS,SAAS,CAAC,GAAa,EAAE,SAAmB;IACnD,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,SAAmB;IACxC,OAAO,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAoB,EAAE,MAAc;IACjE,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzE,MAAM,SAAS,GAAe,CAAC,OAAO,CAAC,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,EAAE,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,CAAC,IAAI;gBACT,IAAI,CAAC,WAAW,IAAI,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;aACrC,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAC3C,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAC9D,CAAC;QAEF,cAAc;QACd,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAe,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,14 +1,30 @@
1
- export interface Repository {
1
+ export interface RepositoryManifestEntry {
2
2
  name: string;
3
3
  gh: string;
4
+ description?: string;
5
+ }
6
+ export interface RepositoryManifest {
7
+ umbrella: RepositoryManifestEntry;
8
+ repositories: RepositoryManifestEntry[];
9
+ }
10
+ export interface Repository extends RepositoryManifestEntry {
4
11
  url: string;
5
12
  sshUrl: string;
6
- description?: string;
7
13
  }
14
+ export declare function parseRepositoryManifest(raw: unknown, source: string): RepositoryManifest;
15
+ /** Clear cached manifest (for tests). */
16
+ export declare function resetRepositoryCache(): void;
17
+ /** Load the active repository manifest (override file or bundled default). */
18
+ export declare function getRepositoryManifest(): RepositoryManifest;
19
+ /** Where the active manifest was loaded from (`bundled`, a path, or `BLT_REPOSITORIES_PATH`). */
20
+ export declare function getRepositoryManifestSource(): string;
8
21
  /** Umbrella meta-repo used with `blt init -b` (single-root workspace). */
9
- export declare const BUNDLE_REPOSITORY: Repository;
22
+ export declare function getBundleRepository(): Repository;
10
23
  /**
11
- * Hardcoded list of valid repositories in the current working set
24
+ * Sibling repos cloned/pulled by getblt.sh (excludes the umbrella meta-repo).
25
+ * Run getblt.sh from the umbrella checkout root, not from a parent directory.
12
26
  */
13
- export declare const REPOSITORIES: Repository[];
27
+ export declare function getSubRepositories(): Repository[];
28
+ /** Full working set including the umbrella meta-repo (for display commands). */
29
+ export declare function getRepositories(): Repository[];
14
30
  //# sourceMappingURL=repositories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repositories.d.ts","sourceRoot":"","sources":["../../src/lib/repositories.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,EAAE,UAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,UAAU,EAwEpC,CAAC"}
1
+ {"version":3,"file":"repositories.d.ts","sourceRoot":"","sources":["../../src/lib/repositories.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,uBAAuB,CAAC;IAClC,YAAY,EAAE,uBAAuB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,UAAW,SAAQ,uBAAuB;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAoBxF;AAaD,yCAAyC;AACzC,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAwBD,8EAA8E;AAC9E,wBAAgB,qBAAqB,IAAI,kBAAkB,CAe1D;AAED,iGAAiG;AACjG,wBAAgB,2BAA2B,IAAI,MAAM,CAGpD;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,IAAI,UAAU,CAEhD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,UAAU,EAAE,CAEjD;AAED,gFAAgF;AAChF,wBAAgB,eAAe,IAAI,UAAU,EAAE,CAM9C"}
@@ -1,84 +1,102 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import bundledManifest from "./repositories.manifest.json";
4
+ function isManifestEntry(value) {
5
+ if (!value || typeof value !== "object")
6
+ return false;
7
+ const entry = value;
8
+ return typeof entry.name === "string" && typeof entry.gh === "string";
9
+ }
10
+ export function parseRepositoryManifest(raw, source) {
11
+ if (!raw || typeof raw !== "object") {
12
+ throw new Error(`${source}: expected a JSON object`);
13
+ }
14
+ const manifest = raw;
15
+ if (!isManifestEntry(manifest.umbrella)) {
16
+ throw new Error(`${source}: missing or invalid "umbrella" entry`);
17
+ }
18
+ if (!Array.isArray(manifest.repositories)) {
19
+ throw new Error(`${source}: missing or invalid "repositories" array`);
20
+ }
21
+ for (const [index, entry] of manifest.repositories.entries()) {
22
+ if (!isManifestEntry(entry)) {
23
+ throw new Error(`${source}: invalid repository at index ${index}`);
24
+ }
25
+ }
26
+ return {
27
+ umbrella: manifest.umbrella,
28
+ repositories: manifest.repositories,
29
+ };
30
+ }
31
+ function enrichRepo(entry) {
32
+ return {
33
+ ...entry,
34
+ url: `https://github.com/${entry.gh}.git`,
35
+ sshUrl: `git@github.com:${entry.gh}.git`,
36
+ };
37
+ }
38
+ let cachedManifest = null;
39
+ let cachedSource = null;
40
+ /** Clear cached manifest (for tests). */
41
+ export function resetRepositoryCache() {
42
+ cachedManifest = null;
43
+ cachedSource = null;
44
+ }
45
+ function loadManifestFile(path) {
46
+ const raw = JSON.parse(readFileSync(path, "utf-8"));
47
+ return parseRepositoryManifest(raw, path);
48
+ }
49
+ function resolveManifestPath() {
50
+ const envPath = process.env.BLT_REPOSITORIES_PATH?.trim();
51
+ if (envPath) {
52
+ if (!existsSync(envPath)) {
53
+ throw new Error(`BLT_REPOSITORIES_PATH does not exist: ${envPath}`);
54
+ }
55
+ return envPath;
56
+ }
57
+ const cwdPath = join(process.cwd(), "repositories.json");
58
+ if (existsSync(cwdPath)) {
59
+ return cwdPath;
60
+ }
61
+ return null;
62
+ }
63
+ /** Load the active repository manifest (override file or bundled default). */
64
+ export function getRepositoryManifest() {
65
+ if (cachedManifest) {
66
+ return cachedManifest;
67
+ }
68
+ const overridePath = resolveManifestPath();
69
+ if (overridePath) {
70
+ cachedManifest = loadManifestFile(overridePath);
71
+ cachedSource = overridePath;
72
+ return cachedManifest;
73
+ }
74
+ cachedManifest = parseRepositoryManifest(bundledManifest, "bundled manifest");
75
+ cachedSource = "bundled";
76
+ return cachedManifest;
77
+ }
78
+ /** Where the active manifest was loaded from (`bundled`, a path, or `BLT_REPOSITORIES_PATH`). */
79
+ export function getRepositoryManifestSource() {
80
+ getRepositoryManifest();
81
+ return cachedSource ?? "bundled";
82
+ }
1
83
  /** Umbrella meta-repo used with `blt init -b` (single-root workspace). */
2
- export const BUNDLE_REPOSITORY = {
3
- name: "blt",
4
- gh: "bltcore-com/blt",
5
- url: "https://github.com/bltcore-com/blt.git",
6
- sshUrl: "git@github.com:bltcore-com/blt.git",
7
- description: "BLT umbrella workspace",
8
- };
84
+ export function getBundleRepository() {
85
+ return enrichRepo(getRepositoryManifest().umbrella);
86
+ }
9
87
  /**
10
- * Hardcoded list of valid repositories in the current working set
88
+ * Sibling repos cloned/pulled by getblt.sh (excludes the umbrella meta-repo).
89
+ * Run getblt.sh from the umbrella checkout root, not from a parent directory.
11
90
  */
12
- export const REPOSITORIES = [
13
- {
14
- name: "blt",
15
- gh: "bltcore-com/blt",
16
- url: "https://github.com/bltcore-com/blt.git",
17
- sshUrl: "git@github.com:bltcore-com/blt.git",
18
- description: "workspace root",
19
- },
20
- {
21
- name: "tools",
22
- gh: "bltcore-com/tools",
23
- url: "https://github.com/bltcore-com/tools.git",
24
- sshUrl: "git@github.com:bltcore-com/tools.git",
25
- description: "tools repository",
26
- },
27
- {
28
- name: "data",
29
- gh: "bltcore-com/blt-core-data",
30
- url: "https://github.com/bltcore-com/blt-core-data.git",
31
- sshUrl: "git@github.com:bltcore-com/blt-core-data.git",
32
- description: "data schema & sample data",
33
- },
34
- {
35
- name: "pos",
36
- gh: "bltcore-com/blt-core-pos",
37
- url: "https://github.com/bltcore-com/blt-core-pos.git",
38
- sshUrl: "git@github.com:bltcore-com/blt-core-pos.git",
39
- description: "core pos application",
40
- },
41
- {
42
- name: "kiosk",
43
- gh: "bltcore-com/blt-core-kiosk",
44
- url: "https://github.com/bltcore-com/blt-core-kiosk.git",
45
- sshUrl: "git@github.com:bltcore-com/blt-core-kiosk.git",
46
- description: "self-service kiosk application",
47
- },
48
- {
49
- name: "gateway",
50
- gh: "bltcore-com/blt-device-gateway",
51
- url: "https://github.com/bltcore-com/blt-device-gateway.git",
52
- sshUrl: "git@github.com:bltcore-com/blt-device-gateway.git",
53
- description: "device manager/gateway",
54
- },
55
- {
56
- name: "agents",
57
- gh: "bltcore-com/blt-core-agents",
58
- url: "https://github.com/bltcore-com/blt-core-agents.git",
59
- sshUrl: "git@github.com:bltcore-com/blt-core-agents.git",
60
- description: "hospitality agents repository",
61
- },
62
- {
63
- name: "deploy",
64
- gh: "bltcore-com/deploy",
65
- url: "https://github.com/bltcore-com/deploy.git",
66
- sshUrl: "git@github.com:bltcore-com/deploy.git",
67
- description: "deployment scripts",
68
- },
69
- {
70
- name: "customers",
71
- gh: "bltcore-com/customers",
72
- url: "https://github.com/bltcore-com/customers.git",
73
- sshUrl: "git@github.com:bltcore-com/customers.git",
74
- description: "customer repository",
75
- },
76
- {
77
- name: "website",
78
- gh: "bltcore-com/website",
79
- url: "https://github.com/bltcore-com/website.git",
80
- sshUrl: "git@github.com:bltcore-com/website.git",
81
- description: "BLTWAI homepage",
82
- },
83
- ];
91
+ export function getSubRepositories() {
92
+ return getRepositoryManifest().repositories.map(enrichRepo);
93
+ }
94
+ /** Full working set including the umbrella meta-repo (for display commands). */
95
+ export function getRepositories() {
96
+ const bundle = getBundleRepository();
97
+ return [
98
+ { ...bundle, description: bundle.description ?? "workspace root" },
99
+ ...getSubRepositories(),
100
+ ];
101
+ }
84
102
  //# sourceMappingURL=repositories.js.map