Skip to content

Commit d8a3d12

Browse files
authored
Add Windows support for zvm module (#1053)
1 parent 9270f34 commit d8a3d12

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

modules/zvm/README.md

-1
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,4 @@ Add this to your `$env.PATH` to make zig accessible.
4242

4343
## Roadmap
4444

45-
- Windows support
4645
- [zls](https://github.com/zigtools/zls) support

modules/zvm/zvm.nu

+16-6
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,13 @@ export def "zvm install" [version: string] {
4747

4848
let tarball = $version_data | get $"($nu.os-info.arch)-($nu.os-info.name)" | get tarball
4949
let temp_dir = mktemp --directory --suffix "-zvm"
50-
http get $tarball | save --progress $"($temp_dir)/archive.tar.xz"
50+
http get $tarball | save --progress $"($temp_dir)/($tarball | path basename)"
5151
verify_signature $temp_dir $tarball
52-
ouch decompress --dir $temp_dir --quiet $"($temp_dir)/archive.tar.xz"
52+
ouch decompress --dir $temp_dir --quiet $"($temp_dir)/($tarball | path basename)"
5353

5454
let path_prefix = get_or_create_path_prefix
55-
cp --recursive $"($temp_dir)/zig-($nu.os-info.name)-($nu.os-info.arch)-($version)" $"($path_prefix)/($version)"
55+
let decompressed_dir_path = ls $temp_dir | where type == dir | get 0.name
56+
cp --recursive $decompressed_dir_path $"($path_prefix)/($version_to_install)"
5657
rm --recursive --permanent $temp_dir
5758

5859
echo $"Successfully installed Zig ($version)"
@@ -74,7 +75,16 @@ export def "zvm use" [
7475
}
7576

7677
let path_prefix = get_or_create_path_prefix
77-
ln -sf $"($path_prefix)/($zig_to_use.version)/zig" $"($path_prefix)/zig"
78+
let symlink = $"($path_prefix)/zig"
79+
let bin = $"($path_prefix)/($zig_to_use.version)/zig"
80+
81+
if $nu.os-info.name == "windows" {
82+
if ($symlink | path exists) { rm --permanent $symlink }
83+
mklink $symlink $bin
84+
} else {
85+
ln -sf $bin $symlink
86+
}
87+
7888
echo $"Successfully switched to Zig ($version)"
7989
}
8090

@@ -94,9 +104,9 @@ export def "zvm remove" [
94104
}
95105

96106
def verify_signature [temp_dir: string, tarball: string] {
97-
http get $"($tarball).minisig" | save $"($temp_dir)/archive.tar.xz.minisig"
107+
http get $"($tarball).minisig" | save $"($temp_dir)/($tarball | path basename).minisig"
98108

99-
let minisign_result = minisign -Vm $"($temp_dir)/archive.tar.xz" -P "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U" | complete
109+
let minisign_result = minisign -Vm $"($temp_dir)/($tarball | path basename)" -P "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U" | complete
100110
if $minisign_result.exit_code != 0 {
101111
error make {
102112
msg: $"Failed to verify archive signature. Temporary data left as is in ($temp_dir)."

0 commit comments

Comments
 (0)