@@ -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
96106def 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