github_cli 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +3 -3
- data/README.md +30 -0
- data/bin/ghc +13 -1
- data/features/repositories.feature +9 -0
- data/github_cli.gemspec +1 -1
- data/lib/github_cli.rb +2 -0
- data/lib/github_cli/api.rb +7 -2
- data/lib/github_cli/apis.rb +4 -0
- data/lib/github_cli/apis/authorization.rb +20 -10
- data/lib/github_cli/apis/blob.rb +8 -4
- data/lib/github_cli/apis/collaborator.rb +34 -0
- data/lib/github_cli/apis/commit.rb +8 -4
- data/lib/github_cli/apis/download.rb +20 -10
- data/lib/github_cli/apis/fork.rb +8 -4
- data/lib/github_cli/apis/gist.rb +70 -0
- data/lib/github_cli/apis/hook.rb +24 -12
- data/lib/github_cli/apis/issue.rb +40 -0
- data/lib/github_cli/apis/key.rb +20 -10
- data/lib/github_cli/apis/label.rb +40 -18
- data/lib/github_cli/apis/pull_request.rb +32 -16
- data/lib/github_cli/apis/reference.rb +20 -10
- data/lib/github_cli/apis/repository.rb +36 -19
- data/lib/github_cli/apis/tag.rb +8 -4
- data/lib/github_cli/apis/tree.rb +8 -4
- data/lib/github_cli/apis/watching.rb +20 -10
- data/lib/github_cli/command.rb +19 -0
- data/lib/github_cli/commands.rb +2 -0
- data/lib/github_cli/commands/authorizations.rb +5 -5
- data/lib/github_cli/commands/blobs.rb +2 -2
- data/lib/github_cli/commands/collaborators.rb +37 -0
- data/lib/github_cli/commands/commits.rb +2 -2
- data/lib/github_cli/commands/downloads.rb +5 -5
- data/lib/github_cli/commands/forks.rb +2 -2
- data/lib/github_cli/commands/gists.rb +103 -0
- data/lib/github_cli/commands/hooks.rb +6 -6
- data/lib/github_cli/commands/issues.rb +67 -18
- data/lib/github_cli/commands/keys.rb +5 -5
- data/lib/github_cli/commands/labels.rb +8 -8
- data/lib/github_cli/commands/pull_requests.rb +8 -8
- data/lib/github_cli/commands/references.rb +5 -5
- data/lib/github_cli/commands/repositories.rb +20 -20
- data/lib/github_cli/commands/tags.rb +2 -2
- data/lib/github_cli/commands/trees.rb +2 -2
- data/lib/github_cli/commands/watching.rb +5 -5
- data/lib/github_cli/errors.rb +33 -2
- data/lib/github_cli/formatters.rb +8 -0
- data/lib/github_cli/formatters/csv.rb +39 -0
- data/lib/github_cli/formatters/table.rb +36 -0
- data/lib/github_cli/subcommands.rb +6 -0
- data/lib/github_cli/terminal.rb +25 -0
- data/lib/github_cli/util.rb +35 -0
- data/lib/github_cli/version.rb +1 -1
- data/spec/github_cli/util_spec.rb +37 -0
- metadata +26 -13
@@ -0,0 +1,39 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module GithubCLI
|
4
|
+
module Formatters
|
5
|
+
class CSV
|
6
|
+
|
7
|
+
def initialize(response)
|
8
|
+
@response = response
|
9
|
+
end
|
10
|
+
|
11
|
+
def format
|
12
|
+
case @response
|
13
|
+
when Array
|
14
|
+
render_headers @response.first
|
15
|
+
@response.each_with_index do |item, indx|
|
16
|
+
render_line indx, item
|
17
|
+
$stdout.puts
|
18
|
+
end
|
19
|
+
else
|
20
|
+
render_headers @response
|
21
|
+
render_line 1, @response
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def render_headers(response)
|
26
|
+
output = {}
|
27
|
+
GithubCLI::Util.flatten_hash(response.to_hash, output)
|
28
|
+
puts "Index," + output.keys.join(',')
|
29
|
+
end
|
30
|
+
|
31
|
+
def render_line(index, item)
|
32
|
+
output = {}
|
33
|
+
GithubCLI::Util.flatten_hash(item.to_hash, output)
|
34
|
+
printf "%d,%s", index, output.values.join(',')
|
35
|
+
end
|
36
|
+
|
37
|
+
end # CSV
|
38
|
+
end # Formatters
|
39
|
+
end # GithubCLI
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module GithubCLI
|
4
|
+
module Formatters
|
5
|
+
class Table
|
6
|
+
|
7
|
+
def initialize(response)
|
8
|
+
@response = response
|
9
|
+
end
|
10
|
+
|
11
|
+
def format
|
12
|
+
case @response
|
13
|
+
when Array
|
14
|
+
@response.each do |item|
|
15
|
+
render_vertical item
|
16
|
+
$stdout.puts
|
17
|
+
end
|
18
|
+
else
|
19
|
+
render_vertical @response
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def render_vertical(item)
|
24
|
+
output = {}
|
25
|
+
GithubCLI::Util.flatten_hash(item.to_hash, output)
|
26
|
+
GithubCLI.ui.print_table(
|
27
|
+
output.keys.zip(GithubCLI::Util.convert_values(output.values))
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def render_horizontal
|
32
|
+
end
|
33
|
+
|
34
|
+
end # Table
|
35
|
+
end # Formatters
|
36
|
+
end # GithubCLI
|
@@ -9,6 +9,9 @@ module GithubCLI
|
|
9
9
|
desc "blob <command>", "Leverage Blobs API"
|
10
10
|
subcommand "blob", GithubCLI::Commands::Blobs
|
11
11
|
|
12
|
+
desc "collab <command>", "Leverage Collaborators API"
|
13
|
+
subcommand "collab", GithubCLI::Commands::Collaborators
|
14
|
+
|
12
15
|
desc "commit <command>", "Leverage Commits API"
|
13
16
|
subcommand "commit", GithubCLI::Commands::Commits
|
14
17
|
|
@@ -18,6 +21,9 @@ module GithubCLI
|
|
18
21
|
desc "fork <command>", "Leverage Forks API"
|
19
22
|
subcommand "fork", GithubCLI::Commands::Forks
|
20
23
|
|
24
|
+
desc "gist <command>", "Leverage Gists API"
|
25
|
+
subcommand "gist", GithubCLI::Commands::Gists
|
26
|
+
|
21
27
|
desc "hook <command>", "Leverage Hooks API"
|
22
28
|
subcommand "hook", GithubCLI::Commands::Hooks
|
23
29
|
|
data/lib/github_cli/terminal.rb
CHANGED
@@ -9,6 +9,31 @@ module GithubCLI
|
|
9
9
|
class << self
|
10
10
|
attr_accessor :size
|
11
11
|
|
12
|
+
def render_output(response, options={})
|
13
|
+
render_status response
|
14
|
+
case options[:format].to_s
|
15
|
+
when 'table'
|
16
|
+
formatter = Formatters::Table.new(response)
|
17
|
+
formatter.format
|
18
|
+
when 'csv'
|
19
|
+
formatter = Formatters::CSV.new(response)
|
20
|
+
formatter.format
|
21
|
+
when 'json'
|
22
|
+
'json output'
|
23
|
+
else
|
24
|
+
raise UnknownFormatError, options[:format]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Render status code
|
29
|
+
def render_status(response)
|
30
|
+
puts "Response Status: #{response.status}"
|
31
|
+
puts
|
32
|
+
end
|
33
|
+
|
34
|
+
def render_header
|
35
|
+
end
|
36
|
+
|
12
37
|
def print_commands(pattern=nil)
|
13
38
|
GithubCLI.ui.info "Commands:"
|
14
39
|
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module GithubCLI
|
2
|
+
module Util
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def flatten_hash(prefix=nil, hash, new_hash)
|
6
|
+
hash.each do |key, val|
|
7
|
+
key = prefix ? :"#{prefix}_#{key}" : key
|
8
|
+
case val
|
9
|
+
when Hash
|
10
|
+
flatten_hash(key, val, new_hash)
|
11
|
+
else
|
12
|
+
new_hash[key] = val
|
13
|
+
end
|
14
|
+
end
|
15
|
+
return new_hash
|
16
|
+
end
|
17
|
+
|
18
|
+
def convert_values(values)
|
19
|
+
values_copy = values.dup
|
20
|
+
collected = []
|
21
|
+
values_copy.inject([]) do |collected, val|
|
22
|
+
collected << case val
|
23
|
+
when true
|
24
|
+
"true"
|
25
|
+
when false
|
26
|
+
"false"
|
27
|
+
when Hash
|
28
|
+
self.convert_values(val.values)
|
29
|
+
else
|
30
|
+
val.to_s
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end # GithubCLI
|
data/lib/github_cli/version.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GithubCLI::Util do
|
4
|
+
describe '#flatten_has' do
|
5
|
+
let(:hash) { { :a => { :b => { :c => 1 }}} }
|
6
|
+
|
7
|
+
it 'preserves original hash' do
|
8
|
+
hash = { :a => 1, :b => 2 }
|
9
|
+
output = {}
|
10
|
+
subject.flatten_hash hash, output
|
11
|
+
output.should == hash
|
12
|
+
end
|
13
|
+
|
14
|
+
it "reduces multidimensional keys to one dimension" do
|
15
|
+
output = {}
|
16
|
+
subject.flatten_hash hash, output
|
17
|
+
output.should == { :a_b_c => 1 }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#convert_values' do
|
22
|
+
let(:values) { [true, {:a => false }, 'string']}
|
23
|
+
|
24
|
+
it "converts ruby boolean to string" do
|
25
|
+
subject.convert_values(values).should include "true"
|
26
|
+
subject.convert_values(values).should_not include true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "converts recursively" do
|
30
|
+
subject.convert_values(values).should include ['false']
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'preserves strings' do
|
34
|
+
subject.convert_values(values).should include 'string'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end # GithubCLI::Util
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-13 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: github_api
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153151980 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.5
|
21
|
+
version: '0.5'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153151980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thor
|
27
|
-
requirement: &
|
27
|
+
requirement: &2153151560 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153151560
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &2153151100 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2153151100
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: aruba
|
49
|
-
requirement: &
|
49
|
+
requirement: &2153150680 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2153150680
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &2153150260 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2153150260
|
69
69
|
description: CLI-based access to GitHub API v3
|
70
70
|
email:
|
71
71
|
- pmurach@gmail.com
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- Rakefile
|
87
87
|
- bin/ghc
|
88
88
|
- features/executable.feature
|
89
|
+
- features/repositories.feature
|
89
90
|
- features/search.feature
|
90
91
|
- features/settings.feature
|
91
92
|
- features/support/env.rb
|
@@ -98,10 +99,13 @@ files:
|
|
98
99
|
- lib/github_cli/apis.rb
|
99
100
|
- lib/github_cli/apis/authorization.rb
|
100
101
|
- lib/github_cli/apis/blob.rb
|
102
|
+
- lib/github_cli/apis/collaborator.rb
|
101
103
|
- lib/github_cli/apis/commit.rb
|
102
104
|
- lib/github_cli/apis/download.rb
|
103
105
|
- lib/github_cli/apis/fork.rb
|
106
|
+
- lib/github_cli/apis/gist.rb
|
104
107
|
- lib/github_cli/apis/hook.rb
|
108
|
+
- lib/github_cli/apis/issue.rb
|
105
109
|
- lib/github_cli/apis/key.rb
|
106
110
|
- lib/github_cli/apis/label.rb
|
107
111
|
- lib/github_cli/apis/pull_request.rb
|
@@ -115,9 +119,11 @@ files:
|
|
115
119
|
- lib/github_cli/commands.rb
|
116
120
|
- lib/github_cli/commands/authorizations.rb
|
117
121
|
- lib/github_cli/commands/blobs.rb
|
122
|
+
- lib/github_cli/commands/collaborators.rb
|
118
123
|
- lib/github_cli/commands/commits.rb
|
119
124
|
- lib/github_cli/commands/downloads.rb
|
120
125
|
- lib/github_cli/commands/forks.rb
|
126
|
+
- lib/github_cli/commands/gists.rb
|
121
127
|
- lib/github_cli/commands/hooks.rb
|
122
128
|
- lib/github_cli/commands/issues.rb
|
123
129
|
- lib/github_cli/commands/keys.rb
|
@@ -131,16 +137,21 @@ files:
|
|
131
137
|
- lib/github_cli/config.rb
|
132
138
|
- lib/github_cli/dsl.rb
|
133
139
|
- lib/github_cli/errors.rb
|
140
|
+
- lib/github_cli/formatters.rb
|
141
|
+
- lib/github_cli/formatters/csv.rb
|
142
|
+
- lib/github_cli/formatters/table.rb
|
134
143
|
- lib/github_cli/helpers.rb
|
135
144
|
- lib/github_cli/subcommands.rb
|
136
145
|
- lib/github_cli/terminal.rb
|
137
146
|
- lib/github_cli/ui.rb
|
147
|
+
- lib/github_cli/util.rb
|
138
148
|
- lib/github_cli/version.rb
|
139
149
|
- spec/github_cli/api_spec.rb
|
140
150
|
- spec/github_cli/cli_spec.rb
|
141
151
|
- spec/github_cli/command_spec.rb
|
142
152
|
- spec/github_cli/config_spec.rb
|
143
153
|
- spec/github_cli/helpers_spec.rb
|
154
|
+
- spec/github_cli/util_spec.rb
|
144
155
|
- spec/spec_helper.rb
|
145
156
|
homepage: http://github.com/peter-murach/github_cli
|
146
157
|
licenses: []
|
@@ -168,6 +179,7 @@ specification_version: 3
|
|
168
179
|
summary: CLI-based access to GitHub API v3
|
169
180
|
test_files:
|
170
181
|
- features/executable.feature
|
182
|
+
- features/repositories.feature
|
171
183
|
- features/search.feature
|
172
184
|
- features/settings.feature
|
173
185
|
- features/support/env.rb
|
@@ -177,4 +189,5 @@ test_files:
|
|
177
189
|
- spec/github_cli/command_spec.rb
|
178
190
|
- spec/github_cli/config_spec.rb
|
179
191
|
- spec/github_cli/helpers_spec.rb
|
192
|
+
- spec/github_cli/util_spec.rb
|
180
193
|
- spec/spec_helper.rb
|