44 * ------------------------------------------------------------------------------------------ */
55
66import * as os from 'os' ;
7- import * as util from './common' ;
87import { LinuxDistribution } from './linuxDistribution' ;
98import * as plist from 'plist' ;
109import * as fs from 'fs' ;
@@ -24,77 +23,53 @@ export function GetOSName(processPlatform: string | undefined): string | undefin
2423}
2524
2625export class PlatformInformation {
27- constructor ( public platform : string , public architecture ? : string , public distribution ?: LinuxDistribution , public version ?: string ) { }
26+ constructor ( public platform : string , public architecture : string , public distribution ?: LinuxDistribution , public version ?: string ) { }
2827
2928 public static GetPlatformInformation ( ) : Promise < PlatformInformation > {
3029 const platform : string = os . platform ( ) ;
31- let architecturePromise : Promise < string | undefined > ;
30+ const architecture : string = PlatformInformation . GetArchitecture ( ) ;
3231 let distributionPromise : Promise < LinuxDistribution | undefined > = Promise . resolve < LinuxDistribution | undefined > ( undefined ) ;
3332 let versionPromise : Promise < string | undefined > = Promise . resolve < string | undefined > ( undefined ) ;
3433
3534 switch ( platform ) {
3635 case "win32" :
37- architecturePromise = PlatformInformation . GetWindowsArchitecture ( ) ;
3836 break ;
3937
4038 case "linux" :
41- architecturePromise = PlatformInformation . GetUnixArchitecture ( ) ;
4239 distributionPromise = LinuxDistribution . GetDistroInformation ( ) ;
4340 break ;
4441
4542 case "darwin" :
46- architecturePromise = PlatformInformation . GetUnixArchitecture ( ) ;
4743 versionPromise = PlatformInformation . GetDarwinVersion ( ) ;
4844 break ;
4945
5046 default :
5147 throw new Error ( localize ( "unknown.os.platform" , "Unknown OS platform" ) ) ;
5248 }
5349
54- return Promise . all ( [ architecturePromise , distributionPromise , versionPromise ] )
55- . then ( ( [ arch , distro , version ] ) =>
56- new PlatformInformation ( platform , arch , distro , version )
50+ return Promise . all ( [ distributionPromise , versionPromise ] )
51+ . then ( ( [ distro , version ] ) =>
52+ new PlatformInformation ( platform , architecture , distro , version )
5753 ) ;
5854 }
5955
60- public static GetUnknownArchitecture ( ) : string { return "Unknown" ; }
61-
62- private static GetWindowsArchitecture ( ) : Promise < string > {
63- return util . execChildProcess ( 'wmic os get osarchitecture' , util . extensionPath )
64- . then ( ( architecture ) => {
65- if ( architecture ) {
66- const archArray : string [ ] = architecture . split ( os . EOL ) ;
67- if ( archArray . length >= 2 ) {
68- const arch : string = archArray [ 1 ] . trim ( ) ;
69-
70- // Note: This string can be localized. So, we'll just check to see if it contains 32 or 64.
71- if ( arch . indexOf ( '64' ) >= 0 ) {
72- if ( arch . indexOf ( 'ARM' ) >= 0 ) {
73- return "arm64" ;
74- }
75- return "x86_64" ;
76- } else if ( arch . indexOf ( '32' ) >= 0 ) {
77- return "x86" ;
78- }
79- }
80- }
81- return PlatformInformation . GetUnknownArchitecture ( ) ;
82- } ) . catch ( ( error ) => PlatformInformation . GetUnknownArchitecture ( ) ) ;
83- }
84-
85- private static GetUnixArchitecture ( ) : Promise < string | undefined > {
86- return util . execChildProcess ( 'uname -m' , util . packageJson . extensionFolderPath )
87- . then ( ( architecture ) => {
88- if ( architecture ) {
89- if ( architecture . startsWith ( 'arm64' ) || architecture . startsWith ( 'aarch64' ) ) {
90- return 'arm64' ;
91- } else if ( architecture . startsWith ( 'armv' ) ) {
92- return 'arm' ;
93- }
94- return architecture . trim ( ) ;
56+ public static GetArchitecture ( ) : string {
57+ const arch : string = os . arch ( ) ;
58+ switch ( arch ) {
59+ case "x64" :
60+ case "arm64" :
61+ case "arm" :
62+ return arch ;
63+ case "x32" :
64+ case "ia32" :
65+ return "x86" ;
66+ default :
67+ if ( os . platform ( ) === "win32" ) {
68+ return "x86" ;
69+ } else {
70+ return "x64" ;
9571 }
96- return undefined ;
97- } ) ;
72+ }
9873 }
9974
10075 private static GetDarwinVersion ( ) : Promise < string > {
0 commit comments