Issue: can't call absolute path on Windwos MINGW64
This commit is contained in:
parent
8f922a4ef6
commit
552f13977e
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env node
|
||||
const { resolve } = require('path')
|
||||
const { isAbsolute, resolve } = require('path')
|
||||
let esm = global.esm = {
|
||||
parseArgs( args, opt = esm.argsopt )
|
||||
{
|
||||
|
@ -31,7 +31,17 @@ let esm = global.esm = {
|
|||
),
|
||||
getArgsKV: args=> Object.keys(args)
|
||||
.filter(isNaN)
|
||||
.reduce((o,k)=>({...o,[k]:args[k]}),{})
|
||||
.reduce((o,k)=>({...o,[k]:args[k]}),{}),
|
||||
|
||||
softResolve: str=> {
|
||||
try{
|
||||
return require.resolve(str)
|
||||
}catch(e){return false}
|
||||
},
|
||||
|
||||
searchInPathes: str=> ['.',...process.env.PATH.split(';')]
|
||||
.map( dir=> require('path').resolve(dir+'/'+str) )
|
||||
.filter( path=> esm.softResolve(path) )[0]
|
||||
|
||||
}
|
||||
|
||||
|
@ -39,20 +49,41 @@ process.arguments = esm.parseArgs( process.argv.slice(2) )
|
|||
process.arguments.flags = Object.assign( { json: false }, process.arguments.flags )
|
||||
|
||||
const splitted = (process.arguments.shift() || '').split(':')
|
||||
|
||||
// Issue on Windows: Volume letter is splitted ( ['C','Program files/module.js','export']
|
||||
if( process.platform == 'win32' && splitted[0].length == 1 && isAbsolute(splitted[0]+':\\') )
|
||||
{
|
||||
splitted[1] = splitted[0]+':'+splitted[1]
|
||||
splitted.shift()
|
||||
|
||||
}
|
||||
|
||||
// Issue on MINGW64: /c/dir/module:export is not transformed to C:/dir/module:export
|
||||
let res
|
||||
// Transforms a fake linux Windows path to Windows path
|
||||
// Ex: /c/Program\ files/ >> C:/Program\ files
|
||||
if( res = splitted[0].match(/^\/([a-zA-Z])\//) )
|
||||
splitted[0] = splitted[0].replace( /^\/./, res[1].toUpperCase()+':' )
|
||||
|
||||
const exported = splitted.length == 1 ? undefined : splitted.pop()
|
||||
const esmodule = splitted.join(':')
|
||||
, package = resolve('./package.json')
|
||||
, modulo = resolve( esmodule )
|
||||
, package = esm.softResolve('./package.json')
|
||||
//, modulo = isAbsolute(esmodule) ? esmodule : resolve( esmodule )
|
||||
, modulo = isAbsolute(esmodule) ? esm.softResolve(esmodule) : esm.searchInPathes(esmodule)
|
||||
|
||||
if( process.arguments.flags.debug )
|
||||
{
|
||||
console.log( process.cwd(), package, modulo )
|
||||
console.log( `process.argv=%o
|
||||
esmodule=%o
|
||||
exported=%o
|
||||
process.arguments=%o
|
||||
console.log( process.cwd(), package )
|
||||
console.log( `
|
||||
process.argv: %o
|
||||
esmodule: %o
|
||||
isAbsolute: %o
|
||||
modulo: %o
|
||||
package: %o
|
||||
exported: %o
|
||||
process.arguments: %o
|
||||
`,
|
||||
process.argv, modulo, exported, process.arguments )
|
||||
process.argv, esmodule, isAbsolute(esmodule), modulo, package ? require(package).module : 'no package', exported, process.arguments )
|
||||
}
|
||||
|
||||
process.arguments.flags.dry && process.exit()
|
||||
|
@ -68,7 +99,8 @@ const render = esm.render = obj=>
|
|||
render.json = obj=> process.stdout.write( obj && JSON.stringify(obj,null,'\t') || '' )
|
||||
render.log = obj=> console.log( obj || '' )
|
||||
|
||||
let mod = require( modulo || require(package).module )
|
||||
|
||||
let mod = require( modulo || resolve(require(package).module) )
|
||||
process.arguments.flags.debug
|
||||
&& console.log(mod)
|
||||
|
||||
|
|
Loading…
Reference in New Issue