function publish (_, data) { // ignore datjson.read() err, we'll prompt for name // xtend dat.json with opts var datInfo = xtend({ name: opts.name, url: 'dat://' + encoding.toStr(dat.key), // force correct url in publish? what about non-dat urls? title: opts.title, description: opts.description }, data) var welcome = output(` Publishing dat to ${chalk.green(opts.server)}! `) console.log(welcome) if (datInfo.name) return makeRequest(datInfo) prompt.message = '' prompt.start() prompt.get({ properties: { name: { description: chalk.magenta('dat name'), pattern: /^[a-zA-Z0-9-]+$/, message: `A dat name can only have letters, numbers, or dashes.\n Like ${chalk.bold('cool-cats-12meow')}`, required: true } } }, function (err, results) { if (err) return exitErr(err) datInfo.name = results.name makeRequest(datInfo) }) }
function publish (dat) { var datInfo = { name: dat.meta.name || opts.name, url: 'dat://' + encoding.toStr(dat.key), title: dat.meta.title, description: dat.meta.description, keywords: dat.meta.keywords } if (!datInfo.name) { prompt.message = '' prompt.colors = false prompt.start() prompt.get([{ name: 'name', pattern: /^[a-zA-Z\s-]+$/, message: 'Name must be only letters, spaces, or dashes', required: true }], function (err, results) { if (err) return console.log(err.message) console.log(results.name) datInfo.name = results.name makeRequest(datInfo) }) } else { makeRequest(datInfo) } }
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 }
module.exports = function (key) { return `Link: dat://${stringKey(key)}` }