| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | #!/usr/bin/env nodeconst usage = () => `usage: mkdirp [DIR1,DIR2..] {OPTIONS}  Create each supplied directory including any necessary parent directories  that don't yet exist.  If the directory already exists, do nothing.OPTIONS are:  -m<mode>       If a directory needs to be created, set the mode as an octal  --mode=<mode>  permission string.  -v --version   Print the mkdirp version number  -h --help      Print this helpful banner  -p --print     Print the first directories created for each path provided  --manual       Use manual implementation, even if native is available`const dirs = []const opts = {}let print = falselet dashdash = falselet manual = falsefor (const arg of process.argv.slice(2)) {  if (dashdash)    dirs.push(arg)  else if (arg === '--')    dashdash = true  else if (arg === '--manual')    manual = true  else if (/^-h/.test(arg) || /^--help/.test(arg)) {    console.log(usage())    process.exit(0)  } else if (arg === '-v' || arg === '--version') {    console.log(require('../package.json').version)    process.exit(0)  } else if (arg === '-p' || arg === '--print') {    print = true  } else if (/^-m/.test(arg) || /^--mode=/.test(arg)) {    const mode = parseInt(arg.replace(/^(-m|--mode=)/, ''), 8)    if (isNaN(mode)) {      console.error(`invalid mode argument: ${arg}\nMust be an octal number.`)      process.exit(1)    }    opts.mode = mode  } else    dirs.push(arg)}const mkdirp = require('../')const impl = manual ? mkdirp.manual : mkdirpif (dirs.length === 0)  console.error(usage())Promise.all(dirs.map(dir => impl(dir, opts)))  .then(made => print ? made.forEach(m => m && console.log(m)) : null)  .catch(er => {    console.error(er.message)    if (er.code)      console.error('  code: ' + er.code)    process.exit(1)  })
 |