defunkt-github 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest CHANGED
@@ -1,13 +1,15 @@
1
+ LICENSE
2
+ Manifest
3
+ README
4
+ bin/gh
1
5
  bin/github
2
6
  commands/commands.rb
3
7
  commands/helpers.rb
4
- lib/github/extensions.rb
8
+ github-gem.gemspec
5
9
  lib/github/command.rb
10
+ lib/github/extensions.rb
6
11
  lib/github/helper.rb
7
12
  lib/github.rb
8
- LICENSE
9
- Manifest
10
- README
11
13
  spec/command_spec.rb
12
14
  spec/extensions_spec.rb
13
15
  spec/github_spec.rb
data/README CHANGED
@@ -22,7 +22,7 @@ Pulling Upstream Changes
22
22
 
23
23
  Let's say you just forked `github-gem` on GitHub from defunkt.
24
24
 
25
- $ git clone git://github.com/YOU/github-gem.git
25
+ $ github clone git://github.com/YOU/github-gem.git
26
26
  $ cd github-gem
27
27
  $ github pull defunkt
28
28
 
@@ -36,8 +36,8 @@ checkout master` and then `git merge defunkt/master` to merge defunkt's changes
36
36
  into your own master branch. In summary:
37
37
 
38
38
  $ github pull defunkt
39
- $ git checkout master
40
- $ git merge defunkt/master
39
+ $ github checkout master
40
+ $ github merge defunkt/master
41
41
 
42
42
  If you've already reviewed defunkt's changes and just want to merge them into your
43
43
  master branch, use the `merge` flag:
@@ -67,12 +67,12 @@ Your local 'mojombo/master' branch is now at the exact same place as mojombo's
67
67
  If mojombo's changes are good, you'll want to merge your 'master' (or another
68
68
  branch) into those changes so you can retest post-integration:
69
69
 
70
- $ git merge master
70
+ $ github merge master
71
71
 
72
72
  Test/analyze again and if everything is ok:
73
73
 
74
- $ git checkout master
75
- $ git merge mojombo/master
74
+ $ github checkout master
75
+ $ github merge mojombo/master
76
76
 
77
77
  The latter command will be a fast-forward merge since you already did the
78
78
  real merge previously.
@@ -111,12 +111,12 @@ which will show you something like this:
111
111
  These are all the commits that you don't have in your current branch that have been
112
112
  pushed to other forks of your project. If you want to incorporate them, you can use:
113
113
 
114
- $ git cherry-pick ee013a
114
+ $ github cherry-pick ee013a
115
115
 
116
116
  for example to apply that single patch to your branch. You can also merge a branch,
117
117
  if you want all the changes introduced in another branch:
118
118
 
119
- $ git merge jchris/gist
119
+ $ github merge jchris/gist
120
120
 
121
121
  The next time you run the 'github network commits' command, you won't see any of the
122
122
  patches you have cherry-picked or merged (or rebased). If you want to ignore a
data/bin/gh ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../lib/github'
4
+
5
+ GitHub.activate ARGV
data/commands/commands.rb CHANGED
@@ -39,13 +39,13 @@ command :network do |command, user|
39
39
  when 'web'
40
40
  helper.open helper.network_page_for(user)
41
41
  when 'list'
42
- data = get_network_data(user, options)
42
+ data = helper.get_network_data(user, options)
43
43
  data['users'].each do |hsh|
44
44
  puts [ hsh['name'].ljust(20), hsh['heads'].map {|a| a['name']}.uniq.join(', ') ].join(' ')
45
45
  end
46
46
  when 'fetch'
47
47
  # fetch each remote we don't have
48
- data = get_network_data(user, options)
48
+ data = helper.get_network_data(user, options)
49
49
  data['users'].each do |hsh|
50
50
  u = hsh['name']
51
51
  GitHub.invoke(:track, u) unless helper.tracking?(u)
@@ -55,7 +55,7 @@ command :network do |command, user|
55
55
  when 'commits'
56
56
  # show commits we don't have yet
57
57
  ids = []
58
- data = get_network_data(user, options)
58
+ data = helper.get_network_data(user, options)
59
59
  data['users'].each do |hsh|
60
60
  u = hsh['name']
61
61
  user_ids = hsh['heads'].map { |a| a['id'] }
@@ -69,14 +69,14 @@ command :network do |command, user|
69
69
  ids += user_ids
70
70
  end
71
71
  ids.uniq!
72
-
72
+
73
73
  # check that we have all these shas locally
74
-
74
+
75
75
  local_heads = helper.local_heads
76
76
  local_heads_not = local_heads.map { |a| "^#{a}"}
77
77
  looking_for = (ids - local_heads) + local_heads_not
78
78
  commits = helper.get_commits(looking_for)
79
-
79
+
80
80
  cherry = []
81
81
  ids.each do |id|
82
82
  cherry += helper.get_cherry(id)
@@ -143,9 +143,9 @@ command :fetch do |user, branch|
143
143
  user, branch = user.split("/", 2) if branch.nil?
144
144
  branch ||= 'master'
145
145
  GitHub.invoke(:track, user) unless helper.tracking?(user)
146
-
146
+
147
147
  git "fetch #{user} #{branch}:refs/remotes/#{user}/#{branch}"
148
- git_exec "checkout -b #{user}/#{branch} refs/remotes/#{user}/#{branch}"
148
+ git_exec "checkout -b #{user}/#{branch} refs/remotes/#{user}/#{branch}"
149
149
  end
150
150
 
151
151
  desc "Pull from a remote."
@@ -153,9 +153,14 @@ flags :merge => "Automatically merge remote's changes into your master."
153
153
  command :pull do |user, branch|
154
154
  die "Specify a user to pull from" if user.nil?
155
155
  user, branch = user.split("/", 2) if branch.nil?
156
+
157
+ if !helper.network_members.include?(user)
158
+ git_exec "#{helper.argv.join(' ')}".strip
159
+ end
160
+
156
161
  branch ||= 'master'
157
162
  GitHub.invoke(:track, user) unless helper.tracking?(user)
158
-
163
+
159
164
  if options[:merge]
160
165
  git_exec "pull #{user} #{branch}"
161
166
  else
@@ -169,16 +174,17 @@ desc "Clone a repo."
169
174
  flags :ssh => "Clone using the git@github.com style url."
170
175
  command :clone do |user, repo, dir|
171
176
  die "Specify a user to pull from" if user.nil?
172
- if user.include? ?/
177
+ if user.include?('/') && !user.include?('@') && !user.include?(':')
173
178
  die "Expected user/repo dir, given extra argument" if dir
174
179
  (user, repo), dir = [user.split('/', 2), repo]
175
180
  end
176
- die "Specify a repo to pull from" if repo.nil?
177
181
 
178
182
  if options[:ssh]
179
183
  git_exec "clone git@github.com:#{user}/#{repo}.git" + (dir ? " #{dir}" : "")
180
- else
184
+ elsif repo
181
185
  git_exec "clone git://github.com/#{user}/#{repo}.git" + (dir ? " #{dir}" : "")
186
+ else
187
+ git_exec "#{helper.argv.join(' ')}".strip
182
188
  end
183
189
  end
184
190
 
data/commands/helpers.rb CHANGED
@@ -53,7 +53,7 @@ helper :resolve_commits do |treeish|
53
53
  else
54
54
  # standard in
55
55
  puts 'reading from stdin...'
56
- commits = $stdin.read.split("\n")
56
+ commits = $stdin.read.split("\n")
57
57
  end
58
58
  commits.select { |a| a.size == 40 } # only the shas, not the ^SHAs
59
59
  end
@@ -94,7 +94,7 @@ end
94
94
  helper :print_commits do |cherries, commits, options|
95
95
  ignores = ignore_sha_array
96
96
  our_commits = cherries.map { |item| c = commits.assoc(item[1]); [item, c] if c }
97
-
97
+
98
98
  case options[:sort]
99
99
  when 'branch'
100
100
  our_commits.sort! { |a, b| a[0][2] <=> b[0][2] }
@@ -103,7 +103,7 @@ helper :print_commits do |cherries, commits, options|
103
103
  else
104
104
  our_commits.sort! { |a, b| Date.parse(a[1][4]) <=> Date.parse(b[1][4]) }
105
105
  end
106
-
106
+
107
107
  shown_commits = {}
108
108
  before = Date.parse(options[:before]) if options[:before] rescue puts 'cant parse before date'
109
109
  after = Date.parse(options[:after]) if options[:after] rescue puts 'cant parse after date'
@@ -114,14 +114,14 @@ helper :print_commits do |cherries, commits, options|
114
114
  ref_name = ref_name.gsub('remotes/', '')
115
115
  if status == '+' && commit
116
116
  next if options[:author] && !commit[1].match(Regexp.new(options[:author]))
117
- next if options[:before] && before && (before < Date.parse(commit[4]))
118
- next if options[:after] && after && (after > Date.parse(commit[4]))
117
+ next if options[:before] && before && (before < Date.parse(commit[4]))
118
+ next if options[:after] && after && (after > Date.parse(commit[4]))
119
119
  next if options[:applies] && !applies_cleanly(sha)
120
120
  if options[:shas]
121
121
  puts sha
122
122
  else
123
123
  common = options[:common] ? get_common(sha) : ''
124
- puts [sha[0,6], ref_name.ljust(25), commit[1][0,20].ljust(21),
124
+ puts [sha[0,6], ref_name.ljust(25), commit[1][0,20].ljust(21),
125
125
  commit[2][0, 36].ljust(38), commit[3], common].join(" ")
126
126
  end
127
127
  end
@@ -232,17 +232,17 @@ You have to provide a command :
232
232
 
233
233
  web [user] - opens your web browser to the network graph page for this
234
234
  project, or for the graph page for [user] if provided
235
-
235
+
236
236
  list - shows the projects in your network that have commits
237
- that you have not pulled in yet, and branch names
238
-
237
+ that you have not pulled in yet, and branch names
238
+
239
239
  fetch - adds all projects in your network as remotes and fetches
240
240
  any objects from them that you don't have yet
241
-
241
+
242
242
  commits - will show you a list of all commits in your network that
243
243
  you have not ignored or have not merged or cherry-picked.
244
244
  This will automatically fetch objects you don't have yet.
245
-
245
+
246
246
  --project (user/branch) - only show projects that match string
247
247
  --author (email) - only show projects that match string
248
248
  --after (date) - only show commits after date
@@ -268,3 +268,52 @@ applied or ignored yet (see 'github ignore'). Some things you might want to do:
268
268
  "
269
269
  end
270
270
 
271
+ helper :get_network_data do |user, options|
272
+ if options[:cache] && has_cache?
273
+ return get_cache
274
+ end
275
+
276
+ if cache_expired? || options[:nocache] || !has_cache?
277
+ return cache_data(user)
278
+ else
279
+ return get_cache
280
+ end
281
+ end
282
+
283
+ helper :network_members do
284
+ get_network_data(owner, {})['users'].map do |hash|
285
+ hash['name']
286
+ end
287
+ end
288
+
289
+ helper :network_cache_path do
290
+ dir = `git rev-parse --git-dir`.chomp
291
+ File.join(dir, 'network-cache')
292
+ end
293
+
294
+ helper :cache_data do |user|
295
+ raw_data = Kernel.open(network_meta_for(user)).read
296
+ File.open( network_cache_path, 'w' ) do |out|
297
+ out.write(raw_data)
298
+ end
299
+ data = JSON.parse(raw_data)
300
+ end
301
+
302
+ helper :cache_expired? do
303
+ return true if !has_cache?
304
+ age = Time.now - File.stat(network_cache_path).mtime
305
+ return true if age > (60 * 60) # 1 hour
306
+ false
307
+ end
308
+
309
+ helper :has_cache? do
310
+ File.file?(network_cache_path)
311
+ end
312
+
313
+ helper :get_cache do
314
+ JSON.parse(File.read(network_cache_path))
315
+ end
316
+
317
+ helper :argv do
318
+ GitHub.original_args
319
+ end
data/github-gem.gemspec CHANGED
@@ -1,17 +1,17 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{github}
3
- s.version = "0.2.1"
3
+ s.version = "0.3.0"
4
4
 
5
5
  s.specification_version = 2 if s.respond_to? :specification_version=
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Chris Wanstrath, Kevin Ballard, Scott Chacon"]
9
9
  s.date = %q{2008-05-18}
10
- s.default_executable = %q{github}
10
+ s.default_executable = %q{gh}
11
11
  s.description = %q{The official `github` command line helper for simplifying your GitHub experience.}
12
12
  s.email = %q{chris@ozmm.org}
13
- s.executables = ["github"]
14
- s.extra_rdoc_files = ["bin/github", "lib/github/extensions.rb", "lib/github/command.rb", "lib/github/helper.rb", "lib/github.rb", "LICENSE", "README"]
13
+ s.executables = ["github", "gh"]
14
+ s.extra_rdoc_files = ["bin/github", "bin/gh", "lib/github/extensions.rb", "lib/github/command.rb", "lib/github/helper.rb", "lib/github.rb", "LICENSE", "README"]
15
15
  s.files = ["bin/github", "commands/commands.rb", "commands/helpers.rb", "lib/github/extensions.rb", "lib/github/command.rb", "lib/github/helper.rb", "lib/github.rb", "LICENSE", "Manifest", "README", "spec/command_spec.rb", "spec/extensions_spec.rb", "spec/github_spec.rb", "spec/helper_spec.rb", "spec/spec_helper.rb", "spec/ui_spec.rb", "spec/windoze_spec.rb", "github-gem.gemspec"]
16
16
  s.has_rdoc = true
17
17
  s.homepage = %q{http://github.com/}
@@ -20,7 +20,7 @@ module GitHub
20
20
  args << nil while args.size < arity
21
21
  send :command, *args
22
22
  end
23
-
23
+
24
24
  def helper
25
25
  @helper ||= Helper.new
26
26
  end
@@ -47,45 +47,6 @@ module GitHub
47
47
  Shell.new(*command).run
48
48
  end
49
49
 
50
- def get_network_data(user, options)
51
- if options[:cache] && has_cache?
52
- return get_cache
53
- end
54
- if cache_expired? || options[:nocache] || !has_cache?
55
- return cache_data(user)
56
- else
57
- return get_cache
58
- end
59
- end
60
-
61
- def network_cache_path
62
- dir = `git rev-parse --git-dir`.chomp
63
- File.join(dir, 'network-cache')
64
- end
65
-
66
- def cache_data(user)
67
- raw_data = open(helper.network_meta_for(user)).read
68
- File.open( network_cache_path, 'w' ) do |out|
69
- out.write(raw_data)
70
- end
71
- data = JSON.parse(raw_data)
72
- end
73
-
74
- def cache_expired?
75
- return true if !has_cache?
76
- age = Time.now - File.stat(network_cache_path).mtime
77
- return true if age > (60 * 60) # 1 hour
78
- false
79
- end
80
-
81
- def has_cache?
82
- File.file?(network_cache_path)
83
- end
84
-
85
- def get_cache
86
- JSON.parse(File.read(network_cache_path))
87
- end
88
-
89
50
  def die(message)
90
51
  puts "=> #{message}"
91
52
  exit!
@@ -99,7 +60,7 @@ module GitHub
99
60
  def run
100
61
  GitHub.debug "sh: #{command}"
101
62
  _, out, err = Open3.popen3(*@command)
102
-
63
+
103
64
  out = out.read.strip
104
65
  err = err.read.strip
105
66
 
@@ -123,4 +84,14 @@ module GitHub
123
84
  end
124
85
  end
125
86
  end
87
+
88
+ class GitCommand < Command
89
+ def initialize(name)
90
+ @name = name
91
+ end
92
+
93
+ def command(*args)
94
+ git_exec *[ @name, args ]
95
+ end
96
+ end
126
97
  end
data/lib/github.rb CHANGED
@@ -13,7 +13,7 @@ require 'yaml'
13
13
  # $ github <command> <args>
14
14
  #
15
15
  # GitHub.command <command> do |*args|
16
- # whatever
16
+ # whatever
17
17
  # end
18
18
  #
19
19
  # We'll probably want to use the `choice` gem for concise, tasty DSL
@@ -49,6 +49,7 @@ module GitHub
49
49
  end
50
50
 
51
51
  def activate(args)
52
+ @@original_args = args.clone
52
53
  @options = parse_options(args)
53
54
  @debug = @options[:debug]
54
55
  load 'helpers.rb'
@@ -57,11 +58,16 @@ module GitHub
57
58
  end
58
59
 
59
60
  def invoke(command, *args)
60
- block = commands[command.to_s] || commands['default']
61
+ block = find_command(command)
61
62
  debug "Invoking `#{command}`"
62
63
  block.call(*args)
63
64
  end
64
65
 
66
+ def find_command(name)
67
+ name = name.to_s
68
+ commands[name] || GitCommand.new(name) || commands['default']
69
+ end
70
+
65
71
  def commands
66
72
  @commands ||= {}
67
73
  end
@@ -78,6 +84,10 @@ module GitHub
78
84
  @options
79
85
  end
80
86
 
87
+ def original_args
88
+ @@original_args ||= []
89
+ end
90
+
81
91
  def parse_options(args)
82
92
  idx = 0
83
93
  args.clone.inject({}) do |memo, arg|
@@ -128,3 +138,9 @@ GitHub.command :default do
128
138
  end
129
139
  puts
130
140
  end
141
+
142
+ GitHub.commands[''] = GitHub.commands['default']
143
+ GitHub.commands['-h'] = GitHub.commands['default']
144
+ GitHub.commands['--help'] = GitHub.commands['default']
145
+ GitHub.commands['-help'] = GitHub.commands['default']
146
+ GitHub.commands['help'] = GitHub.commands['default']
data/spec/ui_spec.rb CHANGED
@@ -167,6 +167,7 @@ EOF
167
167
 
168
168
  specify "pull defunkt should start tracking defunkt if they're not already tracked" do
169
169
  running :pull, "defunkt" do
170
+ mock_members 'defunkt'
170
171
  setup_remote(:origin, :user => "user", :ssh => true)
171
172
  setup_remote(:external, :url => "home:/path/to/project.git")
172
173
  GitHub.should_receive(:invoke).with(:track, "defunkt").and_return { raise "Tracked" }
@@ -176,6 +177,7 @@ EOF
176
177
 
177
178
  specify "pull defunkt should create defunkt/master and pull from the defunkt remote" do
178
179
  running :pull, "defunkt" do
180
+ mock_members 'defunkt'
179
181
  setup_remote(:defunkt)
180
182
  @command.should_receive(:git).with("checkout -b defunkt/master").ordered.and_return do
181
183
  mock("checkout -b defunkt/master").tap { |m| m.stub!(:error?) }
@@ -187,6 +189,7 @@ EOF
187
189
 
188
190
  specify "pull defunkt should switch to pre-existing defunkt/master and pull from the defunkt remote" do
189
191
  running :pull, "defunkt" do
192
+ mock_members 'defunkt'
190
193
  setup_remote(:defunkt)
191
194
  @command.should_receive(:git).with("checkout -b defunkt/master").ordered.and_return do
192
195
  mock("checkout -b defunkt/master").tap { |m| m.should_receive(:error?) { true } }
@@ -199,6 +202,7 @@ EOF
199
202
 
200
203
  specify "pull defunkt wip should create defunkt/wip and pull from wip branch on defunkt remote" do
201
204
  running :pull, "defunkt", "wip" do
205
+ mock_members 'defunkt'
202
206
  setup_remote(:defunkt)
203
207
  @command.should_receive(:git).with("checkout -b defunkt/wip").ordered.and_return do
204
208
  mock("checkout -b defunkt/wip").tap { |m| m.stub!(:error?) }
@@ -210,6 +214,7 @@ EOF
210
214
 
211
215
  specify "pull defunkt/wip should switch to pre-existing defunkt/wip and pull from wip branch on defunkt remote" do
212
216
  running :pull, "defunkt/wip" do
217
+ mock_members 'defunkt'
213
218
  setup_remote(:defunkt)
214
219
  @command.should_receive(:git).with("checkout -b defunkt/wip").ordered.and_return do
215
220
  mock("checkout -b defunkt/wip").tap { |m| m.should_receive(:error?) { true } }
@@ -222,11 +227,26 @@ EOF
222
227
 
223
228
  specify "pull --merge defunkt should pull from defunkt remote into current branch" do
224
229
  running :pull, "--merge", "defunkt" do
230
+ mock_members 'defunkt'
225
231
  setup_remote(:defunkt)
226
232
  @command.should_receive(:git_exec).with("pull defunkt master")
227
233
  end
228
234
  end
229
235
 
236
+ specify "pull falls through for non-recognized commands" do
237
+ running :pull, 'remote' do
238
+ mock_members 'defunkt'
239
+ @command.should_receive(:git_exec).with("pull remote")
240
+ end
241
+ end
242
+
243
+ specify "pull passes along args when falling through" do
244
+ running :pull, 'remote', '--stat' do
245
+ mock_members 'defunkt'
246
+ @command.should_receive(:git_exec).with("pull remote --stat")
247
+ end
248
+ end
249
+
230
250
  # -- clone --
231
251
  specify "clone should die with no args" do
232
252
  running :clone do
@@ -235,10 +255,9 @@ EOF
235
255
  end
236
256
  end
237
257
 
238
- specify "clone should die with just one arg" do
239
- running :clone, "user" do
240
- @command.should_receive(:die).with("Specify a repo to pull from").and_return { raise "Died" }
241
- self.should raise_error("Died")
258
+ specify "clone should fall through with just one arg" do
259
+ running :clone, "git://git.kernel.org/linux.git" do
260
+ @command.should_receive(:git_exec).with("clone git://git.kernel.org/linux.git")
242
261
  end
243
262
  end
244
263
 
@@ -248,6 +267,12 @@ EOF
248
267
  end
249
268
  end
250
269
 
270
+ specify "clone defunkt/github-gem should clone the repo" do
271
+ running :clone, "defunkt/github-gem" do
272
+ @command.should_receive(:git_exec).with("clone git://github.com/defunkt/github-gem.git")
273
+ end
274
+ end
275
+
251
276
  specify "clone --ssh defunkt github-gem should clone the repo using the private URL" do
252
277
  running :clone, "--ssh", "defunkt", "github-gem" do
253
278
  @command.should_receive(:git_exec).with("clone git@github.com:defunkt/github-gem.git")
@@ -260,6 +285,12 @@ EOF
260
285
  end
261
286
  end
262
287
 
288
+ specify "clone defunkt/github-gem repo should clone the repo into the dir 'repo'" do
289
+ running :clone, "defunkt/github-gem", "repo" do
290
+ @command.should_receive(:git_exec).with("clone git://github.com/defunkt/github-gem.git repo")
291
+ end
292
+ end
293
+
263
294
  specify "clone --ssh defunkt github-gem repo should clone the repo using the private URL into the dir 'repo'" do
264
295
  running :clone, "--ssh", "defunkt", "github-gem", "repo" do
265
296
  @command.should_receive(:git_exec).with("clone git@github.com:defunkt/github-gem.git repo")
@@ -318,6 +349,19 @@ EOF
318
349
  end
319
350
  end
320
351
 
352
+ # -- fallthrough --
353
+ specify "should fall through to actual git commands" do
354
+ running :commit do
355
+ @command.should_receive(:git_exec).with("commit")
356
+ end
357
+ end
358
+
359
+ specify "should pass along arguments when falling through" do
360
+ running :commit, '-a', '-m', 'yo mama' do
361
+ @command.should_receive(:git_exec).with("commit -a -m 'yo mama'")
362
+ end
363
+ end
364
+
321
365
  # -- default --
322
366
  specify "should print the default message" do
323
367
  running :default do
@@ -357,7 +401,7 @@ EOF
357
401
 
358
402
  def initialize(parent, cmd, *args, &block)
359
403
  @cmd_name = cmd.to_s
360
- @command = GitHub.commands[cmd.to_s]
404
+ @command = GitHub.find_command(cmd)
361
405
  @helper = @command.helper
362
406
  @args = args
363
407
  @block = block
@@ -409,6 +453,10 @@ EOF
409
453
  @helper.should_receive(:remotes).any_number_of_times.and_return(@remotes)
410
454
  end
411
455
 
456
+ def mock_members(members)
457
+ @helper.should_receive(:network_members).any_number_of_times.and_return(members)
458
+ end
459
+
412
460
  def should(result)
413
461
  @expected_result = [:should, result]
414
462
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: defunkt-github
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wanstrath, Kevin Ballard, Scott Chacon
@@ -10,17 +10,19 @@ bindir: bin
10
10
  cert_chain: []
11
11
 
12
12
  date: 2008-05-18 00:00:00 -07:00
13
- default_executable: github
13
+ default_executable: gh
14
14
  dependencies: []
15
15
 
16
16
  description: The official `github` command line helper for simplifying your GitHub experience.
17
17
  email: chris@ozmm.org
18
18
  executables:
19
19
  - github
20
+ - gh
20
21
  extensions: []
21
22
 
22
23
  extra_rdoc_files:
23
24
  - bin/github
25
+ - bin/gh
24
26
  - lib/github/extensions.rb
25
27
  - lib/github/command.rb
26
28
  - lib/github/helper.rb
@@ -46,6 +48,7 @@ files:
46
48
  - spec/ui_spec.rb
47
49
  - spec/windoze_spec.rb
48
50
  - github-gem.gemspec
51
+ - bin/gh
49
52
  has_rdoc: true
50
53
  homepage: http://github.com/
51
54
  post_install_message: