forked from lix-project/lix
202c5e2afc
Do this if we want to do `--hash-algo` everywhere, and not `--algo` for hash commands. The new `nix hash convert` is updated. Deprecated new CLI commands are left as-is (`nix hash path` needs to be redone and is also left as-is).
48 lines
2 KiB
Markdown
48 lines
2 KiB
Markdown
---
|
|
synopsis: Add `nix hash convert`
|
|
prs: 9452
|
|
---
|
|
|
|
New [`nix hash convert`](https://github.com/NixOS/nix/issues/8876) sub command with a fast track
|
|
to stabilization! Examples:
|
|
|
|
- Convert the hash to `nix32`.
|
|
|
|
```bash
|
|
$ nix hash convert --hash-algo "sha1" --to nix32 "800d59cfcd3c05e900cb4e214be48f6b886a08df"
|
|
vw46m23bizj4n8afrc0fj19wrp7mj3c0
|
|
```
|
|
`nix32` is a base32 encoding with a nix-specific character set.
|
|
Explicitly specify the hashing algorithm (optional with SRI hashes) but detect hash format by the length of the input
|
|
hash.
|
|
- Convert the hash to the `sri` format that includes an algorithm specification:
|
|
```bash
|
|
nix hash convert --hash-algo "sha1" "800d59cfcd3c05e900cb4e214be48f6b886a08df"
|
|
sha1-gA1Zz808BekAy04hS+SPa4hqCN8=
|
|
```
|
|
or with an explicit `-to` format:
|
|
```bash
|
|
nix hash convert --hash-algo "sha1" --to sri "800d59cfcd3c05e900cb4e214be48f6b886a08df"
|
|
sha1-gA1Zz808BekAy04hS+SPa4hqCN8=
|
|
```
|
|
- Assert the input format of the hash:
|
|
```bash
|
|
nix hash convert --hash-algo "sha256" --from nix32 "ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0="
|
|
error: input hash 'ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=' does not have the expected format '--from nix32'
|
|
nix hash convert --hash-algo "sha256" --from nix32 "1b8m03r63zqhnjf7l5wnldhh7c134ap5vpj0850ymkq1iyzicy5s"
|
|
sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=
|
|
```
|
|
|
|
The `--to`/`--from`/`--hash-algo` parameters have context-sensitive auto-completion.
|
|
|
|
## Related Deprecations
|
|
|
|
The following commands are still available but will emit a deprecation warning. Please convert your code to
|
|
`nix hash convert`:
|
|
|
|
- `nix hash to-base16 $hash1 $hash2`: Use `nix hash convert --to base16 $hash1 $hash2` instead.
|
|
- `nix hash to-base32 $hash1 $hash2`: Use `nix hash convert --to nix32 $hash1 $hash2` instead.
|
|
- `nix hash to-base64 $hash1 $hash2`: Use `nix hash convert --to base64 $hash1 $hash2` instead.
|
|
- `nix hash to-sri $hash1 $hash2`: : Use `nix hash convert --to sri $hash1 $hash2`
|
|
or even just `nix hash convert $hash1 $hash2` instead.
|