@wavehouse/chtypes 0.5.2 → 1.0.2

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 (195) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +34 -38
  3. package/dist/abi1/buildinfo.d.ts +40 -0
  4. package/dist/abi1/buildinfo.d.ts.map +1 -0
  5. package/dist/abi1/buildinfo.js +83 -0
  6. package/dist/abi1/buildinfo.js.map +1 -0
  7. package/dist/abi1/calls.gen.d.ts +55 -0
  8. package/dist/abi1/calls.gen.d.ts.map +1 -0
  9. package/dist/abi1/calls.gen.js +110 -0
  10. package/dist/abi1/calls.gen.js.map +1 -0
  11. package/dist/abi1/decls.gen.d.ts +115 -0
  12. package/dist/abi1/decls.gen.d.ts.map +1 -0
  13. package/dist/abi1/decls.gen.js +1613 -0
  14. package/dist/abi1/decls.gen.js.map +1 -0
  15. package/dist/abi1/errmap.gen.d.ts +18 -0
  16. package/dist/abi1/errmap.gen.d.ts.map +1 -0
  17. package/dist/abi1/errmap.gen.js +66 -0
  18. package/dist/abi1/errmap.gen.js.map +1 -0
  19. package/dist/abi1/errors.d.ts +107 -0
  20. package/dist/abi1/errors.d.ts.map +1 -0
  21. package/dist/abi1/errors.js +134 -0
  22. package/dist/abi1/errors.js.map +1 -0
  23. package/dist/abi1/handles.d.ts +31 -0
  24. package/dist/abi1/handles.d.ts.map +1 -0
  25. package/dist/abi1/handles.js +76 -0
  26. package/dist/abi1/handles.js.map +1 -0
  27. package/dist/abi1/index.d.ts +17 -0
  28. package/dist/abi1/index.d.ts.map +1 -0
  29. package/dist/abi1/index.js +17 -0
  30. package/dist/abi1/index.js.map +1 -0
  31. package/dist/abi1/libc.d.ts +54 -0
  32. package/dist/abi1/libc.d.ts.map +1 -0
  33. package/dist/abi1/libc.gen.d.ts +12 -0
  34. package/dist/abi1/libc.gen.d.ts.map +1 -0
  35. package/dist/abi1/libc.gen.js +75 -0
  36. package/dist/abi1/libc.gen.js.map +1 -0
  37. package/dist/abi1/libc.js +109 -0
  38. package/dist/abi1/libc.js.map +1 -0
  39. package/dist/abi1/loader.d.ts +101 -0
  40. package/dist/abi1/loader.d.ts.map +1 -0
  41. package/dist/abi1/loader.js +274 -0
  42. package/dist/abi1/loader.js.map +1 -0
  43. package/dist/abi1/raw.d.ts +104 -0
  44. package/dist/abi1/raw.d.ts.map +1 -0
  45. package/dist/abi1/raw.js +296 -0
  46. package/dist/abi1/raw.js.map +1 -0
  47. package/dist/abi1/strictjson.d.ts +19 -0
  48. package/dist/abi1/strictjson.d.ts.map +1 -0
  49. package/dist/abi1/strictjson.js +78 -0
  50. package/dist/abi1/strictjson.js.map +1 -0
  51. package/dist/abi1/vocab.gen.d.ts +169 -0
  52. package/dist/abi1/vocab.gen.d.ts.map +1 -0
  53. package/dist/abi1/vocab.gen.js +306 -0
  54. package/dist/abi1/vocab.gen.js.map +1 -0
  55. package/dist/cli.d.ts +25 -26
  56. package/dist/cli.d.ts.map +1 -1
  57. package/dist/cli.js +206 -218
  58. package/dist/cli.js.map +1 -1
  59. package/dist/documents.d.ts +195 -0
  60. package/dist/documents.d.ts.map +1 -0
  61. package/dist/documents.js +389 -0
  62. package/dist/documents.js.map +1 -0
  63. package/dist/env.d.ts +16 -0
  64. package/dist/env.d.ts.map +1 -0
  65. package/dist/env.js +57 -0
  66. package/dist/env.js.map +1 -0
  67. package/dist/index.d.ts +19 -24
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +17 -23
  70. package/dist/index.js.map +1 -1
  71. package/dist/json.d.ts +11 -89
  72. package/dist/json.d.ts.map +1 -1
  73. package/dist/json.js +16 -180
  74. package/dist/json.js.map +1 -1
  75. package/dist/library.d.ts +53 -309
  76. package/dist/library.d.ts.map +1 -1
  77. package/dist/library.js +77 -315
  78. package/dist/library.js.map +1 -1
  79. package/dist/ocifetch/constants.gen.d.ts +84 -0
  80. package/dist/ocifetch/constants.gen.d.ts.map +1 -0
  81. package/dist/ocifetch/constants.gen.js +92 -0
  82. package/dist/ocifetch/constants.gen.js.map +1 -0
  83. package/dist/ocifetch/dsse.d.ts +114 -0
  84. package/dist/ocifetch/dsse.d.ts.map +1 -0
  85. package/dist/ocifetch/dsse.js +331 -0
  86. package/dist/ocifetch/dsse.js.map +1 -0
  87. package/dist/ocifetch/ensure.d.ts +65 -0
  88. package/dist/ocifetch/ensure.d.ts.map +1 -0
  89. package/dist/ocifetch/ensure.js +775 -0
  90. package/dist/ocifetch/ensure.js.map +1 -0
  91. package/dist/ocifetch/errors.d.ts +92 -0
  92. package/dist/ocifetch/errors.d.ts.map +1 -0
  93. package/dist/ocifetch/errors.js +101 -0
  94. package/dist/ocifetch/errors.js.map +1 -0
  95. package/dist/ocifetch/goldens.d.ts +44 -0
  96. package/dist/ocifetch/goldens.d.ts.map +1 -0
  97. package/dist/ocifetch/goldens.js +62 -0
  98. package/dist/ocifetch/goldens.js.map +1 -0
  99. package/dist/ocifetch/http.d.ts +124 -0
  100. package/dist/ocifetch/http.d.ts.map +1 -0
  101. package/dist/ocifetch/http.js +549 -0
  102. package/dist/ocifetch/http.js.map +1 -0
  103. package/dist/ocifetch/index.d.ts +17 -0
  104. package/dist/ocifetch/index.d.ts.map +1 -0
  105. package/dist/ocifetch/index.js +14 -0
  106. package/dist/ocifetch/index.js.map +1 -0
  107. package/dist/ocifetch/layout.d.ts +126 -0
  108. package/dist/ocifetch/layout.d.ts.map +1 -0
  109. package/dist/ocifetch/layout.js +375 -0
  110. package/dist/ocifetch/layout.js.map +1 -0
  111. package/dist/ocifetch/localverify.d.ts +43 -0
  112. package/dist/ocifetch/localverify.d.ts.map +1 -0
  113. package/dist/ocifetch/localverify.js +164 -0
  114. package/dist/ocifetch/localverify.js.map +1 -0
  115. package/dist/ocifetch/lock.d.ts +39 -0
  116. package/dist/ocifetch/lock.d.ts.map +1 -0
  117. package/dist/ocifetch/lock.js +140 -0
  118. package/dist/ocifetch/lock.js.map +1 -0
  119. package/dist/ocifetch/oci.d.ts +100 -0
  120. package/dist/ocifetch/oci.d.ts.map +1 -0
  121. package/dist/ocifetch/oci.js +323 -0
  122. package/dist/ocifetch/oci.js.map +1 -0
  123. package/dist/ocifetch/referrers.d.ts +55 -0
  124. package/dist/ocifetch/referrers.d.ts.map +1 -0
  125. package/dist/ocifetch/referrers.js +132 -0
  126. package/dist/ocifetch/referrers.js.map +1 -0
  127. package/dist/ocifetch/types.d.ts +167 -0
  128. package/dist/ocifetch/types.d.ts.map +1 -0
  129. package/dist/ocifetch/types.js +88 -0
  130. package/dist/ocifetch/types.js.map +1 -0
  131. package/dist/ocifetch/unpack.d.ts +55 -0
  132. package/dist/ocifetch/unpack.d.ts.map +1 -0
  133. package/dist/ocifetch/unpack.js +205 -0
  134. package/dist/ocifetch/unpack.js.map +1 -0
  135. package/dist/registry.d.ts +38 -387
  136. package/dist/registry.d.ts.map +1 -1
  137. package/dist/registry.js +95 -819
  138. package/dist/registry.js.map +1 -1
  139. package/dist/schema.d.ts +77 -588
  140. package/dist/schema.d.ts.map +1 -1
  141. package/dist/schema.js +87 -549
  142. package/dist/schema.js.map +1 -1
  143. package/dist/settings.d.ts +27 -36
  144. package/dist/settings.d.ts.map +1 -1
  145. package/dist/settings.js +75 -25
  146. package/dist/settings.js.map +1 -1
  147. package/dist/setup.d.ts +46 -0
  148. package/dist/setup.d.ts.map +1 -0
  149. package/dist/setup.js +79 -0
  150. package/dist/setup.js.map +1 -0
  151. package/dist/tar.d.ts +27 -11
  152. package/dist/tar.d.ts.map +1 -1
  153. package/dist/tar.js +54 -32
  154. package/dist/tar.js.map +1 -1
  155. package/package.json +2 -2
  156. package/dist/discover.d.ts +0 -142
  157. package/dist/discover.d.ts.map +0 -1
  158. package/dist/discover.js +0 -288
  159. package/dist/discover.js.map +0 -1
  160. package/dist/error-codes.d.ts +0 -80
  161. package/dist/error-codes.d.ts.map +0 -1
  162. package/dist/error-codes.js +0 -139
  163. package/dist/error-codes.js.map +0 -1
  164. package/dist/errors.d.ts +0 -284
  165. package/dist/errors.d.ts.map +0 -1
  166. package/dist/errors.js +0 -321
  167. package/dist/errors.js.map +0 -1
  168. package/dist/fetch.d.ts +0 -382
  169. package/dist/fetch.d.ts.map +0 -1
  170. package/dist/fetch.js +0 -1498
  171. package/dist/fetch.js.map +0 -1
  172. package/dist/ffi.d.ts +0 -410
  173. package/dist/ffi.d.ts.map +0 -1
  174. package/dist/ffi.js +0 -1154
  175. package/dist/ffi.js.map +0 -1
  176. package/dist/format.d.ts +0 -128
  177. package/dist/format.d.ts.map +0 -1
  178. package/dist/format.js +0 -132
  179. package/dist/format.js.map +0 -1
  180. package/dist/numeric.d.ts +0 -20
  181. package/dist/numeric.d.ts.map +0 -1
  182. package/dist/numeric.js +0 -107
  183. package/dist/numeric.js.map +0 -1
  184. package/dist/paths.d.ts +0 -55
  185. package/dist/paths.d.ts.map +0 -1
  186. package/dist/paths.js +0 -87
  187. package/dist/paths.js.map +0 -1
  188. package/dist/results.d.ts +0 -495
  189. package/dist/results.d.ts.map +0 -1
  190. package/dist/results.js +0 -406
  191. package/dist/results.js.map +0 -1
  192. package/dist/transform.d.ts +0 -73
  193. package/dist/transform.d.ts.map +0 -1
  194. package/dist/transform.js +0 -533
  195. package/dist/transform.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,99 +1,126 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * `chtypes` — the one CLI surface every SDK carries (docs/guides/fetch.md §6),
4
- * spelled identically in all four:
3
+ * `chtypes`: the one CLI every SDK carries, over the v1 fetch layer
4
+ * (`docs/guides/fetch-v1.md`), spelled identically in all four:
5
5
  *
6
- * chtypes fetch <line>... [--all] [--platform <os-arch>] [--dest <dir>]
7
- * [--tag <t> | --url <base>] [--lock <file>] [--frozen]
8
- * [--force] [--offline]
9
- * chtypes verify [--dest <dir>] re-hash every installed line against its manifest
10
- * chtypes list [--dest <dir>] what is installed, and what the release offers
11
- * chtypes where the registry directory fetch would write to
6
+ * chtypes fetch <version>... | --all [--frozen] [--offline] [--lock <file>] [--update]
7
+ * chtypes verify re-hash every installed library against its verified record
8
+ * chtypes list what is installed, and the versions the registry publishes
9
+ * chtypes where the v1 cache root
12
10
  *
13
- * Exit codes: 0 ok · 1 verification failed · 2 usage · 3 source unreachable ·
14
- * 4 not published for this platform/line. Progress goes to stderr; `fetch`
15
- * prints the installed directory alone on stdout, so it composes:
11
+ * Options per cli-common: `fetch` takes `--platform`, `--cache`, `--lock`, `--frozen`,
12
+ * `--offline`, `--update`; `verify`, `list` and `where` take `--cache` (`list` also
13
+ * `--offline`); `-h/--help` anywhere, `--version` at top level. The registry base
14
+ * comes only from `CHTYPES_ARTIFACTS_URL`.
16
15
  *
17
- * dir="$(npx @wavehouse/chtypes fetch 25.8)"
16
+ * Exit statuses: 0 ok, 2 usage, and for every fetch error the status the
17
+ * `errors` table of `spec/fetch-v1/constants.json` gives its code (generated
18
+ * into `ERROR_EXIT_CODES`; no number is repeated here). A failed `verify` exits
19
+ * with `CHTYPES_ARTIFACT_CORRUPT`'s. Progress goes to stderr; `fetch` prints one
20
+ * installed directory per request on stdout alone, so it composes:
18
21
  *
19
- * `runCli` is exported so the suite can drive the command in-process; the
20
- * file runs `main` only when it is the process's entry point (the `bin`).
22
+ * dir="$(npx @wavehouse/chtypes fetch 26.8)"
23
+ *
24
+ * `runCli` is exported so the suite can drive the command in-process; the file
25
+ * runs `main` only when it is the process's entry point (the `bin`).
21
26
  */
22
- import { realpathSync, statSync } from 'node:fs';
27
+ import { realpathSync } from 'node:fs';
23
28
  import { createRequire } from 'node:module';
24
- import path from 'node:path';
29
+ import os from 'node:os';
25
30
  import { fileURLToPath } from 'node:url';
26
31
  import { parseArgs } from 'node:util';
27
- import { ArtifactUnpublishedError, ChtypesError, FetchError, SourceUnreachableError } from './errors.js';
28
- import { ensure, ensureAll, listArtifacts, resolvePlatform, verifyInstalled } from './fetch.js';
29
- import { fetchDestination } from './paths.js';
30
- /** The §6 exit codes. */
31
- export const EXIT = {
32
- ok: 0,
33
- verificationFailed: 1,
34
- usage: 2,
35
- sourceUnreachable: 3,
36
- unpublished: 4,
37
- };
32
+ import { isChtypesError, UsageError } from './abi1/index.js';
33
+ import { withEnvironment } from './env.js';
34
+ import { ERROR_EXIT_CODES } from './ocifetch/constants.gen.js';
35
+ import { ArtifactUnpublishedError, cacheRoot, ensure, FetchV1Error, hostPlatformKey, isPlatformKey, listInstalled, listTags, verifyInstalled, } from './ocifetch/index.js';
36
+ /** The exit status of a usage error: the one status the error table does not own. */
37
+ export const EXIT_USAGE = 2;
38
+ /** Success. */
39
+ export const EXIT_OK = 0;
40
+ /** An error that is neither a fetch error nor a usage error. */
41
+ const EXIT_OTHER = 1;
38
42
  const USAGE = `usage: chtypes <command> [options]
39
43
 
40
- chtypes fetch <line>... [--all] [--platform <os-arch>] [--dest <dir>]
41
- [--tag <t> | --url <base>] [--lock <file>] [--frozen]
42
- [--force] [--offline]
43
- chtypes verify [--dest <dir>] [--platform <os-arch>]
44
- chtypes list [--dest <dir>] [--platform <os-arch>] [--tag <t> | --url <base>] [--offline]
45
- chtypes where [--dest <dir>] [--platform <os-arch>]
44
+ chtypes fetch <version>... | --all [--frozen] [--offline] [--lock <file>] [--update]
45
+ chtypes verify
46
+ chtypes list
47
+ chtypes where
48
+
49
+ <version> a ClickHouse version: 26.8, 26.8.15 or 26.8.15.10 (no "v", no channel suffix)
50
+ --all every line (two-part version) the registry publishes for the platform
51
+ --frozen fetch exactly what the lock file pins, by digest; refuse anything it does not (default lock: chtypes.lock)
52
+ --offline never touch the network: an installed, verified build is fine, anything else fails
53
+ --lock record what was installed into this lock file
54
+ --update re-resolve every request the lock holds and rewrite it (requires --lock; not with --frozen or --offline)
55
+ --platform <os>-<arch>: linux-amd64, linux-arm64 or darwin-arm64 (default: this host, or CHTYPES_TARGET)
56
+ --cache the cache root (default: CHTYPES_CACHE, else \${XDG_CACHE_HOME:-~/.cache}/chtypes/v1)
57
+ -h, --help this text; --version "chtypes <version>"
46
58
 
47
- <line> a ClickHouse line (25.8) or an exact patch (25.8.28.1-lts, a hard requirement)
48
- --all every line the release publishes for the platform at this SDK's ABI revision
49
- --platform <os>-<arch> (linux|darwin)-(arm64|amd64); default: this host
50
- --dest the registry directory; default: CHTYPES_REGISTRY, else the per-user cache,
51
- \${XDG_CACHE_HOME:-~/.cache}/chtypes/artifacts/abi<R>/<os>-<arch> (R: this SDK's ABI revision)
52
- --tag a release tag on the artifacts host (default: the rolling "artifacts")
53
- --url any other base: https://…, file://…, or a directory
54
- --lock record what was installed into this lock file (default with --frozen: chtypes.lock)
55
- --frozen refuse anything the lock file does not pin
56
- --force re-download an installed line
57
- --offline never touch the source: installed-and-verified is fine, anything else fails
58
- -q, --quiet no progress on stderr
59
- -h, --help this text; -V, --version the package version
59
+ the registry base comes only from CHTYPES_ARTIFACTS_URL (default: the public registry)
60
60
 
61
- exit codes: 0 ok · 1 verification failed · 2 usage · 3 source unreachable · 4 not published
62
- environment: CHTYPES_ARTIFACTS_URL, CHTYPES_REGISTRY, CHTYPES_TRUSTED_KEYS, CHTYPES_ALLOW_UNSIGNED,
63
- CHTYPES_AUTOFETCH, CHTYPES_TARGET, XDG_CACHE_HOME
61
+ exit status: 0 ok, 2 usage; a fetch error exits with its code's status in spec/fetch-v1/constants.json
62
+ environment: CHTYPES_ARTIFACTS_URL, CHTYPES_CACHE, CHTYPES_DOWNLOAD_TOKEN, CHTYPES_TRUSTED_KEYS,
63
+ CHTYPES_ALLOW_UNSIGNED, CHTYPES_TARGET
64
64
  `;
65
65
  const defaultIo = {
66
66
  stdout: (text) => process.stdout.write(text),
67
67
  stderr: (text) => process.stderr.write(text),
68
- tty: process.stderr.isTTY === true,
69
68
  };
69
+ const CONFIG = {
70
+ allowPositionals: true,
71
+ strict: true,
72
+ options: {
73
+ all: { type: 'boolean' },
74
+ frozen: { type: 'boolean' },
75
+ offline: { type: 'boolean' },
76
+ update: { type: 'boolean' },
77
+ lock: { type: 'string' },
78
+ platform: { type: 'string' },
79
+ cache: { type: 'string' },
80
+ help: { type: 'boolean', short: 'h' },
81
+ version: { type: 'boolean' },
82
+ },
83
+ };
84
+ /** A command-line mistake: exits with the usage status. */
85
+ class CliUsageError extends Error {
86
+ }
70
87
  /**
71
88
  * Run the command with `argv` (the arguments after the program name) and
72
- * return its exit code. Never throws for a user-facing failure: every §7
73
- * verdict is printed to stderr and mapped to its exit code.
89
+ * return its exit status. Never throws for a user-facing failure: every error
90
+ * is printed to stderr and mapped to its status.
74
91
  */
75
92
  export async function runCli(argv, io = defaultIo) {
93
+ // -h and --help print the usage to stdout and exit 0 wherever they appear.
94
+ const dashDash = argv.indexOf('--');
95
+ if ((dashDash < 0 ? argv : argv.slice(0, dashDash)).some((a) => a === '-h' || a === '--help')) {
96
+ io.stdout(USAGE);
97
+ return EXIT_OK;
98
+ }
76
99
  let parsed;
77
100
  try {
78
101
  parsed = parseArgs({ ...CONFIG, args: [...argv] });
79
102
  }
80
103
  catch (err) {
81
104
  io.stderr(`chtypes: ${err instanceof Error ? err.message : String(err)}\n${USAGE}`);
82
- return EXIT.usage;
105
+ return EXIT_USAGE;
83
106
  }
84
107
  const { values, positionals } = parsed;
85
108
  if (values.help) {
86
109
  io.stdout(USAGE);
87
- return EXIT.ok;
110
+ return EXIT_OK;
88
111
  }
89
112
  if (values.version) {
90
- io.stdout(`${packageVersion()}\n`);
91
- return EXIT.ok;
113
+ if (argv[0] !== '--version') {
114
+ io.stderr(`chtypes: --version is a top-level flag\n${USAGE}`);
115
+ return EXIT_USAGE;
116
+ }
117
+ io.stdout(`chtypes ${packageVersion()}\n`);
118
+ return EXIT_OK;
92
119
  }
93
120
  const [command, ...rest] = positionals;
94
121
  if (command === undefined) {
95
122
  io.stderr(USAGE);
96
- return EXIT.usage;
123
+ return EXIT_USAGE;
97
124
  }
98
125
  try {
99
126
  switch (command) {
@@ -106,204 +133,165 @@ export async function runCli(argv, io = defaultIo) {
106
133
  case 'where':
107
134
  return cmdWhere(rest, values, io);
108
135
  default:
109
- io.stderr(`chtypes: unknown command ${JSON.stringify(command)}\n${USAGE}`);
110
- return EXIT.usage;
136
+ throw new CliUsageError(`unknown command ${JSON.stringify(command)}`);
111
137
  }
112
138
  }
113
139
  catch (err) {
114
140
  return report(err, io);
115
141
  }
116
142
  }
117
- const CONFIG = {
118
- allowPositionals: true,
119
- strict: true,
120
- options: {
121
- all: { type: 'boolean' },
122
- platform: { type: 'string' },
123
- dest: { type: 'string' },
124
- tag: { type: 'string' },
125
- url: { type: 'string' },
126
- lock: { type: 'string' },
127
- frozen: { type: 'boolean' },
128
- force: { type: 'boolean' },
129
- offline: { type: 'boolean' },
130
- quiet: { type: 'boolean', short: 'q' },
131
- help: { type: 'boolean', short: 'h' },
132
- version: { type: 'boolean', short: 'V' },
133
- },
134
- };
135
- function ensureOptions(values, io) {
136
- if (values.url !== undefined && values.tag !== undefined) {
137
- throw new ChtypesError('chtypes: --url names a full base; --tag selects a release on the artifacts host — pass one');
143
+ function fetchOptions(values, forFetch) {
144
+ if (!forFetch && values.platform !== undefined)
145
+ throw new CliUsageError('--platform applies to fetch only');
146
+ if (values.platform !== undefined && !isPlatformKey(values.platform)) {
147
+ throw new CliUsageError(`--platform ${JSON.stringify(values.platform)} is not a platform: use linux-amd64, linux-arm64 or darwin-arm64`);
138
148
  }
139
- const lock = values.lock ?? (values.frozen ? 'chtypes.lock' : undefined);
140
- return {
141
- dest: values.dest,
142
- platform: values.platform,
143
- tag: values.tag,
144
- url: values.url,
145
- lock,
146
- frozen: values.frozen ?? false,
147
- force: values.force ?? false,
148
- offline: values.offline ?? false,
149
- onProgress: values.quiet ? undefined : progressPrinter(io),
150
- };
149
+ if (values.frozen && values.update)
150
+ throw new CliUsageError('--frozen and --update contradict: one reads the lock, the other rewrites it');
151
+ if (values.update && values.offline)
152
+ throw new CliUsageError('--update and --offline contradict: an update must reach the registry');
153
+ if (values.update && values.lock === undefined)
154
+ throw new CliUsageError('--update requires --lock <file>');
155
+ const lockPath = values.lock;
156
+ return withEnvironment({
157
+ ...(values.cache !== undefined ? { cacheDir: values.cache } : {}),
158
+ ...(values.platform !== undefined ? { platform: values.platform } : {}),
159
+ ...(lockPath !== undefined ? { lockPath } : {}),
160
+ ...(forFetch
161
+ ? {
162
+ offline: values.offline === true,
163
+ frozen: values.frozen === true,
164
+ update: values.update === true,
165
+ lockWrite: lockPath !== undefined && values.frozen !== true && values.update !== true,
166
+ }
167
+ : {}),
168
+ });
151
169
  }
152
- async function cmdFetch(lines, values, io) {
153
- const options = ensureOptions(values, io);
170
+ function say(io, _values, message) {
171
+ io.stderr(`==> ${message}\n`);
172
+ }
173
+ async function cmdFetch(requests, values, io) {
174
+ const options = fetchOptions(values, true);
175
+ let todo = requests;
154
176
  if (values.all) {
155
- if (lines.length > 0) {
156
- throw new ChtypesError(`chtypes: --all installs every published line; drop the version argument (${lines.join(', ')})`);
157
- }
158
- const results = await ensureAll(options);
159
- if (results.length === 0)
160
- throw new ArtifactUnpublishedError('chtypes: the release publishes nothing for this platform');
161
- for (const r of results)
177
+ if (requests.length > 0)
178
+ throw new CliUsageError(`--all fetches every published line; drop the version argument (${requests.join(', ')})`);
179
+ if (values.frozen)
180
+ throw new CliUsageError('--all and --frozen contradict: a frozen fetch makes no discovery, so it fetches only what you name');
181
+ todo = await allLines(options);
182
+ if (todo.length === 0)
183
+ throw new ArtifactUnpublishedError('chtypes: the registry publishes no line to fetch');
184
+ }
185
+ else if (requests.length === 0) {
186
+ throw new CliUsageError('a version is required (or --all)');
187
+ }
188
+ let installed = 0;
189
+ let skipped = 0;
190
+ for (const request of todo) {
191
+ try {
192
+ say(io, values, request);
193
+ const r = await ensure(request, options);
162
194
  io.stdout(`${r.dir}\n`);
163
- say(io, `${results.length} line(s) installed into ${results[0].registry}`);
164
- return EXIT.ok;
195
+ for (const w of r.warnings)
196
+ io.stderr(`chtypes: warning: ${w}\n`);
197
+ installed += 1;
198
+ }
199
+ catch (err) {
200
+ // `--all` walks every line; a line this platform has no build for is a note, not a failure.
201
+ if (values.all && err instanceof ArtifactUnpublishedError) {
202
+ say(io, values, `${request}: no build for this platform (${err.message})`);
203
+ skipped += 1;
204
+ continue;
205
+ }
206
+ throw err;
207
+ }
165
208
  }
166
- if (lines.length === 0) {
167
- io.stderr(`chtypes: a ClickHouse line is required (or --all)\n${USAGE}`);
168
- return EXIT.usage;
209
+ if (values.all) {
210
+ if (installed === 0)
211
+ throw new ArtifactUnpublishedError('chtypes: no published line has a build for this platform');
212
+ say(io, values, `${installed} line(s) installed, ${skipped} without a build for this platform`);
169
213
  }
170
- for (const line of lines) {
171
- const r = await ensure(line, options);
172
- io.stdout(`${r.dir}\n`);
214
+ return EXIT_OK;
215
+ }
216
+ /** Every line: the two-part spellings the registry publishes (or, offline, the lines already installed for the platform). */
217
+ async function allLines(options) {
218
+ if (options.offline === true) {
219
+ const platform = options.platform ?? hostPlatformKey(os.platform(), os.arch());
220
+ const lines = new Set();
221
+ for (const r of await listInstalled(options))
222
+ if (r.platform === platform)
223
+ lines.add(r.predicate.clickhouse_minor);
224
+ return [...lines];
173
225
  }
174
- return EXIT.ok;
226
+ return (await listTags(options)).filter((t) => t.split('.').length === 2);
175
227
  }
176
228
  async function cmdVerify(rest, values, io) {
177
- if (rest.length > 0)
178
- throw new ChtypesError(`chtypes: verify takes no positional arguments (${rest.join(', ')})`);
179
- const platform = resolvePlatform(values.platform);
180
- const dir = fetchDestination(values.dest, platform);
181
- const results = await verifyInstalled(values.dest, platform);
182
- if (results.length === 0) {
183
- say(io, `nothing installed in ${dir}`);
184
- return EXIT.ok;
185
- }
229
+ noArguments('verify', rest);
230
+ const options = fetchOptions(values, false);
231
+ const root = cacheRoot(options.cacheDir);
232
+ const results = await verifyInstalled(options);
233
+ if (results.length === 0)
234
+ return EXIT_OK;
186
235
  let bad = 0;
187
236
  for (const r of results) {
188
- if (r.ok)
189
- io.stdout(`ok ${r.line.padEnd(6)} ${r.version.padEnd(18)} ${r.library} sha256 ${r.actual}\n`);
190
- else {
237
+ if (!r.ok) {
191
238
  bad += 1;
192
- io.stdout(`BAD ${r.line.padEnd(6)} ${r.version.padEnd(18)} ${r.library} ${r.problem}\n`);
239
+ io.stderr(`BAD ${r.platform} ${r.dir} ${r.detail}\n`);
193
240
  }
194
241
  }
195
- goldensLine(dir, io);
196
- say(io, bad === 0 ? `${results.length} line(s) verified in ${dir}` : `${bad} of ${results.length} line(s) FAILED verification in ${dir}`);
197
- return bad === 0 ? EXIT.ok : EXIT.verificationFailed;
242
+ if (bad > 0)
243
+ io.stderr(`${bad} of ${results.length} build(s) FAILED verification in ${root}\n`);
244
+ return bad === 0 ? EXIT_OK : (ERROR_EXIT_CODES['CHTYPES_ARTIFACT_CORRUPT'] ?? EXIT_OTHER);
198
245
  }
199
246
  async function cmdList(rest, values, io) {
200
- if (rest.length > 0)
201
- throw new ChtypesError(`chtypes: list takes no positional arguments (${rest.join(', ')})`);
202
- const options = ensureOptions(values, io);
203
- const listing = await listArtifacts({ ...options, onProgress: undefined });
204
- io.stdout(`installed in ${listing.registry} (${listing.platform}):\n`);
205
- if (listing.installed.length === 0)
206
- io.stdout(' (nothing)\n');
207
- for (const a of listing.installed) {
208
- io.stdout(` ${a.line.padEnd(6)} ${a.version.padEnd(18)} ${a.library}${a.ok ? '' : ` (${a.problem})`}\n`);
209
- }
210
- if (listing.offered !== null) {
211
- const have = new Set(listing.installed.filter((a) => a.ok).map((a) => a.version));
212
- io.stdout(`release ${listing.source} offers for ${listing.platform}:\n`);
213
- if (listing.offered.length === 0)
214
- io.stdout(' (nothing)\n');
215
- for (const a of listing.offered) {
216
- io.stdout(` ${a.clickhouse_minor.padEnd(6)} ${a.clickhouse_version.padEnd(18)} b${String(a.build).padEnd(3)} ${a.file} ${a.bytes} bytes${have.has(a.clickhouse_version) ? ' (installed)' : ''}\n`);
217
- }
218
- // Only this SDK's own ABI revision is offered (docs/guides/fetch.md §2), and
219
- // one line names what that hid.
220
- if (listing.notShown !== undefined)
221
- io.stdout(` ${listing.notShown}\n`);
222
- }
223
- return EXIT.ok;
224
- }
225
- /**
226
- * The served golden set sits beside the artifacts, so "where is my registry" and
227
- * "is my registry sound" are both moments someone wants to know whether it is
228
- * there — a missing one is why the golden tests skip.
229
- */
230
- function goldensLine(dir, io) {
231
- const g = path.join(dir, 'sdk-goldens.json');
232
- let size = null;
233
- try {
234
- size = statSync(g).size;
235
- }
236
- catch {
237
- size = null;
238
- }
239
- io.stdout(size === null ? `${g} (golden set: not fetched — the golden tests will skip)\n` : `${g} (golden set, ${size} bytes)\n`);
247
+ noArguments('list', rest);
248
+ const options = fetchOptions(values, false);
249
+ const installed = await listInstalled(options);
250
+ for (const r of installed)
251
+ io.stdout(`installed ${r.version} ${r.platform} ${r.dir}\n`);
252
+ if (values.offline)
253
+ return EXIT_OK;
254
+ for (const t of await listTags(options))
255
+ io.stdout(`published ${t} support unknown\n`);
256
+ return EXIT_OK;
240
257
  }
241
258
  function cmdWhere(rest, values, io) {
259
+ noArguments('where', rest);
260
+ io.stdout(`${cacheRoot(fetchOptions(values, false).cacheDir)}\n`);
261
+ return EXIT_OK;
262
+ }
263
+ function noArguments(command, rest) {
242
264
  if (rest.length > 0)
243
- throw new ChtypesError(`chtypes: where takes no positional arguments (${rest.join(', ')})`);
244
- const dir = fetchDestination(values.dest, resolvePlatform(values.platform));
245
- io.stdout(`${dir}\n`);
246
- goldensLine(dir, io);
247
- return EXIT.ok;
265
+ throw new CliUsageError(`${command} takes no positional arguments (${rest.join(', ')})`);
248
266
  }
249
- /** Map an error to its §6 exit code, after printing it. */
267
+ /** Print an error and return its exit status. */
250
268
  function report(err, io) {
251
- if (err instanceof FetchError) {
269
+ if (err instanceof CliUsageError) {
270
+ io.stderr(`chtypes: ${err.message}\n${USAGE}`);
271
+ return EXIT_USAGE;
272
+ }
273
+ if (err instanceof FetchV1Error) {
252
274
  io.stderr(`${err.message} [${err.code}]\n`);
253
- if (err instanceof SourceUnreachableError)
254
- return EXIT.sourceUnreachable;
255
- if (err instanceof ArtifactUnpublishedError)
256
- return EXIT.unpublished;
257
- return EXIT.verificationFailed;
275
+ return err.exitStatus;
276
+ }
277
+ if (err instanceof UsageError) {
278
+ io.stderr(`${err.message}\n`);
279
+ return EXIT_USAGE;
258
280
  }
259
- if (err instanceof ChtypesError) {
281
+ if (isChtypesError(err)) {
260
282
  io.stderr(`${err.message}\n`);
261
- return EXIT.usage;
283
+ return EXIT_OTHER;
262
284
  }
263
285
  io.stderr(`chtypes: ${err instanceof Error ? (err.stack ?? err.message) : String(err)}\n`);
264
- return EXIT.verificationFailed;
265
- }
266
- function say(io, message) {
267
- io.stderr(io.tty ? `==> ${message}\n` : `==> ${message}\n`);
268
- }
269
- /** Status lines as `==> …`; download progress redrawn in place on a terminal, at 10 % steps otherwise. */
270
- function progressPrinter(io) {
271
- let lastStep = -1;
272
- let drawing = false;
273
- return (event) => {
274
- if (event.type === 'status') {
275
- if (drawing) {
276
- io.stderr('\n');
277
- drawing = false;
278
- }
279
- say(io, event.message);
280
- return;
281
- }
282
- const pct = event.total > 0 ? Math.min(100, Math.floor((event.received * 100) / event.total)) : 0;
283
- const mb = (n) => (n / 1e6).toFixed(1);
284
- if (io.tty) {
285
- io.stderr(`\r ${event.file} ${mb(event.received)} / ${mb(event.total)} MB ${pct}%`);
286
- drawing = true;
287
- if (event.received >= event.total) {
288
- io.stderr('\n');
289
- drawing = false;
290
- }
291
- return;
292
- }
293
- const step = Math.floor(pct / 10);
294
- if (step !== lastStep) {
295
- lastStep = step;
296
- io.stderr(` ${event.file} ${mb(event.received)} / ${mb(event.total)} MB ${pct}%\n`);
297
- }
298
- };
286
+ return EXIT_OTHER;
299
287
  }
300
288
  function packageVersion() {
301
289
  try {
302
290
  const pkg = createRequire(import.meta.url)('../package.json');
303
- return pkg.version ?? '0.0.0';
291
+ return pkg.version ?? '0.0.0-dev';
304
292
  }
305
293
  catch {
306
- return '0.0.0';
294
+ return '0.0.0-dev';
307
295
  }
308
296
  }
309
297
  function invokedDirectly() {
@@ -322,7 +310,7 @@ if (invokedDirectly()) {
322
310
  process.exitCode = code;
323
311
  }, (err) => {
324
312
  process.stderr.write(`chtypes: ${err instanceof Error ? (err.stack ?? err.message) : String(err)}\n`);
325
- process.exitCode = EXIT.verificationFailed;
313
+ process.exitCode = EXIT_OTHER;
326
314
  });
327
315
  }
328
316
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}