@jimpick/dat-next
Version:
Dat is the package manager for data. Easily share and version control data.
57 lines (49 loc) • 1.15 kB
JavaScript
var fs = require('fs')
var path = require('path')
var encoding = require('dat-encoding')
module.exports = function (opts) {
// dat [<cmd>] arg1 arg2 [options]
// parse args without options from opts._
// return parsed { dir, key }
var parsed = {
key: opts.key || null,
dir: opts.dir || null // process.cwd() ?
}
// dat [<cmd>]
if (!opts._.length) return parsed
// dat [<cmd>] arg1 arg2
// arg1 = key
// arg2 = dir
if (opts._.length === 2) {
parsed.key = opts._[0]
parsed.dir = opts._[1]
return parsed
}
// dat [<cmd>] arg
// arg = dir or key
// First, check if key
try {
parsed.key = encoding.toStr(opts._[0])
return parsed
} catch (err) {
if (err && err.message !== 'Invalid key') {
// catch non-key errors
console.error(err)
process.exit(1)
}
}
try {
var stat = fs.statSync(opts._[0])
if (stat.isFile()) {
parsed.dir = path.resolve(path.dirname(opts._[0]))
} else {
parsed.dir = opts._[0]
}
} catch (err) {
if (err && !err.name === 'ENOENT') {
console.error(err)
process.exit(1)
}
}
return parsed
}