reponaut 1.2.0 → 2.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e5b333973b1cadd089780a6ea4bd5984d4012b4d
4
- data.tar.gz: dbb6f53a2e5b1b8abb304f2a327339e41c8595a6
3
+ metadata.gz: 985b9da1a543fc796c3ce12f0905e43cf20abb43
4
+ data.tar.gz: 7655ae1f153449137992b2a03f8be9fdcb9cbc77
5
5
  SHA512:
6
- metadata.gz: b989b86496d509c117584388b061cd98d7b1dad3cf86bec1decca1e98c8a859fb0a4741c9f1077cf226b1e6de64c0dc3956190fdcfc5a54d3b02568bd9221907
7
- data.tar.gz: 67d156104e115908c492d9c03e2e991d84618a1b59ffdf97aba50cd1506da74b0e8016fd89b1e19e43c2f82da12f8262a77edf0b6f05b371ace5d7c68a6eb4b8
6
+ metadata.gz: 9bc1b74370e8d307a6e297745b3ccc7c983edf91823144c38a5b34a1fe0cd2783fe4ec40843570ba822e6b08c3fe172d27e268294751581f4ab65aea01d54424
7
+ data.tar.gz: 1edef2e6384a54b7c907ec4e6d0c62e6b9bda58690baf7a5a237c0a042bbe98c38ad690018e56486f8f0f2207c14954f5a6dd5d8f4479748129e6dc73625f2f8
data/bin/reponaut CHANGED
@@ -1,4 +1,22 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'mercenary'
3
4
  require 'reponaut'
4
- Reponaut::Application.run
5
+ require 'reponaut/ext/mercenary'
6
+
7
+ Mercenary.program(:reponaut) do |p|
8
+ p.version Reponaut::VERSION
9
+ p.description 'Explore GitHub users'
10
+ p.syntax 'reponaut <command> [options] <args>'
11
+
12
+ Reponaut::Application::Command.subclasses.each { |c| c.new(p) }
13
+
14
+ p.action do |args, options|
15
+ if args.empty?
16
+ puts p
17
+ exit 0
18
+ else
19
+ abort "Invalid command: #{args.first}"
20
+ end
21
+ end
22
+ end
@@ -6,7 +6,7 @@ Feature: Count repositories by language
6
6
 
7
7
  Scenario: List repository counts sorted by language
8
8
  Given the GitHub service returns repository data for the user "mdippery"
9
- When I run `reponaut mdippery`
9
+ When I run `reponaut count mdippery`
10
10
  Then it should pass with:
11
11
  """
12
12
  C 1
@@ -23,24 +23,7 @@ Feature: Count repositories by language
23
23
 
24
24
  Scenario: List repository counts sorted by language count
25
25
  Given the GitHub service returns repository data for the user "mdippery"
26
- When I run `reponaut -c mdippery`
27
- Then it should pass with:
28
- """
29
- Objective-C 5
30
- Python 4
31
- Clojure 3
32
- Ruby 3
33
- VimL 3
34
- Java 2
35
- C 1
36
- Erlang 1
37
- JavaScript 1
38
- Perl 1
39
- """
40
-
41
- Scenario: List repository counts sorted by language count using long option
42
- Given the GitHub service returns repository data for the user "mdippery"
43
- When I run `reponaut --count mdippery`
26
+ When I run `reponaut count -n mdippery`
44
27
  Then it should pass with:
45
28
  """
46
29
  Objective-C 5
@@ -57,7 +40,7 @@ Feature: Count repositories by language
57
40
 
58
41
  Scenario: List repository counts for source repositories ordered by language
59
42
  Given the GitHub service returns repository data for the user "mdippery"
60
- When I run `reponaut -f mdippery`
43
+ When I run `reponaut count -f mdippery`
61
44
  Then it should pass with:
62
45
  """
63
46
  C 1
@@ -74,7 +57,7 @@ Feature: Count repositories by language
74
57
 
75
58
  Scenario: List repository counts for source repositories ordered by language using long option
76
59
  Given the GitHub service returns repository data for the user "mdippery"
77
- When I run `reponaut --ignore-forks mdippery`
60
+ When I run `reponaut count --ignore-forks mdippery`
78
61
  Then it should pass with:
79
62
  """
80
63
  C 1
@@ -91,7 +74,7 @@ Feature: Count repositories by language
91
74
 
92
75
  Scenario: List repository counts for source repositories ordered by count
93
76
  Given the GitHub service returns repository data for the user "mdippery"
94
- When I run `reponaut -f -c mdippery`
77
+ When I run `reponaut count -f -n mdippery`
95
78
  Then it should pass with:
96
79
  """
97
80
  Objective-C 5
@@ -108,7 +91,7 @@ Feature: Count repositories by language
108
91
 
109
92
  Scenario: List repository counts for users with over 10 repositories
110
93
  Given the GitHub service returns repository data for the user "testuser1"
111
- When I run `reponaut testuser1`
94
+ When I run `reponaut count testuser1`
112
95
  Then it should pass with:
113
96
  """
114
97
  HTML 1
@@ -121,7 +104,7 @@ Feature: Count repositories by language
121
104
 
122
105
  Scenario: List repository counts for a non-existent user
123
106
  Given the GitHub service returns 404 for the user "nosuchuser"
124
- When I run `reponaut nosuchuser`
107
+ When I run `reponaut count nosuchuser`
125
108
  Then the exit status should not be 0
126
109
  And the stderr should contain:
127
110
  """
@@ -130,9 +113,18 @@ Feature: Count repositories by language
130
113
 
131
114
  Scenario: List repository counts for a user with no repositories
132
115
  Given the GitHub service returns repository data for the user "emptyuser"
133
- When I run `reponaut emptyuser`
116
+ When I run `reponaut count emptyuser`
134
117
  Then the exit status should not be 0
135
118
  And the stderr should contain:
136
119
  """
137
120
  emptyuser has no repositories
138
121
  """
122
+
123
+ Scenario: List repository counts when GitHub has limited the requests
124
+ Given the GitHub service is rate limiting requests for the user "mdippery"
125
+ When I run `reponaut count mdippery`
126
+ Then the exit status should not be 0
127
+ And stderr should contain:
128
+ """
129
+ GitHub rate limit exceeded. Try your request again later.
130
+ """
@@ -8,34 +8,44 @@ Feature: Get help
8
8
  When I run `reponaut -h`
9
9
  Then it should pass with:
10
10
  """
11
- Usage: reponaut [OPTIONS] USERNAME [LANGUAGE]
11
+ Usage:
12
+
13
+ reponaut <command> [options] <args>
12
14
 
13
15
  Options:
14
- -c, --count Sort by repo count
15
- -f, --ignore-forks Ignore forked repos
16
- -h, --help
17
- --version
16
+ -h, --help Show this message
17
+ -v, --version Print the name and version
18
+ -t, --trace Show the full backtrace when an error occurs
19
+
20
+ Subcommands:
21
+ count Shows a breakdown of a user's total number of repos
22
+ list, ls List a user's repos
18
23
  """
19
24
 
20
25
  Scenario: List usage details with long option
21
26
  When I run `reponaut --help`
22
27
  Then it should pass with:
23
28
  """
24
- Usage: reponaut [OPTIONS] USERNAME [LANGUAGE]
29
+ Usage:
30
+
31
+ reponaut <command> [options] <args>
25
32
 
26
33
  Options:
27
- -c, --count Sort by repo count
28
- -f, --ignore-forks Ignore forked repos
29
- -h, --help
30
- --version
34
+ -h, --help Show this message
35
+ -v, --version Print the name and version
36
+ -t, --trace Show the full backtrace when an error occurs
37
+
38
+ Subcommands:
39
+ count Shows a breakdown of a user's total number of repos
40
+ list, ls List a user's repos
31
41
  """
32
42
 
33
43
  Scenario: Get version
34
44
  When I run `reponaut --version`
35
45
  Then the exit status should be 0
36
- And the stdout should contain:
46
+ And the output should match:
37
47
  """
38
- reponaut, version
48
+ reponaut [0-9]+\.[0-9]+\.[0-9]+(\.[a-z]+)?
39
49
  """
40
50
 
41
51
  Scenario: Specify an invalid option
@@ -43,20 +53,25 @@ Feature: Get help
43
53
  Then the exit status should not be 0
44
54
  And the stderr should contain:
45
55
  """
46
- unknown option `-b'
47
- Run `reponaut --help` for help information
56
+ Whoops, we can't understand your command.
57
+ invalid option: -b
58
+ Run your command again with the --help switch to see available options.
48
59
  """
49
60
 
50
61
  Scenario: Specify no options
51
62
  When I run `reponaut`
52
- Then the exit status should not be 0
53
- And the stderr should contain:
63
+ Then it should pass with:
54
64
  """
55
- Usage: reponaut [OPTIONS] USERNAME [LANGUAGE]
65
+ Usage:
66
+
67
+ reponaut <command> [options] <args>
56
68
 
57
69
  Options:
58
- -c, --count Sort by repo count
59
- -f, --ignore-forks Ignore forked repos
60
- -h, --help
61
- --version
70
+ -h, --help Show this message
71
+ -v, --version Print the name and version
72
+ -t, --trace Show the full backtrace when an error occurs
73
+
74
+ Subcommands:
75
+ count Shows a breakdown of a user's total number of repos
76
+ list, ls List a user's repos
62
77
  """
@@ -4,9 +4,211 @@ Feature: List repos for a given language
4
4
  I want to see what projects another user has created in a given language
5
5
  In order to see what software they've written
6
6
 
7
+ Scenario: List all repositories
8
+ Given the GitHub service returns repository data for the user "mdippery"
9
+ When I run `reponaut ls mdippery`
10
+ Then it should pass with:
11
+ """
12
+ 3ddv
13
+ blackout
14
+ bucknellbug
15
+ chameleon
16
+ collections
17
+ dnsimple-python -> tbunnyman/dnsimple-python
18
+ dotfiles
19
+ glitz
20
+ homebrew-self
21
+ karmanaut
22
+ libtar
23
+ nginx.vim -> vim-scripts/nginx.vim
24
+ rack-pesticide
25
+ rainyday
26
+ reponaut
27
+ Smyck-Color-Scheme -> hukl/Smyck-Color-Scheme
28
+ snodes
29
+ squash
30
+ stackim
31
+ staticgenerator -> mrj0/staticgenerator
32
+ usaidwat
33
+ vimfiles
34
+ whitman
35
+ zanegort
36
+ """
37
+
38
+ Scenario: List all repositories without forks
39
+ Given the GitHub service returns repository data for the user "mdippery"
40
+ When I run `reponaut ls -f mdippery`
41
+ Then it should pass with:
42
+ """
43
+ 3ddv
44
+ blackout
45
+ bucknellbug
46
+ chameleon
47
+ collections
48
+ dotfiles
49
+ glitz
50
+ homebrew-self
51
+ karmanaut
52
+ libtar
53
+ rack-pesticide
54
+ rainyday
55
+ reponaut
56
+ snodes
57
+ squash
58
+ stackim
59
+ usaidwat
60
+ vimfiles
61
+ whitman
62
+ zanegort
63
+ """
64
+
65
+ Scenario: Describe all repositories
66
+ Given the GitHub service returns repository data for the user "mdippery"
67
+ When I run `reponaut ls -d mdippery`
68
+ Then it should pass with:
69
+ """
70
+ 3ddv
71
+ NEES 3D Data Viewer from the Center for Earthquake Engineering Simulation at RPI
72
+
73
+ blackout
74
+ Activate your Mac OS X screen saver with a simple keystroke
75
+
76
+ bucknellbug
77
+ Mac OS X weather widget that pulls info from Bucknell University's weather station
78
+
79
+ chameleon
80
+ Samples Stack Overflow user reputation scores
81
+
82
+ collections
83
+ Bringing Smalltalk and Ruby collections methods to Objective-C since 2011
84
+
85
+ dnsimple-python -> tbunnyman/dnsimple-python
86
+ Python client for DNSimple domain registration and DNS hosting
87
+
88
+ dotfiles
89
+ My configuration files
90
+
91
+ glitz
92
+ Track and manage your Sparkle-enabled software with a Django webapp
93
+
94
+ homebrew-self
95
+ My own Homebrew formulæ that aren't suitable for inclusion in the main Homebrew repo
96
+
97
+ karmanaut
98
+ Samples Reddit users' link and comment karma scores
99
+
100
+ libtar
101
+ A tarfile handling library for C and Objective-C
102
+
103
+ nginx.vim -> vim-scripts/nginx.vim
104
+ Ease editing of nginx conf files in Vim
105
+
106
+ rack-pesticide
107
+ Block annoying HTTP referrers
108
+
109
+ rainyday
110
+ Mac OS X screen saver that wraps Marek Brodziak's rainyday.js code
111
+
112
+ reponaut
113
+ Exploring the depths of GitHub
114
+
115
+ Smyck-Color-Scheme -> hukl/Smyck-Color-Scheme
116
+ Color Scheme for Terminal.app, iTerm2, Vim, MacVim, Sublime Text2 and Textmate
117
+
118
+ snodes
119
+ A distributed, encrypted file sharing network
120
+
121
+ squash
122
+ Minify your JavaScript, CSS, SASS, and LESS files—automagically!
123
+
124
+ stackim
125
+ URL shortener for Stack Overflow profiles
126
+
127
+ staticgenerator -> mrj0/staticgenerator
128
+ StaticGenerator for Django
129
+
130
+ usaidwat
131
+ Answers the age-old question, "Where does a Redditor comment the most?"
132
+
133
+ vimfiles
134
+ My Vim configuration
135
+
136
+ whitman
137
+ Sample data from JSON web APIs
138
+
139
+ zanegort
140
+ An IRC bot
141
+ """
142
+
143
+ Scenario: Describe all repositories without forks
144
+ Given the GitHub service returns repository data for the user "mdippery"
145
+ When I run `reponaut ls -fd mdippery`
146
+ Then it should pass with:
147
+ """
148
+ 3ddv
149
+ NEES 3D Data Viewer from the Center for Earthquake Engineering Simulation at RPI
150
+
151
+ blackout
152
+ Activate your Mac OS X screen saver with a simple keystroke
153
+
154
+ bucknellbug
155
+ Mac OS X weather widget that pulls info from Bucknell University's weather station
156
+
157
+ chameleon
158
+ Samples Stack Overflow user reputation scores
159
+
160
+ collections
161
+ Bringing Smalltalk and Ruby collections methods to Objective-C since 2011
162
+
163
+ dotfiles
164
+ My configuration files
165
+
166
+ glitz
167
+ Track and manage your Sparkle-enabled software with a Django webapp
168
+
169
+ homebrew-self
170
+ My own Homebrew formulæ that aren't suitable for inclusion in the main Homebrew repo
171
+
172
+ karmanaut
173
+ Samples Reddit users' link and comment karma scores
174
+
175
+ libtar
176
+ A tarfile handling library for C and Objective-C
177
+
178
+ rack-pesticide
179
+ Block annoying HTTP referrers
180
+
181
+ rainyday
182
+ Mac OS X screen saver that wraps Marek Brodziak's rainyday.js code
183
+
184
+ reponaut
185
+ Exploring the depths of GitHub
186
+
187
+ snodes
188
+ A distributed, encrypted file sharing network
189
+
190
+ squash
191
+ Minify your JavaScript, CSS, SASS, and LESS files—automagically!
192
+
193
+ stackim
194
+ URL shortener for Stack Overflow profiles
195
+
196
+ usaidwat
197
+ Answers the age-old question, "Where does a Redditor comment the most?"
198
+
199
+ vimfiles
200
+ My Vim configuration
201
+
202
+ whitman
203
+ Sample data from JSON web APIs
204
+
205
+ zanegort
206
+ An IRC bot
207
+ """
208
+
7
209
  Scenario: List repositories in a given language
8
210
  Given the GitHub service returns repository data for the user "mdippery"
9
- When I run `reponaut mdippery VimL`
211
+ When I run `reponaut ls mdippery VimL`
10
212
  Then it should pass with:
11
213
  """
12
214
  nginx.vim -> vim-scripts/nginx.vim
@@ -16,7 +218,7 @@ Feature: List repos for a given language
16
218
 
17
219
  Scenario: List repositories in a given language, ignoring case
18
220
  Given the GitHub service returns repository data for the user "mdippery"
19
- When I run `reponaut mdippery viml`
221
+ When I run `reponaut ls mdippery viml`
20
222
  Then it should pass with:
21
223
  """
22
224
  nginx.vim -> vim-scripts/nginx.vim
@@ -26,7 +228,7 @@ Feature: List repos for a given language
26
228
 
27
229
  Scenario: List repositories in a given language, excluding forks
28
230
  Given the GitHub service returns repository data for the user "mdippery"
29
- When I run `reponaut -f mdippery VimL`
231
+ When I run `reponaut ls -f mdippery VimL`
30
232
  Then it should pass with:
31
233
  """
32
234
  vimfiles
@@ -34,18 +236,18 @@ Feature: List repos for a given language
34
236
 
35
237
  Scenario: List repositories in a given language with no results
36
238
  Given the GitHub service returns repository data for the user "mdippery"
37
- When I run `reponaut mdippery C++`
239
+ When I run `reponaut ls mdippery C++`
38
240
  Then the exit status should not be 0
39
241
  And the output should contain:
40
242
  """
41
243
  mdippery has no repositories written in C++
42
244
  """
43
245
 
44
- Scenario: List repositories in a given language with counts
45
- Given the GitHub service returns repository data for the user "mdippery"
46
- When I run `reponaut -c mdippery ruby`
246
+ Scenario: List repositories for a given user when the API has been rate limited
247
+ Given the GitHub service is rate limiting requests for the user "mdippery"
248
+ When I run `reponaut ls mdippery python`
47
249
  Then the exit status should not be 0
48
250
  And stderr should contain:
49
251
  """
50
- Cannot pass -c when filtering by language
252
+ GitHub rate limit exceeded. Try your request again later.
51
253
  """