@@ -9,7 +9,7 @@ import * as path from 'path';
9
9
import * as semver from 'semver' ;
10
10
11
11
let osPlat : string = os . platform ( ) ;
12
- let osArch : string = os . arch ( ) ;
12
+ let osArch : string = translateArchToDistUrl ( os . arch ( ) ) ;
13
13
14
14
if ( ! tempDirectory ) {
15
15
let baseLocation ;
@@ -86,13 +86,13 @@ async function queryLatestMatch(versionSpec: string): Promise<string> {
86
86
let dataFileName : string ;
87
87
switch ( osPlat ) {
88
88
case 'linux' :
89
- dataFileName = ' linux-' + osArch ;
89
+ dataFileName = ` linux-${ osArch } ` ;
90
90
break ;
91
91
case 'darwin' :
92
- dataFileName = ' osx-' + osArch + ' -tar' ;
92
+ dataFileName = ` osx-${ osArch } -tar` ;
93
93
break ;
94
94
case 'win32' :
95
- dataFileName = ' win-' + osArch + ' -exe' ;
95
+ dataFileName = ` win-${ osArch } -exe` ;
96
96
break ;
97
97
default :
98
98
throw new Error ( `Unexpected OS '${ osPlat } '` ) ;
@@ -150,12 +150,11 @@ async function acquireNode(version: string): Promise<string> {
150
150
version = semver . clean ( version ) || '' ;
151
151
let fileName : string =
152
152
osPlat == 'win32'
153
- ? ' node-v' + version + ' -win-' + os . arch ( )
154
- : ' node-v' + version + '-' + osPlat + '-' + os . arch ( ) ;
153
+ ? ` node-v${ version } -win-${ osArch } `
154
+ : ` node-v${ version } - ${ osPlat } - ${ osArch } ` ;
155
155
let urlFileName : string =
156
- osPlat == 'win32' ? fileName + '.7z' : fileName + '.tar.gz' ;
157
-
158
- let downloadUrl = 'https://nodejs.org/dist/v' + version + '/' + urlFileName ;
156
+ osPlat == 'win32' ? `${ fileName } .7z` : `${ fileName } .tar.gz` ;
157
+ let downloadUrl = `https://nodejs.org/dist/v${ version } /${ urlFileName } ` ;
159
158
160
159
let downloadPath : string ;
161
160
@@ -210,8 +209,8 @@ async function acquireNodeFromFallbackLocation(
210
209
let exeUrl : string ;
211
210
let libUrl : string ;
212
211
try {
213
- exeUrl = `https://nodejs.org/dist/v${ version } /win-${ os . arch ( ) } /node.exe` ;
214
- libUrl = `https://nodejs.org/dist/v${ version } /win-${ os . arch ( ) } /node.lib` ;
212
+ exeUrl = `https://nodejs.org/dist/v${ version } /win-${ osArch } /node.exe` ;
213
+ libUrl = `https://nodejs.org/dist/v${ version } /win-${ osArch } /node.lib` ;
215
214
216
215
const exePath = await tc . downloadTool ( exeUrl ) ;
217
216
await io . cp ( exePath , path . join ( tempDir , 'node.exe' ) ) ;
@@ -232,3 +231,17 @@ async function acquireNodeFromFallbackLocation(
232
231
}
233
232
return await tc . cacheDir ( tempDir , 'node' , version ) ;
234
233
}
234
+
235
+ // os.arch does not always match the relative download url, e.g.
236
+ // os.arch == 'arm' != node-v12.13.1-linux-armv7l.tar.gz
237
+ // All other currently supported architectures match, e.g.:
238
+ // os.arch = arm64 => https://nodejs.org/dist/v{VERSION}/node-v{VERSION}-{OS}-arm64.tar.gz
239
+ // os.arch = x64 => https://nodejs.org/dist/v{VERSION}/node-v{VERSION}-{OS}-x64.tar.gz
240
+ function translateArchToDistUrl ( arch : string ) : string {
241
+ switch ( arch ) {
242
+ case 'arm' :
243
+ return 'armv7l' ;
244
+ default :
245
+ return arch ;
246
+ }
247
+ }
0 commit comments