git-forks 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/git-forks.rb +58 -15
  2. metadata +17 -1
data/lib/git-forks.rb CHANGED
@@ -1,9 +1,11 @@
1
+ # JSON is used to cache GitHub API response data.
2
+ require 'json'
3
+ # Launchy is used in 'browse' to open a browser.
4
+ require 'launchy'
1
5
  # Octokit is used to access GitHub's API.
2
6
  require 'octokit'
3
7
  # Time is used to parse time strings from git back into Time objects.
4
8
  require 'time'
5
- # JSON is used to cache GitHub API response data.
6
- require 'json'
7
9
 
8
10
  class GitForks
9
11
 
@@ -95,7 +97,7 @@ class GitForks
95
97
  puts l('Owner', 25) + l('Branches', 12) + 'Updated'
96
98
  puts l('------', 25) + l('--------', 12) + '-------'
97
99
  puts output.compact
98
- puts
100
+ puts '-' * 80
99
101
  end
100
102
  end
101
103
 
@@ -114,18 +116,57 @@ class GitForks
114
116
  def show
115
117
  owner = @args.shift
116
118
  option = @args.shift
117
- if f = fork(owner)
118
- puts '-' * 80
119
- puts "Owner : #{f['owner']['login']}"
120
- puts "Created : #{strftime(f['created_at'])}"
121
- puts "Updated : #{strftime(f['updated_at'])}"
122
- puts "Branches : #{f['branches'].size}"
123
- f['branches'].each do |b|
124
- puts " #{b['commit']['sha']} #{b['name']}"
119
+ if owner
120
+ if f = fork(owner)
121
+ puts '-' * 80
122
+ puts "Owner : #{f['owner']['login']}"
123
+ puts "Repo : #{@repo}"
124
+ puts "Created : #{strftime(f['created_at'])}"
125
+ puts "Updated : #{strftime(f['updated_at'])}"
126
+ puts "Branches : #{f['branches'].size}"
127
+ f['branches'].each do |b|
128
+ puts " #{b['commit']['sha']} #{b['name']}"
129
+ end
130
+ puts '-' * 80
131
+ else
132
+ puts "No such fork: '#{owner}/#{@repo}'. Maybe you need to run git-forks update?"
133
+ puts
134
+ list
135
+ end
136
+ else
137
+ puts "<owner> argument missing"
138
+ puts
139
+ usage
140
+ end
141
+ end
142
+
143
+ def browse
144
+ owner = @args.shift
145
+ if owner
146
+ owner, ref = owner.split(':')
147
+
148
+ if f = fork(owner)
149
+ url = f['html_url']
150
+
151
+ if ref
152
+ if ref.match(/[A-Za-z0-9]{40}/)
153
+ url << "/commits/#{ref}"
154
+ else
155
+ url << "/tree/#{ref}"
156
+ end
157
+ end
158
+
159
+ return Launchy.open(url)
160
+ elsif owner == "network"
161
+ else
162
+ puts "No such fork: '#{owner}/#{@repo}'. Maybe you need to run git-forks update?"
163
+ puts
164
+ list
125
165
  end
126
- puts
127
166
  else
128
- puts "No such fork: #{owner}/#{@repo}"
167
+ puts "<owner> argument missing"
168
+ puts
169
+ usage
129
170
  end
130
171
  end
131
172
 
@@ -135,9 +176,11 @@ class GitForks
135
176
  puts 'Get GitHub project forks information.'
136
177
  puts
137
178
  puts 'Available commands:'
138
- puts ' update Retrieve fork info from GitHub API v3.'
139
179
  puts ' list [--reverse] List all forks.'
140
180
  puts ' show <owner> Show details for a single fork.'
181
+ puts ' update Retrieve fork info from GitHub API v3.'
182
+ puts ' browse <owner>[:<ref>] Show fork in web browser.'
183
+ puts ' <ref> denotes a Git Tree or a Git Commit.'
141
184
  puts
142
185
  puts 'Git configurations:'
143
186
  puts ' github.forks.branchpattern Only grab branches matching this Ruby Regexp.'
@@ -213,7 +256,7 @@ class GitForks
213
256
 
214
257
  def help
215
258
  puts "No command: #{@command}"
216
- puts "Try: update, list, show"
259
+ puts "Try: browse, list, show, update"
217
260
  puts "or call with '-h' for usage information"
218
261
  end
219
262
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-forks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: launchy
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: octokit
32
48
  requirement: !ruby/object:Gem::Requirement