todos_export 0.1.0 → 0.2.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 +7 -0
- data/README.md +2 -2
- data/lib/todos_export.rb +20 -0
- data/lib/todos_export/github_issues.rb +10 -5
- data/lib/todos_export/version.rb +1 -1
- data/spec/lib/todos_export/github_isses_spec.rb +8 -2
- data/spec/lib/todos_export_spec.rb +28 -4
- data/todos_export.gemspec +2 -0
- metadata +133 -126
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
|
-
#
|
1
|
+
# Todo's Export
|
2
2
|
|
3
3
|
Export comment TODO's, FIXME's and BUG's from your code.
|
4
4
|
|
5
|
-
[](https://travis-ci.org/rcaught/todos_export)
|
5
|
+
[](https://travis-ci.org/rcaught/todos_export)
|
6
6
|
[](https://gemnasium.com/rcaught/todos_export)
|
7
7
|
[](https://coveralls.io/r/rcaught/todos_export)
|
8
8
|
[](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) { @
|
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\
|
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(@
|
61
|
+
if create && @client.create_issue(@remote_repo,
|
57
62
|
ex[:content],
|
58
|
-
"#{ex[:content]}\n\
|
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")
|
data/lib/todos_export/version.rb
CHANGED
@@ -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('
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
19
|
-
|
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:
|
36
|
-
|
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:
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
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:
|
50
|
-
|
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:
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
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:
|
64
|
-
|
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:
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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:
|
78
|
-
|
79
|
-
|
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:
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
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:
|
92
|
-
|
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:
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
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:
|
106
|
-
|
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:
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
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:
|
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
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
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:
|
185
|
+
rubygems_version: 2.0.3
|
179
186
|
signing_key:
|
180
|
-
specification_version:
|
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
|