@@ -47,12 +47,13 @@ export def "zvm install" [version: string] {
47
47
48
48
let tarball = $version_data | get $" ($nu .os-info.arch )-($nu .os-info.name )" | get tarball
49
49
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 ) "
51
51
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 ) "
53
53
54
54
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 )"
56
57
rm -- recursive -- permanent $temp_dir
57
58
58
59
echo $" Successfully installed Zig ($version )"
@@ -74,7 +75,16 @@ export def "zvm use" [
74
75
}
75
76
76
77
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
+
78
88
echo $" Successfully switched to Zig ($version )"
79
89
}
80
90
@@ -94,9 +104,9 @@ export def "zvm remove" [
94
104
}
95
105
96
106
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"
98
108
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
100
110
if $minisign_result.exit_code != 0 {
101
111
error make {
102
112
msg : $" Failed to verify archive signature. Temporary data left as is in ($temp_dir )."
0 commit comments