todos_export 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bf5fa8301c8d5d433196901d6deed5401ad3ce5d
4
+ data.tar.gz: 7cbf93f02c90142b61b06721c6d2ede7491e98c3
5
+ SHA512:
6
+ metadata.gz: 07216597538d032a5dd764e75e6e7beb76c339aa45fa86107050d4641abbae603c0e72191129f481b44be01fe771de63aec11f23c541bdf49302910849ebe1c7
7
+ data.tar.gz: a37068bf74c679dc3f5c24130e7f0a47e9737dd47ea8d82634f11247e3e70cc9bee9ad5fed1c90328263c0586254f5cc3ccabd6677190dd1d219d8ec4a483c76
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # TodosExport
1
+ # Todo's Export
2
2
 
3
3
  Export comment TODO's, FIXME's and BUG's from your code.
4
4
 
5
- [![Build Status](https://travis-ci.org/rcaught/todos_export.png)](https://travis-ci.org/rcaught/todos_export)
5
+ [![Build Status](https://travis-ci.org/rcaught/todos_export.png?branch=master)](https://travis-ci.org/rcaught/todos_export)
6
6
  [![Dependency Status](https://gemnasium.com/rcaught/todos_export.png)](https://gemnasium.com/rcaught/todos_export)
7
7
  [![Coverage Status](https://coveralls.io/repos/rcaught/todos_export/badge.png)](https://coveralls.io/r/rcaught/todos_export)
8
8
  [![Code Climate](https://codeclimate.com/github/rcaught/todos_export.png)](https://codeclimate.com/github/rcaught/todos_export)
data/lib/todos_export.rb CHANGED
@@ -2,6 +2,9 @@ require "todos_export/version"
2
2
  require 'todos_export/github_issues'
3
3
  require "highline/import"
4
4
  require 'octokit'
5
+ require 'rugged'
6
+ require 'awesome_print'
7
+
5
8
  HighLine.track_eof = false
6
9
 
7
10
  module TodosExport
@@ -48,6 +51,23 @@ module TodosExport
48
51
  end
49
52
  end
50
53
 
54
+ def git_directory?
55
+ begin
56
+ Rugged::Repository.new(self.target)
57
+ return true
58
+ rescue
59
+ return false
60
+ end
61
+ end
62
+
63
+ def git_head_sha
64
+ if git_directory?
65
+ Rugged::Repository.new(self.target).head.target
66
+ else
67
+ nil
68
+ end
69
+ end
70
+
51
71
  def exportable_todos
52
72
  self.exportables.select { |x| x[:type] == 'TODO' }
53
73
  end
@@ -1,6 +1,6 @@
1
1
  module TodosExport
2
2
  class GithubIssues
3
- attr_accessor :main
3
+ attr_accessor :main, :remote_repo
4
4
 
5
5
  def initialize(main)
6
6
  @main = main
@@ -38,24 +38,29 @@ module TodosExport
38
38
  menu.prompt = "Choose a repository to add issues to:"
39
39
 
40
40
  @client.repos.each do |repo|
41
- menu.choice(repo.full_name) { @repo = repo.full_name }
41
+ menu.choice(repo.full_name) { @remote_repo = repo.full_name }
42
42
  end
43
43
  end
44
44
  end
45
45
 
46
+ def github_line_url(file, line)
47
+ sha = self.main.git_head_sha || 'master'
48
+ "https://github.com/#{@remote_repo}/blob/#{sha}/#{file}#L#{line}"
49
+ end
50
+
46
51
  def process_exportables
47
52
  say("\n")
48
53
  self.main.exportables.each do |ex|
49
54
  say("Create a new Issue")
50
55
  say("==================")
51
56
  say("<%= color('Name:', :green) %>\n#{ex[:content]}")
52
- say("<%= color('Description:', :green) %>\n#{ex[:content]}\n\nhttps://github.com/#{@repo}/blob/master/#{ex[:file]}#L#{ex[:line]}")
57
+ say("<%= color('Description:', :green) %>\n#{ex[:content]}\n\n#{self.github_line_url(ex[:file], ex[:line])}")
53
58
  say("<%= color('Tags:', :green) %>\n'#{ex[:type].downcase}'")
54
59
  say("\n")
55
60
  create = agree("Create this issue? [y]es, [n]o")
56
- if create && @client.create_issue(@repo,
61
+ if create && @client.create_issue(@remote_repo,
57
62
  ex[:content],
58
- "#{ex[:content]}\n\nhttps://github.com/#{@repo}/blob/master/#{ex[:file]}#L#{ex[:line]}",
63
+ "#{ex[:content]}\n\n#{self.github_line_url(ex[:file], ex[:line])}",
59
64
  { :labels => ex[:type].downcase }
60
65
  )
61
66
  say("\n<%= color('Created!', :green) %>\n\n")
@@ -1,3 +1,3 @@
1
1
  module TodosExport
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -3,10 +3,16 @@ require 'todos_export/github_issues'
3
3
 
4
4
  describe TodosExport::GithubIssues do
5
5
  subject do
6
- main = TodosExport::Main.new('spec/resources')
6
+ main = TodosExport::Main.new('./')
7
7
  main.find_exportables
8
8
 
9
- TodosExport::GithubIssues.new(main)
9
+ s = TodosExport::GithubIssues.new(main)
10
+ s.remote_repo = 'my_repo'
11
+ s
10
12
  end
11
13
 
14
+ it '#github_line_url' do
15
+ match = Regexp.escape("https://github.com/my_repo/blob/") + "[0-9a-f]{5,40}" + Regexp.escape("/spec/resources/ruby_file_with_todos.rb#L2")
16
+ subject.github_line_url('spec/resources/ruby_file_with_todos.rb', 2).should =~ /#{match}/
17
+ end
12
18
  end
@@ -35,6 +35,15 @@ describe TodosExport::Main do
35
35
  end
36
36
  end
37
37
 
38
+ it '#git_directory?' do
39
+ TodosExport::Main.new('./').git_directory?.should be_true
40
+ TodosExport::Main.new(Dir.tmpdir).git_directory?.should be_false
41
+ end
42
+
43
+ it '#git_head_sha' do
44
+ TodosExport::Main.new('./').git_head_sha.should =~ /[0-9a-f]{5,40}/
45
+ end
46
+
38
47
  it '#delete_exportable' do
39
48
  copied_file = Tempfile.new('copy_of_ruby_file_with_todos.rb')
40
49
  copied_file.write(File.open('spec/resources/ruby_file_with_todos.rb', 'rb').read)
@@ -73,7 +82,7 @@ describe TodosExport::Main do
73
82
 
74
83
  it '#exportables' do
75
84
  subject.find_exportables
76
- subject.exportables.should == [
85
+ exportables = [
77
86
  {
78
87
  :type => "FIXME",
79
88
  :content => "This is a useless class, what we really need to do is sit down and eat some cheese",
@@ -155,11 +164,14 @@ describe TodosExport::Main do
155
164
  :line => 2
156
165
  }
157
166
  ]
167
+ exportables.each do |e|
168
+ subject.exportables.should include e
169
+ end
158
170
  end
159
171
 
160
172
  it '#exportable_todos' do
161
173
  subject.find_exportables
162
- subject.exportable_todos.should == [
174
+ exportable_todos = [
163
175
  {
164
176
  :type => "TODO",
165
177
  :content => "Find a kinder message",
@@ -209,11 +221,15 @@ describe TodosExport::Main do
209
221
  :line => 1
210
222
  }
211
223
  ]
224
+
225
+ exportable_todos.each do |e|
226
+ subject.exportable_todos.should include e
227
+ end
212
228
  end
213
229
 
214
230
  it '#exportable_fixmes' do
215
231
  subject.find_exportables
216
- subject.exportable_fixmes.should == [
232
+ exportable_fixmes = [
217
233
  {
218
234
  :type => "FIXME",
219
235
  :content => "This is a useless class, what we really need to do is sit down and eat some cheese",
@@ -231,11 +247,15 @@ describe TodosExport::Main do
231
247
  :line => 22
232
248
  }
233
249
  ]
250
+
251
+ exportable_fixmes.each do |e|
252
+ subject.exportable_fixmes.should include e
253
+ end
234
254
  end
235
255
 
236
256
  it '#exportable_bugs' do
237
257
  subject.find_exportables
238
- subject.exportable_bugs.should == [
258
+ exportable_bugs = [
239
259
  {
240
260
  :type => "BUG",
241
261
  :content => "This should be false",
@@ -253,5 +273,9 @@ describe TodosExport::Main do
253
273
  :line => 2
254
274
  }
255
275
  ]
276
+
277
+ exportable_bugs.each do |e|
278
+ subject.exportable_bugs.should include e
279
+ end
256
280
  end
257
281
  end
data/todos_export.gemspec CHANGED
@@ -22,8 +22,10 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec"
24
24
  spec.add_development_dependency "coveralls"
25
+ spec.add_development_dependency "awesome_print"
25
26
 
26
27
  spec.add_runtime_dependency "highline"
27
28
  spec.add_runtime_dependency "octokit"
28
29
  spec.add_runtime_dependency "json"
30
+ spec.add_runtime_dependency 'rugged'
29
31
  end
metadata CHANGED
@@ -1,132 +1,149 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: todos_export
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Ryan Caught
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2013-06-18 00:00:00 -04:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- type: :development
23
- prerelease: false
24
- version_requirements: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 9
30
- segments:
31
- - 1
32
- - 3
33
- version: "1.3"
11
+ date: 2013-06-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
34
14
  name: bundler
35
- requirement: *id001
36
- - !ruby/object:Gem::Dependency
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
37
20
  type: :development
38
21
  prerelease: false
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
48
28
  name: rake
49
- requirement: *id002
50
- - !ruby/object:Gem::Dependency
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
51
34
  type: :development
52
35
  prerelease: false
53
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
62
42
  name: rspec
63
- requirement: *id003
64
- - !ruby/object:Gem::Dependency
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
65
48
  type: :development
66
49
  prerelease: false
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
76
56
  name: coveralls
77
- requirement: *id004
78
- - !ruby/object:Gem::Dependency
79
- type: :runtime
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: awesome_print
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
80
77
  prerelease: false
81
- version_requirements: &id005 !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
- version: "0"
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
90
84
  name: highline
91
- requirement: *id005
92
- - !ruby/object:Gem::Dependency
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
93
90
  type: :runtime
94
91
  prerelease: false
95
- version_requirements: &id006 !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
104
98
  name: octokit
105
- requirement: *id006
106
- - !ruby/object:Gem::Dependency
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
107
104
  type: :runtime
108
105
  prerelease: false
109
- version_requirements: &id007 !ruby/object:Gem::Requirement
110
- none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
118
112
  name: json
119
- requirement: *id007
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rugged
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
120
139
  description: Export comment Todo's, Fixme's and Bug's from your code
121
- email:
140
+ email:
122
141
  - rcaught@gmail.com
123
- executables:
142
+ executables:
124
143
  - todos_export
125
144
  extensions: []
126
-
127
145
  extra_rdoc_files: []
128
-
129
- files:
146
+ files:
130
147
  - .gitignore
131
148
  - .rspec
132
149
  - Gemfile
@@ -145,41 +162,31 @@ files:
145
162
  - spec/resources/sub_directory/another_ruby_file_with_todos.rb
146
163
  - spec/spec_helper.rb
147
164
  - todos_export.gemspec
148
- has_rdoc: true
149
165
  homepage: https://github.com/rcaught/todos_export
150
- licenses:
166
+ licenses:
151
167
  - MIT
168
+ metadata: {}
152
169
  post_install_message:
153
170
  rdoc_options: []
154
-
155
- require_paths:
171
+ require_paths:
156
172
  - lib
157
- required_ruby_version: !ruby/object:Gem::Requirement
158
- none: false
159
- requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- hash: 3
163
- segments:
164
- - 0
165
- version: "0"
166
- required_rubygems_version: !ruby/object:Gem::Requirement
167
- none: false
168
- requirements:
169
- - - ">="
170
- - !ruby/object:Gem::Version
171
- hash: 3
172
- segments:
173
- - 0
174
- version: "0"
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - '>='
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
175
183
  requirements: []
176
-
177
184
  rubyforge_project:
178
- rubygems_version: 1.3.7
185
+ rubygems_version: 2.0.3
179
186
  signing_key:
180
- specification_version: 3
187
+ specification_version: 4
181
188
  summary: Export comment Todo's, Fixme's and Bug's from your code
182
- test_files:
189
+ test_files:
183
190
  - spec/lib/todos_export/github_isses_spec.rb
184
191
  - spec/lib/todos_export_spec.rb
185
192
  - spec/resources/python_file.py