UNPKG

1.67 kBJavaScriptView Raw
1var proc = require('child_process')
2var u = require('./util')
3var path = require('path')
4
5exports.help = `
6Usage: git ssb create <remote> [<name>]
7
8 Create a new git-ssb repo and add it as a git remote
9
10Arguments:
11 remote Name of the remote to add. e.g. 'origin' or 'ssb'
12 name Name to give the repo, if any
13
14Options:
15 --private Make repo private
16 --recps <feed>,... List of recipients for a private repo. Implies --private
17`
18
19function hasRemote(name) {
20 var remotes = proc.spawnSync('git', ['remote']).stdout.toString().split(/\n/)
21 return !!~remotes.indexOf(name)
22}
23
24exports.fn = function (argv) {
25 if (argv._.length < 1 || argv._.length > 2) return u.help('create')
26
27 module.exports.createRepo(argv, argv._[0], argv._[1]);
28}
29
30exports.createRepo = function (config, remoteName, name, upstream) {
31 if (!remoteName) throw 'Missing remote name'
32 if (hasRemote(remoteName)) throw `Remote '${remoteName}' already exists`
33
34 // If no name is given, use the current directory's name.
35 if (!name) name = path.basename(process.cwd())
36
37 u.getSbot(config, function (err, sbot) {
38 if (err) throw err
39 u.getRecps(sbot, config, function (err, recps) {
40 if (err) throw err
41 require('ssb-git-repo').createRepo(sbot, {
42 upstream: upstream,
43 name: name,
44 recps: recps,
45 }, function (err, repo) {
46 if (err) throw err
47 var url = 'ssb://' + repo.id
48 console.log('Created repo:', url, name ? '(' + name + ')' : '')
49 proc.spawnSync('git', ['remote', 'add', remoteName, url])
50 console.log('Added remote:', remoteName)
51 repo.close()
52 sbot.close()
53 })
54 })
55 })
56}
57