Commit 5a32bb514ba7c50bed24148d4dc1fbd761c13c6e
Add prs/pull-requests command
cel committed on 11/7/2016, 12:22:16 AMParent: d2d438a41d60969e657ddf7efd99eeee032c3dde
Files changed
bin.js | changed |
lib/issues.js | changed |
lib/util.js | changed |
lib/pull-requests.js | added |
package.json | changed |
bin.js | ||
---|---|---|
@@ -36,8 +36,11 @@ | ||
36 | 36 … | case 'forks': |
37 | 37 … | return require('./lib/forks')(config) |
38 | 38 … | case 'issues': |
39 | 39 … | return require('./lib/issues')(config) |
40 … | + case 'prs': | |
41 … | + case 'pull-requests': | |
42 … | + return require('./lib/pull-requests')(config) | |
40 | 43 … | case 'name': |
41 | 44 … | return nameRepo(config) |
42 | 45 … | case 'pull-request': |
43 | 46 … | return require('./lib/pull-request')(config) |
@@ -62,8 +65,9 @@ | ||
62 | 65 … | ' create Create a git repo on SSB', |
63 | 66 … | ' fork Fork a git repo on SSB', |
64 | 67 … | ' forks List forks of a repo', |
65 | 68 … | ' issues List issues for a repo', |
69 … | + ' prs List pull requests for a repo', | |
66 | 70 … | ' name Name a repo', |
67 | 71 … | ' pull-request Create a pull-request', |
68 | 72 … | ' web Serve a web server for repos', |
69 | 73 … | ' help Get help about a command') |
@@ -120,14 +124,28 @@ | ||
120 | 124 … | '', |
121 | 125 … | ' List issues about a repo', |
122 | 126 … | '', |
123 | 127 … | 'Arguments:', |
124 | - ' repo id, url, or git remote name of the base repo.', | |
128 … | + ' repo id, url, or git remote name of the repo.', | |
125 | 129 … | ' default: \'origin\' or \'ssb\'', |
126 | 130 … | 'Options:', |
127 | 131 … | ' --open Show only open issues (default)', |
128 | 132 … | ' --closed Show only closed issues', |
129 | 133 … | ' --all Show issues of all state') |
134 … | + case 'pull-requests': | |
135 … | + case 'prs': | |
136 … | + return out( | |
137 … | + 'Usage: ' + prog + ' prs [--all|--open|--closed] [<repo>]', | |
138 … | + '', | |
139 … | + ' List pull requests for a repo', | |
140 … | + '', | |
141 … | + 'Arguments:', | |
142 … | + ' repo id, url, or git remote name of the base repo.', | |
143 … | + ' default: \'origin\' or \'ssb\'', | |
144 … | + 'Options:', | |
145 … | + ' --open Show only open pull requests (default)', | |
146 … | + ' --closed Show only closed pull-requests', | |
147 … | + ' --all Show pull requests of all state') | |
130 | 148 … | case 'name': |
131 | 149 … | return out( |
132 | 150 … | 'Usage: ' + prog + ' name [<repo>] <name>', |
133 | 151 … | '', |
lib/issues.js | ||
---|---|---|
@@ -3,25 +3,14 @@ | ||
3 | 3 … | var u = require('./util') |
4 | 4 … | var getAbout = require('ssb-avatar') |
5 | 5 … | var Issues = require('ssb-issues') |
6 | 6 … | |
7 | -function formatTitle(str) { | |
8 | - var len = 60 | |
9 | - str = String(str).replace(/[\n\r\t ]+/g, ' ') | |
10 | - if (str.length > len) str = str.substr(0, len) + '…' | |
11 | - return str | |
12 | -} | |
13 | - | |
14 | 7 … | module.exports = function (argv) { |
15 | 8 … | var id = u.repoId(u.getRemoteUrl(argv._[0])) || u.getDefaultRemote() |
16 | 9 … | if (!id) |
17 | 10 … | err(1, 'unable to find git-ssb repo') |
18 | 11 … | |
19 | - var open = | |
20 | - argv.all || (argv.open && argv.closed) ? null : | |
21 | - argv.open ? true : | |
22 | - argv.closed ? false : | |
23 | - true | |
12 … | + var open = u.issueStateBool(argv) | |
24 | 13 … | |
25 | 14 … | u.getSbot(argv, function (err, sbot) { |
26 | 15 … | if (err) throw err |
27 | 16 … | sbot.whoami(function (err, feed) { |
@@ -42,9 +31,9 @@ | ||
42 | 31 … | pull.map(function (issue) { |
43 | 32 … | return issue.id + ' ' + |
44 | 33 … | '@' + issue.authorName + ' ' + |
45 | 34 … | (open == null ? issue.open ? 'open: ' : 'closed: ' : '') + |
46 | - formatTitle(issue.text) | |
35 … | + u.formatTitle(issue.text, 60) | |
47 | 36 … | }), |
48 | 37 … | pull.drain(function (line) { |
49 | 38 … | console.log(line) |
50 | 39 … | }, function (err) { |
lib/util.js | ||
---|---|---|
@@ -94,4 +94,17 @@ | ||
94 | 94 … | cb(err === true ? null : err, name) |
95 | 95 … | }) |
96 | 96 … | ) |
97 | 97 … | } |
98 … | + | |
99 … | +u.formatTitle = function (str, len) { | |
100 … | + str = String(str).replace(/[\n\r\t ]+/g, ' ') | |
101 … | + if (str.length > len) str = str.substr(0, len) + '…' | |
102 … | + return str | |
103 … | +} | |
104 … | + | |
105 … | +u.issueStateBool = function (argv) { | |
106 … | + return argv.all || (argv.open && argv.closed) ? null : | |
107 … | + argv.open ? true : | |
108 … | + argv.closed ? false : | |
109 … | + true | |
110 … | +} |
lib/pull-requests.js | ||
---|---|---|
@@ -1,0 +1,47 @@ | ||
1 … | +var pull = require('pull-stream') | |
2 … | +var paramap = require('pull-paramap') | |
3 … | +var u = require('./util') | |
4 … | +var getAbout = require('ssb-avatar') | |
5 … | +var PRs = require('ssb-pull-requests') | |
6 … | + | |
7 … | +module.exports = function (argv) { | |
8 … | + var headRepo = u.repoId(u.getRemoteUrl(argv._[0])) || u.getDefaultRemote() | |
9 … | + if (!headRepo) | |
10 … | + err(1, 'unable to find git-ssb head repo') | |
11 … | + | |
12 … | + var open = u.issueStateBool(argv) | |
13 … | + | |
14 … | + u.getSbot(argv, function (err, sbot) { | |
15 … | + if (err) throw err | |
16 … | + sbot.whoami(function (err, feed) { | |
17 … | + if (err) throw err | |
18 … | + pull( | |
19 … | + PRs.init(sbot).list({ | |
20 … | + repo: headRepo, | |
21 … | + open: open | |
22 … | + }), | |
23 … | + paramap(function (pr, cb) { | |
24 … | + getAbout(sbot, feed.id, pr.author, function (err, authorAbout) { | |
25 … | + pr.authorName = authorAbout.name | |
26 … | + cb(err, pr) | |
27 … | + }) | |
28 … | + }, 8), | |
29 … | + pull.map(function (pr) { | |
30 … | + var state = pr.open ? 'open' : 'closed' | |
31 … | + return state + ' ' + pr.id + ' ' + '@' + pr.authorName + '\n' + | |
32 … | + ' ssb://' + pr.headRepo + ':' + pr.headBranch + ' ' + | |
33 … | + '→ ' + pr.baseBranch + '\n' + | |
34 … | + ' ' + u.formatTitle(pr.text, 77) + '\n' | |
35 … | + }), | |
36 … | + pull.drain(function (line) { | |
37 … | + console.log(line) | |
38 … | + }, function (err) { | |
39 … | + if (err) throw err | |
40 … | + process.exit(0) | |
41 … | + }) | |
42 … | + ) | |
43 … | + }) | |
44 … | + }) | |
45 … | +} | |
46 … | + | |
47 … | + |
package.json | ||
---|---|---|
@@ -22,9 +22,9 @@ | ||
22 | 22 … | "ssb-keys": "^6.1.2", |
23 | 23 … | "ssb-issues": "^0.2.3", |
24 | 24 … | "ssb-mentions": "^0.1.0", |
25 | 25 … | "ssb-msg-schemas": "^6.2.1", |
26 | - "ssb-pull-requests": "^0.1.2", | |
26 … | + "ssb-pull-requests": "^0.2.3", | |
27 | 27 … | "ssb-ref": "^2.6.2", |
28 | 28 … | "stream-to-pull-stream": "^1.7.2" |
29 | 29 … | }, |
30 | 30 … | "repository": { |
Built with git-ssb-web