github_cli 0.4.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/.travis.yml +0 -2
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +9 -3
- data/README.md +68 -48
- data/Rakefile +47 -1
- data/bin/gcli +18 -0
- data/bin/ghc +1 -17
- data/features/blob.feature +6 -6
- data/features/collaborator.feature +10 -10
- data/features/commit.feature +6 -6
- data/features/completion.feature +3 -3
- data/features/config.feature +55 -0
- data/features/content.feature +9 -9
- data/features/download.feature +11 -11
- data/features/email.feature +8 -8
- data/features/errors.feature +11 -9
- data/features/event.feature +20 -20
- data/features/executable.feature +4 -4
- data/features/follower.feature +13 -13
- data/features/fork.feature +6 -6
- data/features/gist.feature +22 -22
- data/features/hook.feature +14 -14
- data/features/init.feature +48 -0
- data/features/issue.feature +12 -12
- data/features/key.feature +12 -12
- data/features/label.feature +23 -23
- data/features/member.feature +13 -13
- data/features/milestone.feature +12 -12
- data/features/organization.feature +9 -9
- data/features/pull_request.feature +18 -18
- data/features/reference.feature +13 -13
- data/features/repository.feature +20 -20
- data/features/search.feature +10 -10
- data/features/search_commands.feature +4 -4
- data/features/support/hooks.rb +3 -1
- data/features/tag.feature +6 -6
- data/features/team.feature +28 -28
- data/features/tree.feature +5 -5
- data/features/usage.feature +3 -3
- data/features/user.feature +7 -7
- data/features/watching.feature +13 -13
- data/fixtures/simple_config +9 -8
- data/github_cli.gemspec +2 -2
- data/lib/github_cli/api.rb +3 -3
- data/lib/github_cli/cli.rb +96 -17
- data/lib/github_cli/config.rb +30 -9
- data/lib/github_cli/editor.rb +11 -6
- data/lib/github_cli/man/gcli-config.1 +102 -0
- data/lib/github_cli/man/gcli-config.1.txt +96 -0
- data/lib/github_cli/man/gcli-repo.1 +16 -0
- data/lib/github_cli/man/gcli-repo.1.txt +15 -0
- data/lib/github_cli/man/gcli.1 +34 -0
- data/lib/github_cli/man/gcli.1.txt +33 -0
- data/lib/github_cli/manpage.rb +42 -0
- data/lib/github_cli/pager.rb +1 -1
- data/lib/github_cli/terminal.rb +8 -2
- data/lib/github_cli/thor_ext.rb +12 -1
- data/lib/github_cli/vendor.rb +10 -0
- data/lib/github_cli/version.rb +1 -1
- data/lib/github_cli.rb +7 -2
- data/man/gcli-config.1.ronn +82 -0
- data/man/gcli-repo.1.ronn +7 -0
- data/man/gcli.1.ronn +29 -0
- data/spec/github_cli/config_spec.rb +21 -7
- metadata +43 -22
- data/features/settings.feature +0 -35
data/features/search.feature
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: gcli search
|
2
2
|
|
3
3
|
Scenario: Available commands
|
4
4
|
|
5
|
-
When I run `
|
5
|
+
When I run `gcli search`
|
6
6
|
Then the exit status should be 0
|
7
|
-
And the output should contain "
|
8
|
-
And the output should contain "
|
9
|
-
And the output should contain "
|
10
|
-
And the output should contain "
|
7
|
+
And the output should contain "gcli search email"
|
8
|
+
And the output should contain "gcli search issue"
|
9
|
+
And the output should contain "gcli search repo"
|
10
|
+
And the output should contain "gcli search user"
|
11
11
|
|
12
12
|
Scenario: Search issues
|
13
13
|
Given the GitHub API server:
|
14
14
|
"""
|
15
15
|
get('/legacy/issues/search/wycats/thor/open/shell') { status 200 }
|
16
16
|
"""
|
17
|
-
When I run `
|
17
|
+
When I run `gcli search issue wycats thor shell --state=open`
|
18
18
|
Then the exit status should be 0
|
19
19
|
|
20
20
|
Scenario: Search repositories
|
@@ -22,7 +22,7 @@ Feature: ghc search
|
|
22
22
|
"""
|
23
23
|
get('/legacy/repos/search/shell') { status 200 }
|
24
24
|
"""
|
25
|
-
When I run `
|
25
|
+
When I run `gcli search repo shell`
|
26
26
|
Then the exit status should be 0
|
27
27
|
|
28
28
|
Scenario: Search users
|
@@ -30,7 +30,7 @@ Feature: ghc search
|
|
30
30
|
"""
|
31
31
|
get('/legacy/user/search/wycats') { status 200 }
|
32
32
|
"""
|
33
|
-
When I run `
|
33
|
+
When I run `gcli search user wycats`
|
34
34
|
Then the exit status should be 0
|
35
35
|
|
36
36
|
Scenario: Search email
|
@@ -38,5 +38,5 @@ Feature: ghc search
|
|
38
38
|
"""
|
39
39
|
get('/legacy/user/search/wycats') { status 200 }
|
40
40
|
"""
|
41
|
-
When I run `
|
41
|
+
When I run `gcli search user wycats`
|
42
42
|
Then the exit status should be 0
|
@@ -6,7 +6,7 @@ Feature: Github API Commands Search
|
|
6
6
|
I have ability to list commands by search criteria
|
7
7
|
|
8
8
|
Scenario: Listing
|
9
|
-
When I run `
|
9
|
+
When I run `gcli list`
|
10
10
|
Then the exit status should be 0
|
11
11
|
And the output should contain:
|
12
12
|
"""
|
@@ -16,7 +16,7 @@ Feature: Github API Commands Search
|
|
16
16
|
"""
|
17
17
|
|
18
18
|
Scenario Outline: Pattern Matching
|
19
|
-
When I run `
|
19
|
+
When I run `gcli list <pattern>`
|
20
20
|
Then the output should contain "repo"
|
21
21
|
And the output should not contain "issue"
|
22
22
|
|
@@ -26,8 +26,8 @@ Feature: Github API Commands Search
|
|
26
26
|
| repo |
|
27
27
|
|
28
28
|
Scenario: No Match
|
29
|
-
When I run `
|
29
|
+
When I run `gcli list bla`
|
30
30
|
Then the output should contain:
|
31
31
|
"""
|
32
|
-
|
32
|
+
gcli: 'bla' is not a gcli command. See 'gcli --help'.
|
33
33
|
"""
|
data/features/support/hooks.rb
CHANGED
data/features/tag.feature
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: gcli tag
|
2
2
|
|
3
3
|
Scenario: Available commands
|
4
4
|
|
5
|
-
When I run `
|
5
|
+
When I run `gcli tag`
|
6
6
|
Then the exit status should be 0
|
7
|
-
And the output should contain "
|
8
|
-
And the output should contain "
|
7
|
+
And the output should contain "gcli tag create"
|
8
|
+
And the output should contain "gcli tag get"
|
9
9
|
|
10
10
|
Scenario: Get tag
|
11
11
|
Given the GitHub API server:
|
12
12
|
"""
|
13
13
|
get('/repos/wycats/thor/git/tags/827efc6d5') { status 200 }
|
14
14
|
"""
|
15
|
-
When I run `
|
15
|
+
When I run `gcli tag get wycats thor 827efc6d5`
|
16
16
|
Then the exit status should be 0
|
17
17
|
|
18
18
|
Scenario: Create tag
|
@@ -20,5 +20,5 @@ Feature: ghc tag
|
|
20
20
|
"""
|
21
21
|
post('/repos/wycats/thor/git/tags') { status 200 }
|
22
22
|
"""
|
23
|
-
When I run `
|
23
|
+
When I run `gcli tag create wycats thor`
|
24
24
|
Then the exit status should be 0
|
data/features/team.feature
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: gcli team
|
2
2
|
|
3
3
|
Scenario: Available commands
|
4
|
-
When I run `
|
4
|
+
When I run `gcli team`
|
5
5
|
Then the exit status should be 0
|
6
|
-
And the output should contain "
|
7
|
-
And the output should contain "
|
8
|
-
And the output should contain "
|
9
|
-
And the output should contain "
|
10
|
-
And the output should contain "
|
11
|
-
And the output should contain "
|
12
|
-
And the output should contain "
|
13
|
-
And the output should contain "
|
14
|
-
And the output should contain "
|
15
|
-
And the output should contain "
|
16
|
-
And the output should contain "
|
17
|
-
And the output should contain "
|
18
|
-
And the output should contain "
|
6
|
+
And the output should contain "gcli team add_member"
|
7
|
+
And the output should contain "gcli team add_repo"
|
8
|
+
And the output should contain "gcli team create"
|
9
|
+
And the output should contain "gcli team delete"
|
10
|
+
And the output should contain "gcli team edit"
|
11
|
+
And the output should contain "gcli team get"
|
12
|
+
And the output should contain "gcli team list"
|
13
|
+
And the output should contain "gcli team list_member"
|
14
|
+
And the output should contain "gcli team list_repo"
|
15
|
+
And the output should contain "gcli team member"
|
16
|
+
And the output should contain "gcli team remove_member"
|
17
|
+
And the output should contain "gcli team remove_repo"
|
18
|
+
And the output should contain "gcli team repo"
|
19
19
|
|
20
20
|
Scenario: List all teams
|
21
21
|
Given the GitHub API server:
|
22
22
|
"""
|
23
23
|
get('/orgs/rails/teams') { status 200 }
|
24
24
|
"""
|
25
|
-
When I run `
|
25
|
+
When I run `gcli team ls rails`
|
26
26
|
Then the exit status should be 0
|
27
27
|
|
28
28
|
Scenario: Get team
|
@@ -30,7 +30,7 @@ Feature: ghc team
|
|
30
30
|
"""
|
31
31
|
get('/teams/rails') { status 200 }
|
32
32
|
"""
|
33
|
-
When I run `
|
33
|
+
When I run `gcli team get rails`
|
34
34
|
Then the exit status should be 0
|
35
35
|
|
36
36
|
Scenario: Create team
|
@@ -38,7 +38,7 @@ Feature: ghc team
|
|
38
38
|
"""
|
39
39
|
post('/orgs/rails/teams') { status 200 }
|
40
40
|
"""
|
41
|
-
When I run `
|
41
|
+
When I run `gcli team create rails --params=name:'new team'`
|
42
42
|
Then the exit status should be 0
|
43
43
|
|
44
44
|
Scenario: Edit team
|
@@ -46,7 +46,7 @@ Feature: ghc team
|
|
46
46
|
"""
|
47
47
|
patch('/teams/rails') { status 200 }
|
48
48
|
"""
|
49
|
-
When I run `
|
49
|
+
When I run `gcli team edit rails --params=name:'new team'`
|
50
50
|
Then the exit status should be 0
|
51
51
|
|
52
52
|
Scenario: Delete team
|
@@ -54,7 +54,7 @@ Feature: ghc team
|
|
54
54
|
"""
|
55
55
|
delete('/teams/rails') { status 200 }
|
56
56
|
"""
|
57
|
-
When I run `
|
57
|
+
When I run `gcli team del rails`
|
58
58
|
Then the exit status should be 0
|
59
59
|
|
60
60
|
Scenario: List team members
|
@@ -62,7 +62,7 @@ Feature: ghc team
|
|
62
62
|
"""
|
63
63
|
get('/teams/rails/members') { status 200 }
|
64
64
|
"""
|
65
|
-
When I run `
|
65
|
+
When I run `gcli team list_members rails`
|
66
66
|
Then the exit status should be 0
|
67
67
|
|
68
68
|
Scenario: Check is user is a team member
|
@@ -70,7 +70,7 @@ Feature: ghc team
|
|
70
70
|
"""
|
71
71
|
get('/teams/rails/members/wycats') { status 200 }
|
72
72
|
"""
|
73
|
-
When I run `
|
73
|
+
When I run `gcli team member rails wycats`
|
74
74
|
Then the exit status should be 0
|
75
75
|
|
76
76
|
Scenario: Add a team member
|
@@ -78,7 +78,7 @@ Feature: ghc team
|
|
78
78
|
"""
|
79
79
|
put('/teams/rails/members/wycats') { status 200 }
|
80
80
|
"""
|
81
|
-
When I run `
|
81
|
+
When I run `gcli team add_member rails wycats`
|
82
82
|
Then the exit status should be 0
|
83
83
|
|
84
84
|
Scenario: Remove a team member
|
@@ -86,7 +86,7 @@ Feature: ghc team
|
|
86
86
|
"""
|
87
87
|
delete('/teams/rails/members/wycats') { status 200 }
|
88
88
|
"""
|
89
|
-
When I run `
|
89
|
+
When I run `gcli team remove_member rails wycats`
|
90
90
|
Then the exit status should be 0
|
91
91
|
|
92
92
|
Scenario: List team repositories
|
@@ -94,7 +94,7 @@ Feature: ghc team
|
|
94
94
|
"""
|
95
95
|
get('/teams/rails/repos') { status 200 }
|
96
96
|
"""
|
97
|
-
When I run `
|
97
|
+
When I run `gcli team list_repo rails`
|
98
98
|
Then the exit status should be 0
|
99
99
|
|
100
100
|
Scenario: Check if repository belongs to a team
|
@@ -102,7 +102,7 @@ Feature: ghc team
|
|
102
102
|
"""
|
103
103
|
get('/teams/rails/repos/wycats/thor') { status 200 }
|
104
104
|
"""
|
105
|
-
When I run `
|
105
|
+
When I run `gcli team repo rails wycats thor`
|
106
106
|
Then the exit status should be 0
|
107
107
|
|
108
108
|
Scenario: Add a team repository
|
@@ -110,7 +110,7 @@ Feature: ghc team
|
|
110
110
|
"""
|
111
111
|
put('/teams/rails/repos/wycats/thor') { status 200 }
|
112
112
|
"""
|
113
|
-
When I run `
|
113
|
+
When I run `gcli team add_repo rails wycats thor`
|
114
114
|
Then the exit status should be 0
|
115
115
|
|
116
116
|
Scenario: Remove a team repository
|
@@ -118,6 +118,6 @@ Feature: ghc team
|
|
118
118
|
"""
|
119
119
|
delete('/teams/rails/repos/wycats/thor') { status 200 }
|
120
120
|
"""
|
121
|
-
When I run `
|
121
|
+
When I run `gcli team remove_repo rails wycats thor`
|
122
122
|
Then the exit status should be 0
|
123
123
|
|
data/features/tree.feature
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: gcli tree
|
2
2
|
|
3
3
|
Scenario: Available commands
|
4
4
|
|
5
|
-
When I run `
|
5
|
+
When I run `gcli tree`
|
6
6
|
Then the exit status should be 0
|
7
|
-
And the output should contain "
|
8
|
-
And the output should contain "
|
7
|
+
And the output should contain "gcli tree create"
|
8
|
+
And the output should contain "gcli tree get"
|
9
9
|
|
10
10
|
Scenario: Get tree
|
11
11
|
Given the GitHub API server:
|
12
12
|
"""
|
13
13
|
get('/repos/wycats/thor/git/trees/827efc6d5') { status 200 }
|
14
14
|
"""
|
15
|
-
When I run `
|
15
|
+
When I run `gcli tree get wycats thor 827efc6d5`
|
16
16
|
Then the exit status should be 0
|
data/features/usage.feature
CHANGED
@@ -2,9 +2,9 @@ Feature: Command Usage
|
|
2
2
|
|
3
3
|
Scenario: Getting Usage for Commands
|
4
4
|
|
5
|
-
When I run `
|
5
|
+
When I run `gcli`
|
6
6
|
Then the exit status should be 0
|
7
|
-
And the output should contain "Usage:
|
7
|
+
And the output should contain "Usage: gcli"
|
8
8
|
And the output should contain "[--config]"
|
9
9
|
And the output should contain "[--no-color]"
|
10
10
|
And the output should contain "[--no-pager]"
|
@@ -13,6 +13,6 @@ Feature: Command Usage
|
|
13
13
|
|
14
14
|
Scenario: Specific usage for command
|
15
15
|
|
16
|
-
When I run `
|
16
|
+
When I run `gcli repo`
|
17
17
|
Then the exit status should be 0
|
18
18
|
And the output should contain "repo <subcommand>"
|
data/features/user.feature
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: gcli user
|
2
2
|
|
3
3
|
Scenario: Available commands
|
4
4
|
|
5
|
-
When I run `
|
5
|
+
When I run `gcli user`
|
6
6
|
Then the exit status should be 0
|
7
|
-
And the output should contain "
|
8
|
-
And the output should contain "
|
7
|
+
And the output should contain "gcli user get"
|
8
|
+
And the output should contain "gcli user update"
|
9
9
|
|
10
10
|
Scenario: Get user
|
11
11
|
Given the GitHub API server:
|
12
12
|
"""
|
13
13
|
get('/users/wycats') { status 200 }
|
14
14
|
"""
|
15
|
-
When I run `
|
15
|
+
When I run `gcli user get -u wycats`
|
16
16
|
Then the exit status should be 0
|
17
17
|
|
18
18
|
Scenario: Get the authenticated user
|
@@ -20,7 +20,7 @@ Feature: ghc user
|
|
20
20
|
"""
|
21
21
|
get('/user') { status 200 }
|
22
22
|
"""
|
23
|
-
When I run `
|
23
|
+
When I run `gcli user get`
|
24
24
|
Then the exit status should be 0
|
25
25
|
|
26
26
|
Scenario: Update the authenticated user
|
@@ -28,5 +28,5 @@ Feature: ghc user
|
|
28
28
|
"""
|
29
29
|
patch('/user') { status 200 }
|
30
30
|
"""
|
31
|
-
When I run `
|
31
|
+
When I run `gcli user update --params=name:peter-murach`
|
32
32
|
Then the exit status should be 0
|
data/features/watching.feature
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: gcli watching
|
2
2
|
|
3
3
|
Scenario: Available commands
|
4
4
|
|
5
|
-
When I run `
|
5
|
+
When I run `gcli watch`
|
6
6
|
Then the exit status should be 0
|
7
|
-
And the output should contain "
|
8
|
-
And the output should contain "
|
9
|
-
And the output should contain "
|
10
|
-
And the output should contain "
|
11
|
-
And the output should contain "
|
7
|
+
And the output should contain "gcli watch start"
|
8
|
+
And the output should contain "gcli watch stop"
|
9
|
+
And the output should contain "gcli watch watched"
|
10
|
+
And the output should contain "gcli watch watchers"
|
11
|
+
And the output should contain "gcli watch watching"
|
12
12
|
|
13
13
|
Scenario: Watchers
|
14
14
|
Given the GitHub API server:
|
15
15
|
"""
|
16
16
|
get('/repos/wycats/thor/watchers') { status 200 }
|
17
17
|
"""
|
18
|
-
When I run `
|
18
|
+
When I run `gcli watch watchers wycats thor`
|
19
19
|
Then the exit status should be 0
|
20
20
|
|
21
21
|
Scenario: Start watching
|
@@ -23,7 +23,7 @@ Feature: ghc watching
|
|
23
23
|
"""
|
24
24
|
put('/user/watched/wycats/thor') { status 200 }
|
25
25
|
"""
|
26
|
-
When I run `
|
26
|
+
When I run `gcli watch start wycats thor`
|
27
27
|
Then the exit status should be 0
|
28
28
|
|
29
29
|
Scenario: Stop watching
|
@@ -31,7 +31,7 @@ Feature: ghc watching
|
|
31
31
|
"""
|
32
32
|
delete('/user/watched/wycats/thor') { status 200 }
|
33
33
|
"""
|
34
|
-
When I run `
|
34
|
+
When I run `gcli watch stop wycats thor`
|
35
35
|
Then the exit status should be 0
|
36
36
|
|
37
37
|
Scenario: Watching
|
@@ -39,7 +39,7 @@ Feature: ghc watching
|
|
39
39
|
"""
|
40
40
|
get('/user/watched/wycats/thor') { status 200 }
|
41
41
|
"""
|
42
|
-
When I run `
|
42
|
+
When I run `gcli watch watching wycats thor`
|
43
43
|
Then the exit status should be 0
|
44
44
|
|
45
45
|
Scenario: Watched by a user
|
@@ -47,7 +47,7 @@ Feature: ghc watching
|
|
47
47
|
"""
|
48
48
|
get('/users/wycats/watched') { status 200 }
|
49
49
|
"""
|
50
|
-
When I run `
|
50
|
+
When I run `gcli watch watched -u wycats`
|
51
51
|
Then the exit status should be 0
|
52
52
|
|
53
53
|
Scenario: Watched by the authenticated user
|
@@ -55,6 +55,6 @@ Feature: ghc watching
|
|
55
55
|
"""
|
56
56
|
get('/user/watched') { status 200 }
|
57
57
|
"""
|
58
|
-
When I run `
|
58
|
+
When I run `gcli watch watched`
|
59
59
|
Then the exit status should be 0
|
60
60
|
|
data/fixtures/simple_config
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
|
4
|
-
host:
|
5
|
-
user:
|
6
|
-
repo:
|
7
|
-
commands:
|
8
|
-
|
9
|
-
|
2
|
+
auth.token: ad7f9asdf97as98df7as9fd7
|
3
|
+
auth.basic: 'login:password'
|
4
|
+
core.host:
|
5
|
+
core.user:
|
6
|
+
core.repo:
|
7
|
+
commands.issue.list:
|
8
|
+
title: 'ticket'
|
9
|
+
commands.issue.get:
|
10
|
+
title: 'ticket'
|
data/github_cli.gemspec
CHANGED
@@ -9,17 +9,17 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.homepage = "http://github.com/peter-murach/github_cli"
|
10
10
|
|
11
11
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
|
-
gem.files = `git ls-files`.split("\n")
|
12
|
+
gem.files = `git ls-files`.split("\n") + Dir.glob("lib/github_cli/man/**/*")
|
13
13
|
gem.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
14
14
|
gem.name = "github_cli"
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = GithubCLI::VERSION
|
17
17
|
|
18
18
|
gem.add_dependency 'github_api', '~> 0.6'
|
19
|
-
gem.add_dependency 'thor'
|
20
19
|
|
21
20
|
gem.add_development_dependency 'rspec'
|
22
21
|
gem.add_development_dependency 'aruba'
|
23
22
|
gem.add_development_dependency 'rake'
|
24
23
|
gem.add_development_dependency 'communist'
|
24
|
+
gem.add_development_dependency 'ronn'
|
25
25
|
end
|
data/lib/github_cli/api.rb
CHANGED
@@ -20,9 +20,9 @@ module GithubCLI
|
|
20
20
|
|
21
21
|
def configure_api
|
22
22
|
@@api = Github.new
|
23
|
-
@@api.oauth_token = GithubCLI.config['
|
24
|
-
@@api.basic_auth = GithubCLI.config['
|
25
|
-
|
23
|
+
@@api.oauth_token = GithubCLI.config['auth.token']
|
24
|
+
@@api.basic_auth = GithubCLI.config['auth.basic']
|
25
|
+
@@api.endpoint = GithubCLI.config['core.endpoint'] || @@api.endpoint
|
26
26
|
if ENV['TEST_HOST']
|
27
27
|
@@api.endpoint = 'http://' + ENV['TEST_HOST']
|
28
28
|
end
|
data/lib/github_cli/cli.rb
CHANGED
@@ -18,56 +18,135 @@ module GithubCLI
|
|
18
18
|
'reference' => 'ref',
|
19
19
|
'is' => :issue,
|
20
20
|
'--version' => 'version',
|
21
|
+
'-V' => 'version',
|
21
22
|
'ls' => 'list'
|
22
23
|
}
|
23
24
|
|
24
25
|
map ALIASES
|
25
26
|
|
26
27
|
class_option :config, :type => :string,
|
27
|
-
:desc => "Configuration file.", :banner => "
|
28
|
+
:desc => "Configuration file.", :banner => "<filename>",
|
28
29
|
:default => ".githubrc"
|
29
|
-
class_option :
|
30
|
+
class_option :token, :type => :string,
|
30
31
|
:desc => 'Authentication token.',
|
31
|
-
:banner => '
|
32
|
+
:banner => '<oauth token>'
|
32
33
|
class_option "no-color", :type => :boolean,
|
33
34
|
:desc => "Disable colorization in output."
|
34
35
|
class_option "no-pager", :type => :boolean,
|
35
36
|
:desc => "Disable pagination of the output."
|
36
37
|
class_option :pager, :type => :string, :aliases => '-p',
|
37
|
-
:desc => "Command to be used for paging.
|
38
|
-
:banner => "less
|
38
|
+
:desc => "Command to be used for paging.",
|
39
|
+
:banner => "less|more|..."
|
39
40
|
class_option :verbose, :type => :boolean,
|
40
41
|
:desc => "Enable verbose output mode."
|
41
|
-
class_option :version, :type => :boolean,
|
42
|
+
class_option :version, :type => :boolean, :aliases => ['-V'],
|
42
43
|
:desc => "Show program version"
|
43
44
|
|
44
|
-
|
45
|
+
no_tasks do
|
46
|
+
def defaults
|
47
|
+
{
|
48
|
+
'auth.token' => nil,
|
49
|
+
'auth.basic' => nil,
|
50
|
+
'auth.login' => nil,
|
51
|
+
'auth.password' => nil,
|
52
|
+
'core.endpoint' => nil,
|
53
|
+
'core.editor' => 'vi',
|
54
|
+
'core.pager' => 'less',
|
55
|
+
'core.no-pager' => false,
|
56
|
+
'core.no-color' => false,
|
57
|
+
'core.format' => 'csv',
|
58
|
+
'core.auto' => false,
|
59
|
+
'core.aliases' => {}
|
60
|
+
}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
desc 'init [<filename>]', 'Generates a configuration file in your home directory'
|
45
65
|
long_desc <<-DESC
|
46
66
|
Initializes a configuration file where you can set default options for
|
47
|
-
interacting with GitHub API
|
48
|
-
|
49
|
-
|
67
|
+
interacting with GitHub API.\n
|
68
|
+
|
69
|
+
Both global and per-command options can be specified. These defaults
|
70
|
+
override the bult-in defaults and allow you to save typing commonly used
|
71
|
+
command line options.
|
50
72
|
DESC
|
51
73
|
method_option :force, :type => :boolean, :default => false, :aliases => "-f",
|
52
74
|
:banner => "Overwrite configuration file. "
|
75
|
+
method_option :global, :type => :boolean, :default => false,
|
76
|
+
:desc => 'Create global config file'
|
77
|
+
method_option :local, :type => :boolean, :default => false,
|
78
|
+
:desc => 'Create local config file'
|
53
79
|
def init(filename=nil)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
80
|
+
config_filename = (filename.nil? || filename =~ /^\//)? options[:config] : filename
|
81
|
+
|
82
|
+
if !options[:global] and !options[:local]
|
83
|
+
GithubCLI.ui.error 'Invalid scope given. Please use --local or --global.'
|
84
|
+
exit 1
|
58
85
|
end
|
59
86
|
|
60
|
-
|
87
|
+
GithubCLI.config.location = options[:local] ? 'local' : 'global'
|
88
|
+
|
61
89
|
if File.exists?(GithubCLI.config.path) && !options[:force]
|
62
90
|
GithubCLI.ui.error "Not overwritting existing config file #{GithubCLI.config.path}, use --force to override."
|
63
91
|
exit 1
|
64
92
|
end
|
65
93
|
|
66
94
|
oauth_token = ask "Please specify your GitHub Authentication Token (register on github.com to get it):"
|
67
|
-
GithubCLI.config.save({'
|
95
|
+
GithubCLI.config.save(defaults.merge({'auth.token' => oauth_token}))
|
68
96
|
GithubCLI.ui.confirm "Writing new configuration file to #{GithubCLI.config.path}"
|
69
97
|
end
|
70
98
|
|
99
|
+
desc 'config <name> [<value>]', 'Get and set GitHub configuration options'
|
100
|
+
long_desc <<-DESC
|
101
|
+
You can query/set options with this command. The name is actually a hash key
|
102
|
+
string that is a composite one, nested with dots. If only name is provided, a
|
103
|
+
value will be retrieved. If two parameters are given then value will be set
|
104
|
+
or updated depending whether it already exists or not.\n
|
105
|
+
|
106
|
+
There two types of config files, global and project specific. When modifying
|
107
|
+
options ensure that you modifying the correct config.
|
108
|
+
DESC
|
109
|
+
method_option :global, :type => :boolean, :default => false,
|
110
|
+
:desc => 'use global config file'
|
111
|
+
method_option :local, :type => :boolean, :default => false,
|
112
|
+
:desc => 'use local config file'
|
113
|
+
method_option :list, :type => :boolean, :default => false, :aliases => '-l',
|
114
|
+
:desc => 'list all'
|
115
|
+
method_option :edit, :type => :boolean, :default => false, :aliases => '-e',
|
116
|
+
:desc => 'opens an editor'
|
117
|
+
def config(*args)
|
118
|
+
name, value = args.shift, args.shift
|
119
|
+
|
120
|
+
GithubCLI.config.location = options[:local] ? 'local' : 'global'
|
121
|
+
|
122
|
+
if !options[:global] and !options[:local]
|
123
|
+
GithubCLI.ui.error 'Invalid scope given. Please use --local or --global.'
|
124
|
+
exit 1
|
125
|
+
elsif !File.exists?(GithubCLI.config.path)
|
126
|
+
GithubCLI.ui.error "#{GithubCLI.config.location} configuration file does not exist. Please use `#{GithubCLI.executable_name} init --#{GithubCLI.config.location}`"
|
127
|
+
exit 1
|
128
|
+
end
|
129
|
+
|
130
|
+
if options[:list]
|
131
|
+
Terminal.print_config(name) && return
|
132
|
+
elsif options[:edit]
|
133
|
+
editor = Editor.new GithubCLI.config.path
|
134
|
+
editor.open && return
|
135
|
+
end
|
136
|
+
|
137
|
+
if !name
|
138
|
+
Terminal.print_config && return
|
139
|
+
end
|
140
|
+
|
141
|
+
if !value
|
142
|
+
Terminal.line GithubCLI.config[name]
|
143
|
+
else
|
144
|
+
Terminal.line GithubCLI.config[name] = value
|
145
|
+
end
|
146
|
+
|
147
|
+
return
|
148
|
+
end
|
149
|
+
|
71
150
|
desc 'list <pattern>', 'List all available commands limited by pattern'
|
72
151
|
def list(pattern="")
|
73
152
|
pattern = /^#{pattern}.*$/i
|
@@ -76,7 +155,7 @@ module GithubCLI
|
|
76
155
|
|
77
156
|
desc 'version', 'Display Github CLI version.'
|
78
157
|
def version
|
79
|
-
|
158
|
+
GithubCLI.ui.info "#{GithubCLI.program_name} v#{GithubCLI::VERSION}"
|
80
159
|
end
|
81
160
|
|
82
161
|
end # CLI
|