@omnidist/omnidist-linux-arm64 0.1.35 → 0.1.36
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.
- package/README.md +65 -415
- package/bin/omnidist +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,130 +1,65 @@
|
|
|
1
1
|
# omnidist
|
|
2
2
|
|
|
3
|
-
[](https://codecov.io/github/metalagman/omnidist)
|
|
7
|
-
[](https://github.com/metalagman/omnidist/releases)
|
|
3
|
+
[](https://github.com/metalagman/omnidist/actions/workflows/lint.yml)
|
|
4
|
+
[](https://github.com/metalagman/omnidist/actions/workflows/test.yml)
|
|
5
|
+
[](https://github.com/metalagman/omnidist/actions/workflows/security.yml)
|
|
8
6
|
[](https://www.npmjs.com/package/@omnidist/omnidist)
|
|
9
7
|
[](https://pypi.org/project/omnidist/)
|
|
10
|
-
[](https://rubygems.org/gems/omnidist)
|
|
9
|
+
[](LICENSE)
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
cross-platform binaries.
|
|
11
|
+
Omnidist builds one Go CLI and packages its prebuilt binaries for npm, PyPI-compatible indexes through uv, and RubyGems. npm packages contain no `postinstall` downloader; installation uses platform-specific optional dependencies already present in registry tarballs.
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
## Install or run
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
build -> stage -> verify -> publish
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
The generated npm packages use platform-specific optional dependencies, so users
|
|
22
|
-
can run your CLI with `npx` without install-time downloader scripts. The uv
|
|
23
|
-
distribution stages wheel artifacts so users can run the same CLI from Python
|
|
24
|
-
tooling with `uvx`. The RubyGems distribution stages platform-specific gems so
|
|
25
|
-
users can install the same CLI with `gem install`.
|
|
26
|
-
|
|
27
|
-
## Requirements
|
|
28
|
-
|
|
29
|
-
- Go 1.25+
|
|
30
|
-
- Node.js and npm for npm staging, verification, and publishing
|
|
31
|
-
- `uv` for uv staging, verification, and publishing
|
|
32
|
-
- Ruby and RubyGems for gem staging, verification, and publishing
|
|
33
|
-
- `git` when `version.source: git-tag`
|
|
34
|
-
- `NPM_PUBLISH_TOKEN` for npm token publishing, unless using `--dry-run` or trusted publishing
|
|
35
|
-
- `UV_PUBLISH_TOKEN` or `omnidist uv publish --token` for uv publishing, unless using `--dry-run`
|
|
36
|
-
- `GEM_HOST_API_KEY` / `RUBYGEMS_API_KEY` for gem token publishing, unless using `--dry-run` or trusted publishing
|
|
37
|
-
|
|
38
|
-
## Install
|
|
39
|
-
|
|
40
|
-
Run without installing:
|
|
15
|
+
Consumers only need the package manager for the channel they use:
|
|
41
16
|
|
|
42
17
|
```bash
|
|
43
18
|
npx -y @omnidist/omnidist@latest --help
|
|
44
19
|
uvx omnidist --help
|
|
20
|
+
gem install omnidist && omnidist --help
|
|
45
21
|
```
|
|
46
22
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
npm i -g @omnidist/omnidist
|
|
51
|
-
omnidist --help
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Install with Go:
|
|
23
|
+
Maintainers can also install from Go:
|
|
55
24
|
|
|
56
25
|
```bash
|
|
57
26
|
go install github.com/metalagman/omnidist/cmd/omnidist@latest
|
|
58
|
-
omnidist --help
|
|
59
27
|
```
|
|
60
28
|
|
|
61
|
-
|
|
29
|
+
## Maintainer prerequisites
|
|
62
30
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
31
|
+
| Activity | Required locally or in CI |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Build the Go CLI | Go 1.25+; Git when `version.source: git-tag` |
|
|
34
|
+
| npm stage/verify | Go build artifacts; npm is required at publish preflight/upload |
|
|
35
|
+
| uv stage/verify/publish | `uv` |
|
|
36
|
+
| gem stage/verify/publish | Ruby and RubyGems (`gem`) |
|
|
37
|
+
| Token publish | The selected backend's token environment variable |
|
|
67
38
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
go run ./cmd/omnidist --help
|
|
72
|
-
```
|
|
39
|
+
You do not need tooling for backends absent from the selected set.
|
|
73
40
|
|
|
74
|
-
##
|
|
41
|
+
## Safe quick start
|
|
75
42
|
|
|
76
|
-
|
|
43
|
+
Run this in an existing Go repository with one `package main` under `cmd/*`:
|
|
77
44
|
|
|
78
45
|
```bash
|
|
79
46
|
omnidist init
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
This creates `.omnidist/omnidist.yaml` and initial workspace directories under
|
|
83
|
-
`.omnidist/default/`. The generated config uses `profiles.default`.
|
|
84
|
-
|
|
85
|
-
Edit the generated config before building:
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
47
|
$EDITOR .omnidist/omnidist.yaml
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
At minimum, check these fields:
|
|
92
|
-
|
|
93
|
-
- `tool.name`: the binary name users will run.
|
|
94
|
-
- `tool.main`: the Go main package, for example `./cmd/mytool`.
|
|
95
|
-
- `distributions.npm.package`: the npm package, for example `@my-org/mytool`.
|
|
96
|
-
- `distributions.uv.package`: the uv/PyPI package, for example `mytool`.
|
|
97
|
-
- `distributions.gem.package`: the RubyGems package, for example `mytool`.
|
|
98
|
-
- `version.source`: usually `git-tag`, `file`, `env`, or `fixed`.
|
|
99
|
-
|
|
100
|
-
Then run the local release pipeline:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
48
|
omnidist build
|
|
104
49
|
omnidist stage
|
|
105
50
|
omnidist verify
|
|
51
|
+
omnidist publish --dry-run
|
|
106
52
|
```
|
|
107
53
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
omnidist publish
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Generate a GitHub Actions release workflow:
|
|
54
|
+
`init` detects the command name and main package. If discovery is ambiguous, specify both explicitly:
|
|
115
55
|
|
|
116
56
|
```bash
|
|
117
|
-
omnidist
|
|
57
|
+
omnidist init --name mytool --main ./cmd/mytool
|
|
118
58
|
```
|
|
119
59
|
|
|
120
|
-
|
|
121
|
-
It runs on `v*` tag pushes, builds once, stages and verifies artifacts, publishes
|
|
122
|
-
npm, uv, and gem distributions, then uploads the built binaries and `checksums.txt`
|
|
123
|
-
to the GitHub release.
|
|
60
|
+
It refuses to replace an existing config. `omnidist init --force` intentionally replaces that file and is destructive; review or back it up first.
|
|
124
61
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
`omnidist init` writes profiles-mode config by default:
|
|
62
|
+
The generated file uses profiles mode and stores artifacts beneath `.omnidist/default/`. Select which package ecosystems participate in aggregate commands and generated CI:
|
|
128
63
|
|
|
129
64
|
```yaml
|
|
130
65
|
profiles:
|
|
@@ -132,372 +67,87 @@ profiles:
|
|
|
132
67
|
tool:
|
|
133
68
|
name: mytool
|
|
134
69
|
main: ./cmd/mytool
|
|
135
|
-
|
|
136
70
|
version:
|
|
137
|
-
source: git-tag
|
|
138
|
-
file: VERSION # used only when source is file
|
|
139
|
-
fixed: 1.2.3 # required only when source is fixed
|
|
140
|
-
|
|
71
|
+
source: git-tag
|
|
141
72
|
targets:
|
|
142
|
-
- os: darwin
|
|
143
|
-
arch: amd64
|
|
144
|
-
- os: darwin
|
|
145
|
-
arch: arm64
|
|
146
73
|
- os: linux
|
|
147
74
|
arch: amd64
|
|
148
|
-
- os: linux
|
|
149
|
-
arch: arm64
|
|
150
|
-
- os: windows
|
|
151
|
-
arch: amd64
|
|
152
|
-
|
|
153
75
|
build:
|
|
154
76
|
ldflags: -s -w
|
|
155
77
|
tags: []
|
|
156
78
|
cgo: false
|
|
157
|
-
|
|
158
79
|
distributions:
|
|
159
80
|
npm:
|
|
160
81
|
package: "@my-org/mytool"
|
|
161
|
-
registry: https://registry.npmjs.org
|
|
162
|
-
access: public # public | restricted
|
|
163
|
-
publish-auth: token # token | trusted
|
|
164
|
-
include-readme: true
|
|
165
|
-
|
|
166
82
|
uv:
|
|
167
83
|
package: mytool
|
|
168
|
-
index-url: https://upload.pypi.org/legacy/
|
|
169
|
-
linux-tag: manylinux2014 # manylinux2014 | musllinux_1_2
|
|
170
|
-
include-readme: true
|
|
171
|
-
|
|
172
|
-
gem:
|
|
173
|
-
package: mytool
|
|
174
|
-
registry: https://rubygems.org
|
|
175
|
-
publish-auth: token # token | trusted
|
|
176
|
-
repository-url: https://github.com/my-org/mytool
|
|
177
|
-
include-readme: true
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
Select a profile with `--profile <name>` or `OMNIDIST_PROFILE`. If `profiles`
|
|
181
|
-
is present and no profile is selected, `default` is used. Profiles write
|
|
182
|
-
artifacts to `.omnidist/<profile>/`.
|
|
183
|
-
|
|
184
|
-
Legacy top-level config is still accepted when loading existing config files,
|
|
185
|
-
but do not mix top-level runtime fields with a `profiles` map in the same file.
|
|
186
|
-
|
|
187
|
-
Targets use Go values: `os` is `GOOS`, and `arch` is `GOARCH`. Distribution
|
|
188
|
-
workflows map them as needed, for example `windows/amd64` becomes npm
|
|
189
|
-
`win32/x64`. For RubyGems, `windows/amd64` defaults to `x64-mingw-ucrt`; set
|
|
190
|
-
`targets[].variant: mingw32` if you need `x64-mingw32`, or `targets[].variant: musl`
|
|
191
|
-
for Linux musl gem platforms.
|
|
192
|
-
|
|
193
|
-
## Versioning
|
|
194
|
-
|
|
195
|
-
`omnidist build` resolves the release version and writes it to
|
|
196
|
-
`.omnidist/<profile>/dist/VERSION`. Stage and publish commands use that build
|
|
197
|
-
version so npm, uv, and gem artifacts stay in sync.
|
|
198
|
-
|
|
199
|
-
Supported version sources:
|
|
200
|
-
|
|
201
|
-
- `git-tag`: `HEAD` must be on an exact SemVer tag, either `vX.Y.Z` or `X.Y.Z`.
|
|
202
|
-
- `file`: read the version from `version.file`, defaulting to `VERSION`.
|
|
203
|
-
- `env`: read `OMNIDIST_VERSION`.
|
|
204
|
-
- `fixed`: read `version.fixed`.
|
|
205
|
-
|
|
206
|
-
For local prerelease staging, use:
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
omnidist stage --dev
|
|
210
84
|
```
|
|
211
85
|
|
|
212
|
-
|
|
213
|
-
publishing, `-dev` prerelease versions are automatically published with
|
|
214
|
-
`--tag dev` when no tag is supplied.
|
|
215
|
-
|
|
216
|
-
## Environment and Build Variables
|
|
217
|
-
|
|
218
|
-
`omnidist` loads `.env` at startup when the file exists.
|
|
219
|
-
|
|
220
|
-
Environment variables:
|
|
221
|
-
|
|
222
|
-
- `OMNIDIST_VERSION`: used only when `version.source: env`. `VERSION` is not used.
|
|
223
|
-
- `OMNIDIST_CONFIG`: config file path, equivalent to `--config`.
|
|
224
|
-
- `OMNIDIST_PROFILE`: config profile name, equivalent to `--profile`.
|
|
225
|
-
- `OMNIDIST_OMNIDIST_ROOT`: project root directory, equivalent to `--omnidist-root`.
|
|
226
|
-
- `NPM_PUBLISH_TOKEN`: npm token for `distributions.npm.publish-auth: token`.
|
|
227
|
-
- `UV_PUBLISH_TOKEN`: uv publish token when `--token` is not provided.
|
|
228
|
-
- `GEM_HOST_API_KEY`: RubyGems token for `distributions.gem.publish-auth: token`.
|
|
229
|
-
- `RUBYGEMS_API_KEY`: alternate RubyGems token env name.
|
|
230
|
-
- `GEM_HOST_OTP_CODE`: RubyGems MFA OTP for token-based publish.
|
|
231
|
-
|
|
232
|
-
Build `ldflags` template variables:
|
|
86
|
+
The `npm` and `uv` sections select those two backends. Add or remove `npm`, `uv`, and `gem` sections to define the canonical aggregate set. Existing files with a non-empty `enabled-distributions` selector remain readable, but every selected backend must have its own section. Aggregate commands always execute in npm → uv → gem order. `--only` can narrow the configured set but cannot enable an unavailable backend; backend-specific commands also require an explicit section.
|
|
233
87
|
|
|
234
|
-
|
|
235
|
-
- `OMNIDIST_GIT_COMMIT`: populated by `omnidist build` when git metadata is available.
|
|
236
|
-
- `OMNIDIST_BUILD_DATE`: populated by `omnidist build` as UTC RFC3339.
|
|
237
|
-
|
|
238
|
-
Example:
|
|
239
|
-
|
|
240
|
-
```yaml
|
|
241
|
-
build:
|
|
242
|
-
ldflags: >-
|
|
243
|
-
-s -w
|
|
244
|
-
-X github.com/your-org/mytool/internal/version.version=${OMNIDIST_VERSION}
|
|
245
|
-
-X github.com/your-org/mytool/internal/version.gitCommit=${OMNIDIST_GIT_COMMIT}
|
|
246
|
-
-X github.com/your-org/mytool/internal/version.buildDate=${OMNIDIST_BUILD_DATE}
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
`build.ldflags` uses `os.ExpandEnv`, so both `$VAR` and `${VAR}` are supported.
|
|
250
|
-
Unset variables expand to empty strings.
|
|
251
|
-
|
|
252
|
-
## npm Distribution
|
|
253
|
-
|
|
254
|
-
The npm distribution has two package types:
|
|
255
|
-
|
|
256
|
-
- Meta package: `distributions.npm.package`, with a small Node shim.
|
|
257
|
-
- Platform packages: one package per target, selected by npm `os` and `cpu` constraints.
|
|
258
|
-
|
|
259
|
-
The meta package lists platform packages as `optionalDependencies` at the same
|
|
260
|
-
version. Published packages do not use `postinstall` scripts or network
|
|
261
|
-
downloaders.
|
|
262
|
-
|
|
263
|
-
Common npm commands:
|
|
264
|
-
|
|
265
|
-
```bash
|
|
266
|
-
omnidist npm stage
|
|
267
|
-
omnidist npm verify
|
|
268
|
-
omnidist npm publish --tag latest
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
Token publishing uses `NPM_PUBLISH_TOKEN`. `omnidist` writes a workspace
|
|
272
|
-
`.omnidist/.npmrc` from `distributions.npm.registry` with npm's token
|
|
273
|
-
substitution syntax.
|
|
274
|
-
|
|
275
|
-
Trusted publishing uses npm OIDC instead of `NPM_PUBLISH_TOKEN`:
|
|
88
|
+
To keep the npm package installed by users unscoped while publishing platform binaries under a scope, set an independent platform-package base:
|
|
276
89
|
|
|
277
90
|
```yaml
|
|
278
91
|
distributions:
|
|
279
92
|
npm:
|
|
280
|
-
|
|
281
|
-
|
|
93
|
+
package: omnidist
|
|
94
|
+
platform-package: "@omnidist/omnidist"
|
|
95
|
+
access: public
|
|
282
96
|
```
|
|
283
97
|
|
|
284
|
-
|
|
98
|
+
This produces platform packages such as `@omnidist/omnidist-linux-x64`, while the root package remains `omnidist`. If `platform-package` is omitted or blank, it defaults to `package`, preserving existing package names. The configured npm identity must be allowed to publish the unscoped name and every package in the selected scope; trusted publishing must be configured for every generated package.
|
|
285
99
|
|
|
286
|
-
|
|
287
|
-
- `omnidist npm publish` skips token-only auth preflight.
|
|
288
|
-
- GitHub Actions must grant `id-token: write`.
|
|
289
|
-
- Each npm package, including platform packages, needs a trusted publisher configured on npm.
|
|
290
|
-
|
|
291
|
-
Print trusted publisher setup commands:
|
|
100
|
+
## Release flow
|
|
292
101
|
|
|
293
102
|
```bash
|
|
294
|
-
omnidist
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
```bash
|
|
300
|
-
omnidist npm trust --apply
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
Useful trust options:
|
|
304
|
-
|
|
305
|
-
- `--workflow-file <name>` for a workflow filename other than `omnidist-release.yml`.
|
|
306
|
-
- `--repo <owner/repo>` to override `distributions.npm.repository-url`.
|
|
307
|
-
- `--environment <name>` for npm trusted publishers restricted to a GitHub Actions environment.
|
|
308
|
-
- `--allow-stage-publish` to allow npm stage publish.
|
|
309
|
-
|
|
310
|
-
## uv Distribution
|
|
311
|
-
|
|
312
|
-
The uv distribution stages wheel artifacts under `.omnidist/<profile>/uv/dist`.
|
|
313
|
-
During staging, versions are converted to PEP 440 where needed.
|
|
314
|
-
|
|
315
|
-
Common uv commands:
|
|
316
|
-
|
|
317
|
-
```bash
|
|
318
|
-
omnidist uv stage
|
|
319
|
-
omnidist uv verify
|
|
320
|
-
omnidist uv publish
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
Publish to a different PyPI-compatible index:
|
|
324
|
-
|
|
325
|
-
```bash
|
|
326
|
-
omnidist uv publish --publish-url https://test.pypi.org/legacy/ --token <token>
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
`omnidist uv verify` rejects versions with local metadata (`+...`) for
|
|
330
|
-
PyPI/TestPyPI publishing, because those indexes reject local versions.
|
|
331
|
-
|
|
332
|
-
## RubyGems Distribution
|
|
333
|
-
|
|
334
|
-
The RubyGems distribution stages one platform-specific `.gem` per configured
|
|
335
|
-
target under `.omnidist/<profile>/gem/pkg`. Each gem contains:
|
|
336
|
-
|
|
337
|
-
- a wrapper executable under `exe/`
|
|
338
|
-
- the prebuilt CLI binary under `libexec/`
|
|
339
|
-
- platform metadata so RubyGems installs the matching package
|
|
340
|
-
|
|
341
|
-
Common gem commands:
|
|
342
|
-
|
|
343
|
-
```bash
|
|
344
|
-
omnidist gem stage
|
|
345
|
-
omnidist gem verify
|
|
346
|
-
omnidist gem publish
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
Token publishing uses `GEM_HOST_API_KEY` or `RUBYGEMS_API_KEY`. If your
|
|
350
|
-
RubyGems account requires MFA for pushes, also pass `--otp` or set
|
|
351
|
-
`GEM_HOST_OTP_CODE`.
|
|
352
|
-
|
|
353
|
-
Trusted publishing uses RubyGems OIDC instead of static secrets:
|
|
354
|
-
|
|
355
|
-
```yaml
|
|
356
|
-
distributions:
|
|
357
|
-
gem:
|
|
358
|
-
publish-auth: trusted
|
|
359
|
-
registry: https://rubygems.org
|
|
360
|
-
repository-url: https://github.com/your-org/your-repo
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
In trusted mode:
|
|
364
|
-
|
|
365
|
-
- GitHub Actions must grant `id-token: write`.
|
|
366
|
-
- The repository/workflow must be registered as a trusted publisher on RubyGems.org.
|
|
367
|
-
- `omnidist` can publish a brand-new gem name once the pending trusted publisher is configured on RubyGems.org.
|
|
368
|
-
|
|
369
|
-
## README and License Staging
|
|
370
|
-
|
|
371
|
-
README source precedence during staging:
|
|
372
|
-
|
|
373
|
-
```text
|
|
374
|
-
distributions.<name>.readme-path -> readme-path -> README.md
|
|
103
|
+
omnidist build
|
|
104
|
+
omnidist stage
|
|
105
|
+
omnidist verify
|
|
106
|
+
omnidist publish --dry-run
|
|
107
|
+
omnidist publish
|
|
375
108
|
```
|
|
376
109
|
|
|
377
|
-
|
|
378
|
-
`include-readme: false` for a distribution to skip README inclusion.
|
|
379
|
-
|
|
380
|
-
For npm packages, `license` can be set explicitly under `distributions.npm`.
|
|
381
|
-
When it is omitted, omnidist includes the project license file when present and
|
|
382
|
-
writes package metadata that points to that file.
|
|
110
|
+
Aggregate publish preflights every selected backend before the first upload. This prevents locally detectable late-backend failures from causing an avoidable partial release. Registry uploads are still external and are not transactionally reversible: a network or registry failure after uploads begin can leave a partial release.
|
|
383
111
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
Generate a release workflow:
|
|
112
|
+
Generate backend-aware GitHub Actions after the config is final:
|
|
387
113
|
|
|
388
114
|
```bash
|
|
389
115
|
omnidist ci
|
|
116
|
+
# use --force only to intentionally replace the generated workflow
|
|
390
117
|
```
|
|
391
118
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
```bash
|
|
395
|
-
omnidist ci --force
|
|
396
|
-
```
|
|
397
|
-
|
|
398
|
-
The workflow installs omnidist with npm. When generating this repository's own
|
|
399
|
-
release workflow, it uses `go run ./cmd/omnidist` instead. The workflow also
|
|
400
|
-
sets `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` for JavaScript-based GitHub
|
|
401
|
-
Actions.
|
|
119
|
+
The workflow contains setup, credentials, and publish jobs only for selected backends, plus a GitHub Release job for the built binaries.
|
|
402
120
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
- npm token mode: `NPM_PUBLISH_TOKEN` GitHub secret.
|
|
406
|
-
- npm trusted mode: npm trusted publishers for every staged npm package.
|
|
407
|
-
- uv publishing: `UV_PUBLISH_TOKEN` GitHub secret.
|
|
408
|
-
- gem token mode: `RUBYGEMS_API_KEY` GitHub secret, and optionally `RUBYGEMS_OTP_CODE`.
|
|
409
|
-
- gem trusted mode: RubyGems trusted publisher for the release workflow.
|
|
410
|
-
|
|
411
|
-
Release by pushing a SemVer tag:
|
|
412
|
-
|
|
413
|
-
```bash
|
|
414
|
-
git tag v1.2.3
|
|
415
|
-
git push origin v1.2.3
|
|
416
|
-
```
|
|
121
|
+
## Reference
|
|
417
122
|
|
|
418
|
-
|
|
123
|
+
- [Configuration reference](docs/configuration.md) — profiles, every YAML field, defaults, paths, and compatibility.
|
|
124
|
+
- [Release runbook](docs/releases.md) — credentials, first release, preflight, trusted publishing, and partial-release recovery.
|
|
125
|
+
- [Targets and variants](docs/targets.md) — Go target values and npm/wheel/gem mappings.
|
|
126
|
+
- [Contributing](CONTRIBUTING.md) — repository layout, tests, lint, and development workflow.
|
|
419
127
|
|
|
420
|
-
|
|
128
|
+
## Commands
|
|
421
129
|
|
|
422
|
-
```
|
|
423
|
-
omnidist init
|
|
130
|
+
```text
|
|
131
|
+
omnidist init [--force] [--name <name>] [--main <package>]
|
|
424
132
|
omnidist quickstart
|
|
425
133
|
omnidist build
|
|
426
|
-
omnidist stage [--dev] [--only npm
|
|
427
|
-
omnidist verify [--only npm
|
|
428
|
-
omnidist publish [--dry-run] [--only npm
|
|
134
|
+
omnidist stage [--dev] [--only npm,uv,gem]
|
|
135
|
+
omnidist verify [--only npm,uv,gem]
|
|
136
|
+
omnidist publish [--dry-run] [--only npm,uv,gem]
|
|
429
137
|
omnidist ci [--force] [--dry-run]
|
|
430
|
-
omnidist
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
Global flags:
|
|
434
|
-
|
|
435
|
-
```bash
|
|
436
|
-
--config <path>
|
|
437
|
-
--profile <name>
|
|
438
|
-
--omnidist-root <path>
|
|
138
|
+
omnidist npm stage|verify|publish|trust
|
|
139
|
+
omnidist uv stage|verify|publish
|
|
140
|
+
omnidist gem stage|verify|publish
|
|
439
141
|
```
|
|
440
142
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
```bash
|
|
444
|
-
omnidist npm stage [--dev]
|
|
445
|
-
omnidist npm verify
|
|
446
|
-
omnidist npm publish [--dry-run] [--tag <tag>] [--registry <url>] [--otp <code>]
|
|
447
|
-
omnidist npm trust [--apply] [--workflow-file <name>] [--repo <owner/repo>] [--environment <name>] [--allow-stage-publish]
|
|
448
|
-
```
|
|
449
|
-
|
|
450
|
-
uv commands:
|
|
451
|
-
|
|
452
|
-
```bash
|
|
453
|
-
omnidist uv stage [--dev]
|
|
454
|
-
omnidist uv verify
|
|
455
|
-
omnidist uv publish [--dry-run] [--publish-url <url>] [--token <token>]
|
|
456
|
-
```
|
|
457
|
-
|
|
458
|
-
gem commands:
|
|
459
|
-
|
|
460
|
-
```bash
|
|
461
|
-
omnidist gem stage [--dev]
|
|
462
|
-
omnidist gem verify
|
|
463
|
-
omnidist gem publish [--dry-run] [--host <url>] [--api-key <token>] [--otp <code>]
|
|
464
|
-
```
|
|
465
|
-
|
|
466
|
-
Top-level `stage`, `verify`, and `publish` run distributions in deterministic
|
|
467
|
-
order: npm first, then uv, then gem. Use `--only` to limit the command to one
|
|
468
|
-
or more distributions.
|
|
469
|
-
|
|
470
|
-
## Troubleshooting
|
|
471
|
-
|
|
472
|
-
`omnidist build` says no version could be resolved:
|
|
473
|
-
|
|
474
|
-
Check `version.source`. For `git-tag`, `HEAD` must be exactly on a SemVer tag.
|
|
475
|
-
For `env`, set `OMNIDIST_VERSION`. For `file`, create the configured version
|
|
476
|
-
file.
|
|
477
|
-
|
|
478
|
-
`omnidist stage` says the build version file is missing:
|
|
479
|
-
|
|
480
|
-
Run `omnidist build` first. Stage commands use the build version persisted under
|
|
481
|
-
`.omnidist/<profile>/dist/VERSION`.
|
|
482
|
-
|
|
483
|
-
npm install cannot find a platform package:
|
|
484
|
-
|
|
485
|
-
Run `omnidist npm verify` before publishing. It checks package versions,
|
|
486
|
-
platform `os` and `cpu` fields, required binaries, forbidden `postinstall`
|
|
487
|
-
scripts, repository metadata, and optional dependency parity.
|
|
488
|
-
|
|
489
|
-
Trusted npm publish fails:
|
|
490
|
-
|
|
491
|
-
Verify that `distributions.npm.repository-url` matches the GitHub repository,
|
|
492
|
-
the workflow grants `id-token: write`, and every npm package has a trusted
|
|
493
|
-
publisher configured.
|
|
494
|
-
|
|
495
|
-
uv publish rejects the version:
|
|
143
|
+
Global flags are `--config`, `--profile`, and `--omnidist-root`. Omnidist also loads `.env`; corresponding selectors are `OMNIDIST_CONFIG`, `OMNIDIST_PROFILE`, and `OMNIDIST_OMNIDIST_ROOT`.
|
|
496
144
|
|
|
497
|
-
|
|
498
|
-
metadata containing `+`.
|
|
145
|
+
Use `omnidist <command> --help` for backend-specific options.
|
|
499
146
|
|
|
500
|
-
##
|
|
147
|
+
## Common failures
|
|
501
148
|
|
|
502
|
-
|
|
503
|
-
|
|
149
|
+
- Version resolution: an exact SemVer tag is required for `git-tag`; `file` reads `version.file`; `env` reads `OMNIDIST_VERSION`; `fixed` requires `version.fixed`.
|
|
150
|
+
- Missing build version: run `omnidist build` before stage. Profiles store it at `.omnidist/<profile>/dist/VERSION`; legacy config uses `.omnidist/dist/VERSION`.
|
|
151
|
+
- Missing npm platform package: run `omnidist npm verify` and confirm the target matrix and equal versions.
|
|
152
|
+
- PyPI rejects `+...`: public PyPI/TestPyPI reject local version metadata; stage a publishable version.
|
|
153
|
+
- Trusted publish fails: local preflight cannot prove remote OIDC configuration. Confirm repository metadata, workflow filename/environment, `id-token: write`, and registry-side trusted publisher settings.
|
package/bin/omnidist
CHANGED
|
Binary file
|
package/package.json
CHANGED