@@ -24,7 +24,7 @@ function Get-Encoding($wc) {
24
24
}
25
25
26
26
function Get-UserAgent () {
27
- return " Scoop/1.0 (+http://scoop.sh/) PowerShell/$ ( $PSVersionTable.PSVersion.Major ) .$ ( $PSVersionTable.PSVersion.Minor ) (Windows NT $ ( [System.Environment ]::OSVersion.Version.Major) .$ ( [System.Environment ]::OSVersion.Version.Minor) ; $ ( if ($env: PROCESSOR_ARCHITECTURE -eq ' AMD64' ){' Win64; x64; ' }) $ ( if ($env: PROCESSOR_ARCHITEW6432 -eq ' AMD64' ){' WOW64; ' }) $PSEdition )"
27
+ return " Scoop/1.0 (+http://scoop.sh/) PowerShell/$ ( $PSVersionTable.PSVersion.Major ) .$ ( $PSVersionTable.PSVersion.Minor ) (Windows NT $ ( [System.Environment ]::OSVersion.Version.Major) .$ ( [System.Environment ]::OSVersion.Version.Minor) ; $ ( if (${ env: ProgramFiles(Arm)} ){ ' ARM64; ' } elseif ( $ env: PROCESSOR_ARCHITECTURE -eq ' AMD64' ){' Win64; x64; ' }) $ ( if ($env: PROCESSOR_ARCHITEW6432 -in ' AMD64' , ' ARM64 ' ){' WOW64; ' }) $PSEdition )"
28
28
}
29
29
30
30
function Show-DeprecatedWarning {
@@ -857,15 +857,38 @@ function ensure_in_path($dir, $global) {
857
857
}
858
858
}
859
859
860
- function ensure_architecture ($architecture_opt ) {
861
- if (! $architecture_opt ) {
862
- return default_architecture
860
+ function Get-DefaultArchitecture {
861
+ $arch = get_config DEFAULT_ARCHITECTURE
862
+ $system = if (${env: ProgramFiles(Arm)} ) {
863
+ ' arm64'
864
+ } elseif ([System.Environment ]::Is64BitOperatingSystem) {
865
+ ' 64bit'
866
+ } else {
867
+ ' 32bit'
868
+ }
869
+ if ($null -eq $arch ) {
870
+ $arch = $system
871
+ } else {
872
+ try {
873
+ $arch = Format-ArchitectureString $arch
874
+ } catch {
875
+ warn ' Invalid default architecture configured. Determining default system architecture'
876
+ $arch = $system
877
+ }
863
878
}
864
- $architecture_opt = $architecture_opt.ToString ().ToLower()
865
- switch ($architecture_opt ) {
866
- { @ (' 64bit' , ' 64' , ' x64' , ' amd64' , ' x86_64' , ' x86-64' ) -contains $_ } { return ' 64bit' }
867
- { @ (' 32bit' , ' 32' , ' x86' , ' i386' , ' 386' , ' i686' ) -contains $_ } { return ' 32bit' }
868
- default { throw [System.ArgumentException ] " Invalid architecture: '$architecture_opt '" }
879
+ return $arch
880
+ }
881
+
882
+ function Format-ArchitectureString ($Architecture ) {
883
+ if (! $Architecture ) {
884
+ return Get-DefaultArchitecture
885
+ }
886
+ $Architecture = $Architecture.ToString ().ToLower()
887
+ switch ($Architecture ) {
888
+ { @ (' 64bit' , ' 64' , ' x64' , ' amd64' , ' x86_64' , ' x86-64' ) -contains $_ } { return ' 64bit' }
889
+ { @ (' 32bit' , ' 32' , ' x86' , ' i386' , ' 386' , ' i686' ) -contains $_ } { return ' 32bit' }
890
+ { @ (' arm64' , ' arm' , ' aarch64' ) -contains $_ } { return ' arm64' }
891
+ default { throw [System.ArgumentException ] " Invalid architecture: '$Architecture '" }
869
892
}
870
893
}
871
894
@@ -1240,5 +1263,8 @@ $globaldir = $env:SCOOP_GLOBAL, (get_config GLOBAL_PATH), "$env:ProgramData\scoo
1240
1263
# Use at your own risk.
1241
1264
$cachedir = $env: SCOOP_CACHE , (get_config CACHE_PATH), " $scoopdir \cache" | Where-Object { -not [String ]::IsNullOrEmpty($_ ) } | Select-Object - First 1
1242
1265
1266
+ # OS information
1267
+ $WindowsBuild = [System.Environment ]::OSVersion.Version.Build
1268
+
1243
1269
# Setup proxy globally
1244
1270
setup_proxy
0 commit comments