1 | var proc = require('child_process')
|
2 | var u = require('./util')
|
3 | var path = require('path')
|
4 |
|
5 | exports.help = `
|
6 | Usage: git ssb create <remote> [<name>]
|
7 |
|
8 | Create a new git-ssb repo and add it as a git remote
|
9 |
|
10 | Arguments:
|
11 | remote Name of the remote to add. e.g. 'origin' or 'ssb'
|
12 | name Name to give the repo, if any
|
13 |
|
14 | Options:
|
15 | --private Make repo private
|
16 | --recps <feed>,... List of recipients for a private repo. Implies --private
|
17 | `
|
18 |
|
19 | function hasRemote(name) {
|
20 | var remotes = proc.spawnSync('git', ['remote']).stdout.toString().split(/\n/)
|
21 | return !!~remotes.indexOf(name)
|
22 | }
|
23 |
|
24 | exports.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 |
|
30 | exports.createRepo = function (config, remoteName, name, upstream) {
|
31 | if (!remoteName) throw 'Missing remote name'
|
32 | if (hasRemote(remoteName)) throw `Remote '${remoteName}' already exists`
|
33 |
|
34 |
|
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 |
|