@codemarc/blt 1.0.0 → 1.2.0

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 (100) hide show
  1. package/README.md +133 -7
  2. package/dist/blt +28 -0
  3. package/dist/blt.d.ts +3 -0
  4. package/dist/blt.d.ts.map +1 -0
  5. package/dist/blt.js.map +1 -0
  6. package/dist/commands/bucket/download.d.ts +7 -0
  7. package/dist/commands/bucket/download.d.ts.map +1 -0
  8. package/dist/commands/bucket/download.js +28 -0
  9. package/dist/commands/bucket/download.js.map +1 -0
  10. package/dist/commands/bucket/list.d.ts +9 -0
  11. package/dist/commands/bucket/list.d.ts.map +1 -0
  12. package/dist/commands/bucket/list.js +69 -0
  13. package/dist/commands/bucket/list.js.map +1 -0
  14. package/dist/commands/bucket/names.d.ts +5 -0
  15. package/dist/commands/bucket/names.d.ts.map +1 -0
  16. package/dist/commands/bucket/names.js +53 -0
  17. package/dist/commands/bucket/names.js.map +1 -0
  18. package/dist/commands/bucket/upload-folder.d.ts +10 -0
  19. package/dist/commands/bucket/upload-folder.d.ts.map +1 -0
  20. package/dist/commands/bucket/upload-folder.js +84 -0
  21. package/dist/commands/bucket/upload-folder.js.map +1 -0
  22. package/dist/commands/bucket/upload.d.ts +9 -0
  23. package/dist/commands/bucket/upload.d.ts.map +1 -0
  24. package/dist/commands/bucket/upload.js +32 -0
  25. package/dist/commands/bucket/upload.js.map +1 -0
  26. package/dist/commands/bucket/url.d.ts +9 -0
  27. package/dist/commands/bucket/url.d.ts.map +1 -0
  28. package/dist/commands/bucket/url.js +32 -0
  29. package/dist/commands/bucket/url.js.map +1 -0
  30. package/dist/commands/bucket/utils.d.ts +3 -0
  31. package/dist/commands/bucket/utils.d.ts.map +1 -0
  32. package/dist/commands/bucket/utils.js +28 -0
  33. package/dist/commands/bucket/utils.js.map +1 -0
  34. package/dist/commands/bucket.d.ts +3 -0
  35. package/dist/commands/bucket.d.ts.map +1 -1
  36. package/dist/commands/bucket.js +53 -325
  37. package/dist/commands/bucket.js.map +1 -1
  38. package/dist/commands/check.js +7 -13
  39. package/dist/commands/check.js.map +1 -1
  40. package/dist/commands/cleanup.js +12 -48
  41. package/dist/commands/cleanup.js.map +1 -1
  42. package/dist/commands/data.js +37 -43
  43. package/dist/commands/data.js.map +1 -1
  44. package/dist/commands/env.js +3 -6
  45. package/dist/commands/env.js.map +1 -1
  46. package/dist/commands/image/color.js +12 -52
  47. package/dist/commands/image/color.js.map +1 -1
  48. package/dist/commands/image/convert.js +28 -68
  49. package/dist/commands/image/convert.js.map +1 -1
  50. package/dist/commands/image/enhance.js +12 -52
  51. package/dist/commands/image/enhance.js.map +1 -1
  52. package/dist/commands/image/sharpen.js +24 -64
  53. package/dist/commands/image/sharpen.js.map +1 -1
  54. package/dist/commands/image.js +10 -13
  55. package/dist/commands/image.js.map +1 -1
  56. package/dist/commands/repo.js +3 -9
  57. package/dist/commands/repo.js.map +1 -1
  58. package/dist/commands/version/sql.d.ts +6 -0
  59. package/dist/commands/version/sql.d.ts.map +1 -0
  60. package/dist/commands/version/sql.js +35 -0
  61. package/dist/commands/version/sql.js.map +1 -0
  62. package/dist/commands/version/string.d.ts +13 -0
  63. package/dist/commands/version/string.d.ts.map +1 -0
  64. package/dist/commands/version/string.js +52 -0
  65. package/dist/commands/version/string.js.map +1 -0
  66. package/dist/commands/version/update-version.d.ts +3 -0
  67. package/dist/commands/version/update-version.d.ts.map +1 -0
  68. package/dist/commands/version/update-version.js +97 -0
  69. package/dist/commands/version/update-version.js.map +1 -0
  70. package/dist/commands/version/update.d.ts +8 -0
  71. package/dist/commands/version/update.d.ts.map +1 -0
  72. package/dist/commands/version/update.js +195 -0
  73. package/dist/commands/version/update.js.map +1 -0
  74. package/dist/commands/version.d.ts +6 -0
  75. package/dist/commands/version.d.ts.map +1 -0
  76. package/dist/commands/version.js +66 -0
  77. package/dist/commands/version.js.map +1 -0
  78. package/dist/config/config.js +11 -15
  79. package/dist/config/config.js.map +1 -1
  80. package/dist/lib/constants.js +4 -8
  81. package/dist/lib/constants.js.map +1 -1
  82. package/dist/lib/data-generator.js +27 -31
  83. package/dist/lib/data-generator.js.map +1 -1
  84. package/dist/lib/database-runner.js +17 -25
  85. package/dist/lib/database-runner.js.map +1 -1
  86. package/dist/lib/instance-discovery.js +14 -19
  87. package/dist/lib/instance-discovery.js.map +1 -1
  88. package/dist/lib/schema-discovery.js +18 -24
  89. package/dist/lib/schema-discovery.js.map +1 -1
  90. package/dist/lib/sql-builder.js +22 -29
  91. package/dist/lib/sql-builder.js.map +1 -1
  92. package/dist/lib/version-types.d.ts +77 -0
  93. package/dist/lib/version-types.d.ts.map +1 -0
  94. package/dist/lib/version-types.js +8 -0
  95. package/dist/lib/version-types.js.map +1 -0
  96. package/dist/lib/yaml-converter.js +17 -60
  97. package/dist/lib/yaml-converter.js.map +1 -1
  98. package/dist/utils/supabase.js +5 -11
  99. package/dist/utils/supabase.js.map +1 -1
  100. package/package.json +13 -8
@@ -1,11 +1,5 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = repoCommand;
7
- const debug_1 = __importDefault(require("debug"));
8
- const log = (0, debug_1.default)("blt:repo");
1
+ import debug from "debug";
2
+ const log = debug("blt:repo");
9
3
  const REPOSITORIES = [
10
4
  {
11
5
  name: "data",
@@ -23,7 +17,7 @@ const REPOSITORIES = [
23
17
  /**
24
18
  * Register repo commands with the CLI program
25
19
  */
26
- function repoCommand(program) {
20
+ export default function repoCommand(program) {
27
21
  // Main repo command - shows help for subcommands
28
22
  program
29
23
  .command("repo", "Manage repository clones and working projects")
@@ -1 +1 @@
1
- {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/commands/repo.ts"],"names":[],"mappings":";;;;;AAuBA,8BAgDC;AAtED,kDAA0B;AAE1B,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,UAAU,CAAC,CAAC;AAE9B,MAAM,YAAY,GAAG;IACnB;QACE,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,kDAAkD;KACxD;IACD;QACE,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,iDAAiD;KACvD;IACD;QACE,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,uDAAuD;KAC7D;CACF,CAAC;AAEF;;GAEG;AACH,SAAwB,WAAW,CAAC,OAAgB;IAClD,iDAAiD;IACjD,OAAO;SACJ,OAAO,CAAC,MAAM,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEL,2BAA2B;IAC3B,OAAO;SACJ,OAAO,CAAC,WAAW,EAAE,gDAAgD,CAAC;SACtE,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,EAAE;QAC/D,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;KAC7B,CAAC;SACD,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC1C,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,qBAAqB;IACrB,OAAO;SACJ,OAAO,CAAC,YAAY,EAAE,4BAA4B,CAAC;SACnD,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAc,CAAC;YACrC,GAAG,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YACvC,2CAA2C;YAC3C,kEAAkE;YAClE,MAAM,CAAC,IAAI,CAAC,4BAA4B,QAAQ,qBAAqB,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/commands/repo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AAE9B,MAAM,YAAY,GAAG;IACnB;QACE,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,kDAAkD;KACxD;IACD;QACE,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,iDAAiD;KACvD;IACD;QACE,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,uDAAuD;KAC7D;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAgB;IAClD,iDAAiD;IACjD,OAAO;SACJ,OAAO,CAAC,MAAM,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEL,2BAA2B;IAC3B,OAAO;SACJ,OAAO,CAAC,WAAW,EAAE,gDAAgD,CAAC;SACtE,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,EAAE;QAC/D,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;KAC7B,CAAC;SACD,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC1C,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,qBAAqB;IACrB,OAAO;SACJ,OAAO,CAAC,YAAY,EAAE,4BAA4B,CAAC;SACnD,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAc,CAAC;YACrC,GAAG,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YACvC,2CAA2C;YAC3C,kEAAkE;YAClE,MAAM,CAAC,IAAI,CAAC,4BAA4B,QAAQ,qBAAqB,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Logger } from "@caporal/core";
2
+ /**
3
+ * Generate SQL to upsert version.json to settings table
4
+ */
5
+ export declare function generateVersionSQL(logger: Logger): void;
6
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../src/commands/version/sql.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiCvD"}
@@ -0,0 +1,35 @@
1
+ import { readFileSync, existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ /**
4
+ * Generate SQL to upsert version.json to settings table
5
+ */
6
+ export function generateVersionSQL(logger) {
7
+ try {
8
+ const rootDir = process.cwd();
9
+ const versionJsonPath = join(rootDir, "version.json");
10
+ if (!existsSync(versionJsonPath)) {
11
+ logger.error("version.json not found. Run 'blt version update' first.");
12
+ process.exit(1);
13
+ }
14
+ const versionInfo = JSON.parse(readFileSync(versionJsonPath, "utf-8"));
15
+ // Convert version.json to JSON string for SQL
16
+ const propsJson = JSON.stringify(versionInfo);
17
+ // Escape single quotes in JSON for SQL
18
+ const escapedPropsJson = propsJson.replace(/'/g, "''");
19
+ // Generate SQL upsert statement
20
+ // Match format used in other settings INSERT statements (no casts in VALUES)
21
+ const sql = `INSERT INTO settings (id, name, kind, props) VALUES
22
+ ('00000000-0000-0000-0000-ffffffffffff', 'version', 'meta', '${escapedPropsJson}'::jsonb)
23
+ ON CONFLICT (id) DO UPDATE SET
24
+ name = COALESCE(EXCLUDED.name, settings.name),
25
+ kind = COALESCE(EXCLUDED.kind, settings.kind),
26
+ props = COALESCE(EXCLUDED.props, settings.props);`;
27
+ console.log(sql);
28
+ }
29
+ catch (error) {
30
+ const message = error instanceof Error ? error.message : String(error);
31
+ logger.error(`Failed to generate SQL: ${message}`);
32
+ process.exit(1);
33
+ }
34
+ }
35
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../../src/commands/version/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAEvE,8CAA8C;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE9C,uCAAuC;QACvC,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEvD,gCAAgC;QAChC,6EAA6E;QAC7E,MAAM,GAAG,GAAG;+DAC+C,gBAAgB;;;;sDAIzB,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,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,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Logger } from "@caporal/core";
2
+ interface StringOptions {
3
+ short?: boolean;
4
+ full?: boolean;
5
+ date?: boolean;
6
+ only?: boolean;
7
+ }
8
+ /**
9
+ * Display version as a formatted string
10
+ */
11
+ export declare function displayVersionString(options: StringOptions, logger: Logger): void;
12
+ export {};
13
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/commands/version/string.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAa5C,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA+CjF"}
@@ -0,0 +1,52 @@
1
+ import { readFileSync, existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { format as formatBuildNumber } from 'build-number-generator';
4
+ /**
5
+ * Display version as a formatted string
6
+ */
7
+ export function displayVersionString(options, logger) {
8
+ try {
9
+ const rootDir = process.cwd();
10
+ const versionJsonPath = join(rootDir, "version.json");
11
+ if (!existsSync(versionJsonPath)) {
12
+ logger.error("version.json not found. Run 'blt version update' first.");
13
+ process.exit(1);
14
+ }
15
+ const versionInfo = JSON.parse(readFileSync(versionJsonPath, "utf-8"));
16
+ // Determine format: default to short, --full overrides to full
17
+ const useFull = options.full === true;
18
+ const useShort = options.short === true;
19
+ const useDate = options.date === true;
20
+ const useOnly = options.only === true;
21
+ let versionString;
22
+ let buildnumString;
23
+ if (useDate) {
24
+ buildnumString = formatBuildNumber(versionInfo.buildnum);
25
+ }
26
+ else {
27
+ buildnumString = versionInfo.buildnum;
28
+ }
29
+ if (useFull) {
30
+ // Full format: component vversion.buildnum - branch hash(full-commit)
31
+ versionString = `${versionInfo.component} v${versionInfo.version} ${buildnumString} - ${versionInfo.build.branch} hash(${versionInfo.build.commit})`;
32
+ }
33
+ else if (useShort) {
34
+ versionString = `${versionInfo.component} v${versionInfo.version} ${buildnumString}`;
35
+ }
36
+ else if (useOnly) {
37
+ versionString = buildnumString;
38
+ }
39
+ else {
40
+ // defaultShort format: component vversion buildnum - branch (short-commit)
41
+ const shortCommit = versionInfo.build.commit?.substring(0, 7) ?? "";
42
+ versionString = `${versionInfo.component} v${versionInfo.version} ${buildnumString} - ${versionInfo.build.branch} (${shortCommit})`;
43
+ }
44
+ console.log(versionString);
45
+ }
46
+ catch (error) {
47
+ const message = error instanceof Error ? error.message : String(error);
48
+ logger.error(`Failed to read version.json: ${message}`);
49
+ process.exit(1);
50
+ }
51
+ }
52
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../src/commands/version/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAqBrE;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAsB,EAAE,MAAc;IACzE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAEpF,+DAA+D;QAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QAEtC,IAAI,aAAqB,CAAC;QAC1B,IAAI,cAAsB,CAAC;QAE3B,IAAI,OAAO,EAAE,CAAC;YACZ,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC;QACxC,CAAC;QAGD,IAAI,OAAO,EAAE,CAAC;YACZ,sEAAsE;YACtE,aAAa,GAAG,GAAG,WAAW,CAAC,SAAS,KAAK,WAAW,CAAC,OAAO,IAAI,cAAc,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,SAAS,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACvJ,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,aAAa,GAAG,GAAG,WAAW,CAAC,SAAS,KAAK,WAAW,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;QACvF,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACnB,aAAa,GAAG,cAAc,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,2EAA2E;YAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACpE,aAAa,GAAG,GAAG,WAAW,CAAC,SAAS,KAAK,WAAW,CAAC,OAAO,IAAI,cAAc,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,GAAG,CAAC;QACtI,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7B,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,gCAAgC,OAAO,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export {};
3
+ //# sourceMappingURL=update-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-version.d.ts","sourceRoot":"","sources":["../../../src/commands/version/update-version.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env bun
2
+ import { readFileSync, writeFileSync } from "fs";
3
+ import { join } from "path";
4
+ import { execSync } from "child_process";
5
+ function getGitCommit() {
6
+ try {
7
+ return execSync("git rev-parse HEAD", { encoding: "utf-8" }).trim();
8
+ }
9
+ catch {
10
+ return "";
11
+ }
12
+ }
13
+ function getGitBranch() {
14
+ try {
15
+ return execSync("git rev-parse --abbrev-ref HEAD", { encoding: "utf-8" }).trim();
16
+ }
17
+ catch {
18
+ return "";
19
+ }
20
+ }
21
+ function getBuildTime() {
22
+ return new Date().toISOString();
23
+ }
24
+ function getRuntimeVersion() {
25
+ try {
26
+ if (typeof Bun !== "undefined") {
27
+ return Bun.version;
28
+ }
29
+ // Fallback to node version
30
+ return process.versions.node ? `v${process.versions.node}` : "";
31
+ }
32
+ catch {
33
+ return "";
34
+ }
35
+ }
36
+ function getPackageManagerVersion() {
37
+ try {
38
+ if (typeof Bun !== "undefined") {
39
+ return Bun.version;
40
+ }
41
+ // Try npm
42
+ const npmVersion = execSync("npm --version", { encoding: "utf-8" }).trim();
43
+ if (npmVersion)
44
+ return npmVersion;
45
+ }
46
+ catch {
47
+ // Ignore errors
48
+ }
49
+ return "";
50
+ }
51
+ function getPackageManager() {
52
+ if (typeof Bun !== "undefined") {
53
+ return "bun";
54
+ }
55
+ // Check for packageManager field in package.json
56
+ const packageJson = JSON.parse(readFileSync("package.json", "utf-8"));
57
+ if (packageJson.packageManager) {
58
+ return packageJson.packageManager.split("@")[0];
59
+ }
60
+ return "npm";
61
+ }
62
+ function getRuntimeType() {
63
+ if (typeof Bun !== "undefined") {
64
+ return "bun";
65
+ }
66
+ return "node";
67
+ }
68
+ function main() {
69
+ const rootDir = process.cwd();
70
+ const versionJsonPath = join(rootDir, "version.json");
71
+ const packageJsonPath = join(rootDir, "package.json");
72
+ // Read current version.json
73
+ let versionInfo;
74
+ try {
75
+ versionInfo = JSON.parse(readFileSync(versionJsonPath, "utf-8"));
76
+ }
77
+ catch {
78
+ console.error("Failed to read version.json");
79
+ process.exit(1);
80
+ }
81
+ // Read package.json for version
82
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
83
+ // Update version info
84
+ versionInfo.version = packageJson.version;
85
+ versionInfo.runtime.type = getRuntimeType();
86
+ versionInfo.runtime.version = getRuntimeVersion();
87
+ versionInfo.build.commit = getGitCommit();
88
+ versionInfo.build.branch = getGitBranch();
89
+ versionInfo.build.time = getBuildTime();
90
+ versionInfo.metadata.packageManager = getPackageManager();
91
+ versionInfo.metadata.packageManagerVersion = getPackageManagerVersion();
92
+ // Write updated version.json
93
+ writeFileSync(versionJsonPath, JSON.stringify(versionInfo, null, 2) + "\n");
94
+ console.log("Updated version.json");
95
+ }
96
+ main();
97
+ //# sourceMappingURL=update-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-version.js","sourceRoot":"","sources":["../../../src/commands/version/update-version.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Update the version.json file with the current build information
4
+ * @param rootDir - The root directory of the project
5
+ * @returns void
6
+ */
7
+ export declare function updateVersion(rootDir?: string): void;
8
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/version/update.ts"],"names":[],"mappings":";AA8JA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,MAAsB,GAAG,IAAI,CAiDnE"}
@@ -0,0 +1,195 @@
1
+ #!/usr/bin/env bun
2
+ import { readFileSync, writeFileSync, existsSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { execSync } from "node:child_process";
5
+ import { generate } from "build-number-generator";
6
+ function getGitCommit(rootDir) {
7
+ try {
8
+ return execSync("git rev-parse HEAD", { encoding: "utf-8", cwd: rootDir }).trim();
9
+ }
10
+ catch {
11
+ return "";
12
+ }
13
+ }
14
+ function getGitBranch(rootDir) {
15
+ try {
16
+ return execSync("git rev-parse --abbrev-ref HEAD", { encoding: "utf-8", cwd: rootDir }).trim();
17
+ }
18
+ catch {
19
+ return "";
20
+ }
21
+ }
22
+ function getBuildTime() {
23
+ return new Date().toISOString();
24
+ }
25
+ function getRuntimeVersion() {
26
+ try {
27
+ if (typeof Bun !== "undefined") {
28
+ return Bun.version;
29
+ }
30
+ // Fallback to node version
31
+ return process.versions.node ? `v${process.versions.node}` : "";
32
+ }
33
+ catch {
34
+ return "";
35
+ }
36
+ }
37
+ function getPackageManagerVersion() {
38
+ try {
39
+ if (typeof Bun !== "undefined") {
40
+ return Bun.version;
41
+ }
42
+ // Try npm
43
+ const npmVersion = execSync("npm --version", { encoding: "utf-8" }).trim();
44
+ if (npmVersion)
45
+ return npmVersion;
46
+ }
47
+ catch {
48
+ // Ignore errors
49
+ }
50
+ return "";
51
+ }
52
+ function getPackageManager(rootDir) {
53
+ if (typeof Bun !== "undefined") {
54
+ return "bun";
55
+ }
56
+ // Check for packageManager field in package.json
57
+ try {
58
+ const packageJsonPath = join(rootDir, "package.json");
59
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
60
+ if (packageJson.packageManager) {
61
+ return packageJson.packageManager.split("@")[0];
62
+ }
63
+ }
64
+ catch {
65
+ // Ignore errors
66
+ }
67
+ return "npm";
68
+ }
69
+ function getRuntimeType() {
70
+ if (typeof Bun !== "undefined") {
71
+ return "bun";
72
+ }
73
+ return "node";
74
+ }
75
+ /**
76
+ * Detect component name from package.json or directory
77
+ */
78
+ function detectComponentName(packageJson, rootDir) {
79
+ // Try to extract component name from package.json name
80
+ if (packageJson.name) {
81
+ // Handle scoped packages like "@codemarc/blt" -> "cli"
82
+ const nameParts = packageJson.name.split("/");
83
+ const lastPart = nameParts[nameParts.length - 1];
84
+ // Map known package names to component names
85
+ if (lastPart === "blt" || lastPart === "blt-cli")
86
+ return "cli";
87
+ if (lastPart === "blt-core-pos")
88
+ return "pos";
89
+ if (lastPart === "blt-core-devops")
90
+ return "devops";
91
+ if (lastPart === "data")
92
+ return "data";
93
+ if (lastPart === "deploy")
94
+ return "deploy";
95
+ if (lastPart === "gateway")
96
+ return "gateway";
97
+ return lastPart;
98
+ }
99
+ // Fallback to directory name
100
+ const pathParts = rootDir.split("/");
101
+ const dirName = pathParts[pathParts.length - 1];
102
+ return dirName || "unknown";
103
+ }
104
+ /**
105
+ * Generate build number
106
+ */
107
+ function generateBuildNumber() {
108
+ try {
109
+ return generate();
110
+ }
111
+ catch {
112
+ return "";
113
+ }
114
+ }
115
+ /**
116
+ * Create a default version.json structure
117
+ */
118
+ function createDefaultVersionInfo(packageJson, rootDir) {
119
+ return {
120
+ buildnum: generateBuildNumber(),
121
+ component: detectComponentName(packageJson, rootDir),
122
+ version: packageJson.version || "0.0.0",
123
+ runtime: {
124
+ type: getRuntimeType(),
125
+ version: getRuntimeVersion(),
126
+ },
127
+ build: {
128
+ commit: getGitCommit(rootDir),
129
+ branch: getGitBranch(rootDir),
130
+ time: getBuildTime(),
131
+ },
132
+ metadata: {
133
+ packageManager: getPackageManager(rootDir),
134
+ packageManagerVersion: getPackageManagerVersion(),
135
+ },
136
+ };
137
+ }
138
+ /**
139
+ * Update the version.json file with the current build information
140
+ * @param rootDir - The root directory of the project
141
+ * @returns void
142
+ */
143
+ export function updateVersion(rootDir = process.cwd()) {
144
+ const versionJsonPath = join(rootDir, "version.json");
145
+ const packageJsonPath = join(rootDir, "package.json");
146
+ // Read package.json for version
147
+ let packageJson;
148
+ try {
149
+ packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
150
+ }
151
+ catch {
152
+ throw new Error("Failed to read package.json");
153
+ }
154
+ // Read current version.json or create default
155
+ let versionInfo;
156
+ if (existsSync(versionJsonPath)) {
157
+ try {
158
+ versionInfo = JSON.parse(readFileSync(versionJsonPath, "utf-8"));
159
+ }
160
+ catch {
161
+ // If file exists but is invalid, create default
162
+ versionInfo = createDefaultVersionInfo(packageJson, rootDir);
163
+ }
164
+ }
165
+ else {
166
+ // File doesn't exist, create default structure
167
+ versionInfo = createDefaultVersionInfo(packageJson, rootDir);
168
+ }
169
+ // Update version info
170
+ versionInfo.buildnum = generateBuildNumber();
171
+ versionInfo.version = packageJson.version || "0.0.0";
172
+ versionInfo.runtime.type = getRuntimeType();
173
+ versionInfo.runtime.version = getRuntimeVersion();
174
+ versionInfo.build.commit = getGitCommit(rootDir);
175
+ versionInfo.build.branch = getGitBranch(rootDir);
176
+ versionInfo.build.time = getBuildTime();
177
+ versionInfo.metadata.packageManager = getPackageManager(rootDir);
178
+ versionInfo.metadata.packageManagerVersion = getPackageManagerVersion();
179
+ // Write updated version.json with buildnum at the top
180
+ const orderedVersionInfo = {
181
+ buildnum: versionInfo.buildnum,
182
+ component: versionInfo.component,
183
+ version: versionInfo.version,
184
+ runtime: versionInfo.runtime,
185
+ build: versionInfo.build,
186
+ metadata: versionInfo.metadata,
187
+ };
188
+ writeFileSync(versionJsonPath, `${JSON.stringify(orderedVersionInfo, null, 2)}\n`);
189
+ console.log("Updated version.json");
190
+ }
191
+ // Allow running as a script
192
+ if (import.meta.main) {
193
+ updateVersion();
194
+ }
195
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/version/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Program } from "@caporal/core";
2
+ /**
3
+ * Register version commands with the CLI program
4
+ */
5
+ export default function versionCommand(program: Program): void;
6
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,eAAe,CAAC;AAKrD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE,OAAO,QA+DtD"}
@@ -0,0 +1,66 @@
1
+ import { updateVersion } from "./version/update";
2
+ import { displayVersionString } from "./version/string";
3
+ import { generateVersionSQL } from "./version/sql";
4
+ /**
5
+ * Register version commands with the CLI program
6
+ */
7
+ export default function versionCommand(program) {
8
+ // Main version command - shows help for subcommands
9
+ const versionHelpText = `
10
+ version management utilities
11
+
12
+ Usage:
13
+ blt version <operation>
14
+
15
+ Available operations:
16
+ update Update version.json with current build information
17
+ string Display version as a formatted string
18
+ sql Generate SQL to upsert version.json to settings table
19
+
20
+ Run 'blt version <operation> --help' for more information on a specific command.
21
+ `;
22
+ program
23
+ .command("version", "version management")
24
+ .help(versionHelpText)
25
+ .action(() => {
26
+ console.log(versionHelpText);
27
+ });
28
+ // Update version.json
29
+ program
30
+ .command("version update", "Update version.json with current build information")
31
+ .hide()
32
+ .action(async ({ logger }) => {
33
+ try {
34
+ // Use current working directory where the command is run
35
+ const rootDir = process.cwd();
36
+ logger.info("Updating version.json...");
37
+ // Call the update function directly
38
+ updateVersion(rootDir);
39
+ logger.info("Version information updated successfully");
40
+ }
41
+ catch (error) {
42
+ const message = error instanceof Error ? error.message : String(error);
43
+ logger.error(`Failed to update version.json: ${message}`);
44
+ process.exit(1);
45
+ }
46
+ });
47
+ // Display version string
48
+ program
49
+ .command("version string", "Display version as a formatted string")
50
+ .hide()
51
+ .option("-d, --date", "Display buildnum as date", { default: false })
52
+ .option("-o, --only", "Display buildnum as date", { default: false })
53
+ .option("-s, --short", "Display short version (7-char commit hash)", { default: false })
54
+ .option("-f, --full", "Display full version (full commit hash)", { default: false })
55
+ .action(async ({ options, logger }) => {
56
+ displayVersionString(options, logger);
57
+ });
58
+ // Generate SQL to upsert version.json to settings table
59
+ program
60
+ .command("version sql", "Generate SQL to upsert version.json to settings table")
61
+ .hide()
62
+ .action(async ({ logger }) => {
63
+ generateVersionSQL(logger);
64
+ });
65
+ }
66
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAgB;IACtD,oDAAoD;IACpD,MAAM,eAAe,GAAG;;;;;;;;;;;;CAYxB,CAAC;IAED,OAAO;SACL,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC;SACxC,IAAI,CAAC,eAAe,CAAC;SACrB,MAAM,CAAC,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEJ,sBAAsB;IACtB,OAAO;SACL,OAAO,CAAC,gBAAgB,EAAE,oDAAoD,CAAC;SAC/E,IAAI,EAAE;SACN,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;QAChD,IAAI,CAAC;YACJ,yDAAyD;YACzD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAExC,oCAAoC;YACpC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEvB,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;IAEJ,yBAAyB;IACzB,OAAO;SACL,OAAO,CAAC,gBAAgB,EAAE,uCAAuC,CAAC;SAClE,IAAI,EAAE;SACN,MAAM,CAAC,YAAY,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SACpE,MAAM,CAAC,YAAY,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SACpE,MAAM,CAAC,aAAa,EAAE,4CAA4C,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SACvF,MAAM,CAAC,YAAY,EAAE,yCAAyC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAoG,EAAE,EAAE;QACvI,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEJ,wDAAwD;IACxD,OAAO;SACL,OAAO,CAAC,aAAa,EAAE,uDAAuD,CAAC;SAC/E,IAAI,EAAE;SACN,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;QAChD,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadConfig = loadConfig;
4
- exports.getConfig = getConfig;
5
- const fs_1 = require("fs");
6
- const path_1 = require("path");
7
- const os_1 = require("os");
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
8
4
  const DEFAULT_CONFIG = {
9
5
  schemaBase: './schema',
10
6
  distPath: './dist',
@@ -17,23 +13,23 @@ const DEFAULT_CONFIG = {
17
13
  * 4. Environment variables (BLT_SCHEMA_BASE, BLT_DIST_PATH)
18
14
  * 5. Default values
19
15
  */
20
- function loadConfig() {
16
+ export function loadConfig() {
21
17
  let config = { ...DEFAULT_CONFIG };
22
18
  // Try loading from files
23
19
  const configPaths = [
24
- (0, path_1.join)(process.cwd(), 'blt.config.json'),
25
- (0, path_1.join)(process.cwd(), '.bltrc'),
26
- (0, path_1.join)((0, os_1.homedir)(), '.blt', 'config.json'),
20
+ join(process.cwd(), 'blt.config.json'),
21
+ join(process.cwd(), '.bltrc'),
22
+ join(homedir(), '.blt', 'config.json'),
27
23
  ];
28
24
  for (const configPath of configPaths) {
29
- if ((0, fs_1.existsSync)(configPath)) {
25
+ if (existsSync(configPath)) {
30
26
  try {
31
- const fileConfig = JSON.parse((0, fs_1.readFileSync)(configPath, 'utf8'));
27
+ const fileConfig = JSON.parse(readFileSync(configPath, 'utf8'));
32
28
  config = { ...config, ...fileConfig };
33
29
  console.log(`Loaded config from: ${configPath}`);
34
30
  break;
35
31
  }
36
- catch (error) {
32
+ catch (_error) {
37
33
  console.warn(`Failed to parse config file: ${configPath}`);
38
34
  }
39
35
  }
@@ -48,7 +44,7 @@ function loadConfig() {
48
44
  return config;
49
45
  }
50
46
  let cachedConfig = null;
51
- function getConfig() {
47
+ export function getConfig() {
52
48
  if (!cachedConfig) {
53
49
  cachedConfig = loadConfig();
54
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";;AAuBA,gCAgCC;AAID,8BAKC;AAhED,2BAA8C;AAC9C,+BAA4B;AAC5B,2BAA6B;AAQ7B,MAAM,cAAc,GAAc;IAChC,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF;;;;;;;GAOG;AACH,SAAgB,UAAU;IACxB,IAAI,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IAEnC,yBAAyB;IACzB,MAAM,WAAW,GAAG;QAClB,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC;QACtC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QAC7B,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,MAAM,EAAE,aAAa,CAAC;KACvC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;gBACjD,MAAM;YACR,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C,SAAgB,SAAS;IACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlC,MAAM,cAAc,GAAc;IAChC,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IAEnC,yBAAyB;IACzB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC;KACvC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;gBACjD,MAAM;YACR,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}