@@ -247,16 +247,34 @@ const errorMessage = (er, npm) => {
247247 break
248248
249249 case 'EBADPLATFORM' : {
250- const validOs =
251- er . required && er . required . os && er . required . os . join
252- ? er . required . os . join ( ',' )
253- : er . required . os
254- const validArch =
255- er . required && er . required . cpu && er . required . cpu . join
256- ? er . required . cpu . join ( ',' )
257- : er . required . cpu
258- const expected = { os : validOs , arch : validArch }
259- const actual = { os : process . platform , arch : process . arch }
250+ const actual = er . current
251+ const expected = { ...er . required }
252+ const checkedKeys = [ ]
253+ for ( const key in expected ) {
254+ if ( Array . isArray ( expected [ key ] ) && expected [ key ] . length > 0 ) {
255+ expected [ key ] = expected [ key ] . join ( ',' )
256+ checkedKeys . push ( key )
257+ } else if ( expected [ key ] === undefined ||
258+ Array . isArray ( expected [ key ] ) && expected [ key ] . length === 0 ) {
259+ delete expected [ key ]
260+ delete actual [ key ]
261+ } else {
262+ checkedKeys . push ( key )
263+ }
264+ }
265+
266+ const longestKey = Math . max ( ...checkedKeys . map ( ( key ) => key . length ) )
267+ const detailEntry = [ ]
268+ for ( const key of checkedKeys ) {
269+ const padding = key . length === longestKey
270+ ? 1
271+ : 1 + ( longestKey - key . length )
272+
273+ // padding + 1 because 'actual' is longer than 'valid'
274+ detailEntry . push ( `Valid ${ key } :${ ' ' . repeat ( padding + 1 ) } ${ expected [ key ] } ` )
275+ detailEntry . push ( `Actual ${ key } :${ ' ' . repeat ( padding ) } ${ actual [ key ] } ` )
276+ }
277+
260278 short . push ( [
261279 'notsup' ,
262280 [
@@ -270,12 +288,7 @@ const errorMessage = (er, npm) => {
270288 ] )
271289 detail . push ( [
272290 'notsup' ,
273- [
274- 'Valid OS: ' + validOs ,
275- 'Valid Arch: ' + validArch ,
276- 'Actual OS: ' + process . platform ,
277- 'Actual Arch: ' + process . arch ,
278- ] . join ( '\n' ) ,
291+ detailEntry . join ( '\n' ) ,
279292 ] )
280293 break
281294 }
0 commit comments