示例#1
0
文件: publish.js 项目: maxogden/dat
    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)
      })
    }
示例#2
0
文件: publish.js 项目: paulfitz/dat
    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)
      }
    }
示例#3
0
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
}
示例#4
0
文件: link.js 项目: paulfitz/dat
module.exports = function (key) {
  return `Link: dat://${stringKey(key)}`
}