@omnidist/omnidist-linux-arm64 0.1.35 → 0.1.37
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 +70 -411
- package/bin/omnidist +0 -0
- package/package.json +2 -2
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
|
-
|
|
54
|
+
`init` detects the command name and main package. If discovery is ambiguous, specify both explicitly:
|
|
109
55
|
|
|
110
56
|
```bash
|
|
111
|
-
omnidist
|
|
57
|
+
omnidist init --name mytool --main ./cmd/mytool
|
|
112
58
|
```
|
|
113
59
|
|
|
114
|
-
|
|
60
|
+
It refuses to replace an existing config. `omnidist init --force` intentionally replaces that file and is destructive; review or back it up first.
|
|
115
61
|
|
|
116
|
-
|
|
117
|
-
omnidist ci
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
The generated workflow is written to `.github/workflows/omnidist-release.yml`.
|
|
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.
|
|
124
|
-
|
|
125
|
-
## Configuration
|
|
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,96 @@ 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
|
-
- os: linux
|
|
147
|
-
arch: amd64
|
|
148
73
|
- os: linux
|
|
149
|
-
arch: arm64
|
|
150
|
-
- os: windows
|
|
151
74
|
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
|
-
```
|
|
211
|
-
|
|
212
|
-
`--dev` generates prerelease artifact versions from git metadata. For npm
|
|
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:
|
|
233
|
-
|
|
234
|
-
- `OMNIDIST_VERSION`: expanded in `build.ldflags` during `omnidist build`.
|
|
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
84
|
```
|
|
248
85
|
|
|
249
|
-
`
|
|
250
|
-
Unset variables expand to empty strings.
|
|
251
|
-
|
|
252
|
-
## npm Distribution
|
|
253
|
-
|
|
254
|
-
The npm distribution has two package types:
|
|
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.
|
|
255
87
|
|
|
256
|
-
|
|
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 offer both unscoped and scoped install names while publishing one shared platform package set, configure the unscoped package as primary, add the scoped name to `aliases`, and use the scoped base for platform packages:
|
|
276
89
|
|
|
277
90
|
```yaml
|
|
278
91
|
distributions:
|
|
279
92
|
npm:
|
|
280
|
-
|
|
281
|
-
|
|
93
|
+
package: omnidist
|
|
94
|
+
aliases:
|
|
95
|
+
- "@omnidist/omnidist"
|
|
96
|
+
platform-package: "@omnidist/omnidist"
|
|
97
|
+
access: public
|
|
282
98
|
```
|
|
283
99
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
- `repository-url` is required and is written to staged package metadata.
|
|
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
|
+
Users can then install either equivalent meta package:
|
|
292
101
|
|
|
293
102
|
```bash
|
|
294
|
-
|
|
103
|
+
npm install -g omnidist
|
|
104
|
+
npm install -g @omnidist/omnidist
|
|
295
105
|
```
|
|
296
106
|
|
|
297
|
-
|
|
107
|
+
Both meta packages reference platform packages such as `@omnidist/omnidist-linux-x64`; the binaries are not duplicated under each meta-package name. `package` is published first among meta packages, followed by `aliases` in configured order, after all unique platform packages. If `aliases` is omitted, Omnidist publishes only `package`. If `platform-package` is omitted or blank, it defaults to `package`, preserving existing package names. The configured npm identity must be allowed to publish every meta and platform name; trusted publishing must be configured for every generated package.
|
|
298
108
|
|
|
299
|
-
|
|
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:
|
|
109
|
+
## Release flow
|
|
342
110
|
|
|
343
111
|
```bash
|
|
344
|
-
omnidist
|
|
345
|
-
omnidist
|
|
346
|
-
omnidist
|
|
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
|
|
112
|
+
omnidist build
|
|
113
|
+
omnidist stage
|
|
114
|
+
omnidist verify
|
|
115
|
+
omnidist publish --dry-run
|
|
116
|
+
omnidist publish
|
|
375
117
|
```
|
|
376
118
|
|
|
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.
|
|
383
|
-
|
|
384
|
-
## CI Releases
|
|
119
|
+
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.
|
|
385
120
|
|
|
386
|
-
Generate
|
|
121
|
+
Generate backend-aware GitHub Actions after the config is final:
|
|
387
122
|
|
|
388
123
|
```bash
|
|
389
124
|
omnidist ci
|
|
125
|
+
# use --force only to intentionally replace the generated workflow
|
|
390
126
|
```
|
|
391
127
|
|
|
392
|
-
|
|
128
|
+
The workflow contains setup, credentials, and publish jobs only for selected backends, plus a GitHub Release job for the built binaries.
|
|
393
129
|
|
|
394
|
-
|
|
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.
|
|
402
|
-
|
|
403
|
-
Before the first tag release, configure the required registry credentials:
|
|
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.
|
|
130
|
+
## Reference
|
|
410
131
|
|
|
411
|
-
|
|
132
|
+
- [Configuration reference](docs/configuration.md) — profiles, every YAML field, defaults, paths, and compatibility.
|
|
133
|
+
- [Release runbook](docs/releases.md) — credentials, first release, preflight, trusted publishing, and partial-release recovery.
|
|
134
|
+
- [Targets and variants](docs/targets.md) — Go target values and npm/wheel/gem mappings.
|
|
135
|
+
- [Contributing](CONTRIBUTING.md) — repository layout, tests, lint, and development workflow.
|
|
412
136
|
|
|
413
|
-
|
|
414
|
-
git tag v1.2.3
|
|
415
|
-
git push origin v1.2.3
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
## Command Reference
|
|
137
|
+
## Commands
|
|
419
138
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
```bash
|
|
423
|
-
omnidist init
|
|
139
|
+
```text
|
|
140
|
+
omnidist init [--force] [--name <name>] [--main <package>]
|
|
424
141
|
omnidist quickstart
|
|
425
142
|
omnidist build
|
|
426
|
-
omnidist stage [--dev] [--only npm
|
|
427
|
-
omnidist verify [--only npm
|
|
428
|
-
omnidist publish [--dry-run] [--only npm
|
|
143
|
+
omnidist stage [--dev] [--only npm,uv,gem]
|
|
144
|
+
omnidist verify [--only npm,uv,gem]
|
|
145
|
+
omnidist publish [--dry-run] [--only npm,uv,gem]
|
|
429
146
|
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>
|
|
439
|
-
```
|
|
440
|
-
|
|
441
|
-
npm commands:
|
|
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>]
|
|
147
|
+
omnidist npm stage|verify|publish|trust
|
|
148
|
+
omnidist uv stage|verify|publish
|
|
149
|
+
omnidist gem stage|verify|publish
|
|
456
150
|
```
|
|
457
151
|
|
|
458
|
-
|
|
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:
|
|
152
|
+
Global flags are `--config`, `--profile`, and `--omnidist-root`. Omnidist also loads `.env`; corresponding selectors are `OMNIDIST_CONFIG`, `OMNIDIST_PROFILE`, and `OMNIDIST_OMNIDIST_ROOT`.
|
|
496
153
|
|
|
497
|
-
|
|
498
|
-
metadata containing `+`.
|
|
154
|
+
Use `omnidist <command> --help` for backend-specific options.
|
|
499
155
|
|
|
500
|
-
##
|
|
156
|
+
## Common failures
|
|
501
157
|
|
|
502
|
-
|
|
503
|
-
|
|
158
|
+
- Version resolution: an exact SemVer tag is required for `git-tag`; `file` reads `version.file`; `env` reads `OMNIDIST_VERSION`; `fixed` requires `version.fixed`.
|
|
159
|
+
- Missing build version: run `omnidist build` before stage. Profiles store it at `.omnidist/<profile>/dist/VERSION`; legacy config uses `.omnidist/dist/VERSION`.
|
|
160
|
+
- Missing npm platform package: run `omnidist npm verify` and confirm the target matrix and equal versions.
|
|
161
|
+
- PyPI rejects `+...`: public PyPI/TestPyPI reject local version metadata; stage a publishable version.
|
|
162
|
+
- 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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"cpu": [
|
|
3
3
|
"arm64"
|
|
4
4
|
],
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "omnidist binary for linux/arm64",
|
|
6
6
|
"files": [
|
|
7
7
|
"bin",
|
|
8
8
|
"README.md",
|
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
"type": "git",
|
|
18
18
|
"url": "git+https://github.com/metalagman/omnidist.git"
|
|
19
19
|
},
|
|
20
|
-
"version": "0.1.
|
|
20
|
+
"version": "0.1.37"
|
|
21
21
|
}
|