redpomo-reloaded 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/Dockerfile +5 -0
  3. data/Gemfile +9 -0
  4. data/Gemfile.lock +139 -0
  5. data/Guardfile +23 -0
  6. data/LICENSE +22 -0
  7. data/README.md +176 -0
  8. data/Rakefile +6 -0
  9. data/bin/redpomo +7 -0
  10. data/docker-compose.yml +7 -0
  11. data/lib/redpomo.rb +10 -0
  12. data/lib/redpomo/cli.rb +172 -0
  13. data/lib/redpomo/config.rb +26 -0
  14. data/lib/redpomo/entries_printer.rb +33 -0
  15. data/lib/redpomo/entry.rb +65 -0
  16. data/lib/redpomo/file_cache.rb +44 -0
  17. data/lib/redpomo/fuzzy_converter.rb +68 -0
  18. data/lib/redpomo/issue.rb +38 -0
  19. data/lib/redpomo/null_cache.rb +9 -0
  20. data/lib/redpomo/numeric_ext.rb +30 -0
  21. data/lib/redpomo/task.rb +103 -0
  22. data/lib/redpomo/task_list.rb +61 -0
  23. data/lib/redpomo/templates/config.yml +47 -0
  24. data/lib/redpomo/templates/issue_stub.textile +7 -0
  25. data/lib/redpomo/tracker.rb +175 -0
  26. data/lib/redpomo/ui.rb +73 -0
  27. data/lib/redpomo/version.rb +3 -0
  28. data/redpomo.gemspec +33 -0
  29. data/spec/file_cache_spec.rb +22 -0
  30. data/spec/fixtures/add_results.txt +4 -0
  31. data/spec/fixtures/cassettes/cli_add.yml +102 -0
  32. data/spec/fixtures/cassettes/cli_close.yml +50 -0
  33. data/spec/fixtures/cassettes/cli_pull.yml +1222 -0
  34. data/spec/fixtures/cassettes/cli_push.yml +297 -0
  35. data/spec/fixtures/cassettes/close_issue.yml +50 -0
  36. data/spec/fixtures/cassettes/create_issue.yml +102 -0
  37. data/spec/fixtures/cassettes/issues.yml +449 -0
  38. data/spec/fixtures/cassettes/push_entry.yml +55 -0
  39. data/spec/fixtures/close_results.txt +2 -0
  40. data/spec/fixtures/config.yml +16 -0
  41. data/spec/fixtures/printer_output.txt +16 -0
  42. data/spec/fixtures/proper_timelog.csv +4 -0
  43. data/spec/fixtures/pull_results.txt +20 -0
  44. data/spec/fixtures/tasks.txt +3 -0
  45. data/spec/fixtures/timelog.csv +6 -0
  46. data/spec/integration/add_spec.rb +29 -0
  47. data/spec/integration/init_spec.rb +33 -0
  48. data/spec/lib/redpomo/cli_spec.rb +91 -0
  49. data/spec/lib/redpomo/entry_spec.rb +23 -0
  50. data/spec/lib/redpomo/fuzzy_converter_spec.rb +65 -0
  51. data/spec/lib/redpomo/task_spec.rb +39 -0
  52. data/spec/lib/redpomo/tracker_spec.rb +72 -0
  53. data/spec/spec_helper.rb +28 -0
  54. data/spec/support/cli_helpers.rb +76 -0
  55. data/spec/support/fixtures.rb +24 -0
  56. data/spec/support/ruby_ext.rb +20 -0
  57. data/spec/tmp/REDME.md +0 -0
  58. metadata +296 -0
@@ -0,0 +1,76 @@
1
+ require 'stringio'
2
+ require 'open3'
3
+
4
+ module Spec
5
+ module CLIHelpers
6
+
7
+ attr_reader :out, :err, :exitstatus
8
+
9
+ def capture(*streams)
10
+ streams.map! { |stream| stream.to_s }
11
+ begin
12
+ result = StringIO.new
13
+ streams.each { |stream| eval "$#{stream} = result" }
14
+ yield
15
+ ensure
16
+ streams.each { |stream| eval("$#{stream} = #{stream.upcase}") }
17
+ end
18
+ result.string
19
+ end
20
+
21
+ def cli_redpomo(cmd)
22
+ @out = capture(:stdout) do
23
+ cmd = cmd.kind_of?(Array) ? cmd : cmd.split
24
+ cmd += "--config #{config_path}".split
25
+ Redpomo::CLI.start(cmd)
26
+ end
27
+ end
28
+
29
+ def redpomo(cmd, options = {})
30
+ expect_err = options.delete(:expect_err)
31
+ exitstatus = options.delete(:exitstatus)
32
+ options["no-color"] = true unless options.key?("no-color")
33
+
34
+ redpomo_bin = File.expand_path('../../../bin/redpomo', __FILE__)
35
+
36
+ env = (options.delete(:env) || {}).map{|k,v| "#{k}='#{v}' "}.join
37
+ args = options.map do |k,v|
38
+ v == true ? " --#{k}" : " --#{k} #{v}" if v
39
+ end.join
40
+
41
+ cmd = "#{env}#{Gem.ruby} -I#{lib} #{redpomo_bin} #{cmd}#{args}"
42
+
43
+ if exitstatus
44
+ sys_status(cmd)
45
+ else
46
+ sys_exec(cmd, expect_err){|i| yield i if block_given? }
47
+ end
48
+ end
49
+
50
+ def sys_exec(cmd, expect_err = false)
51
+ Open3.popen3(cmd.to_s) do |stdin, stdout, stderr|
52
+ @in_p, @out_p, @err_p = stdin, stdout, stderr
53
+
54
+ yield @in_p if block_given?
55
+ @in_p.close
56
+
57
+ @out = @out_p.read_available_bytes.strip
58
+ @err = @err_p.read_available_bytes.strip
59
+ end
60
+
61
+ puts @err if !expect_err && @err.present?
62
+ @out
63
+ end
64
+
65
+ def sys_status(cmd)
66
+ @err = nil
67
+ @out = %x{#{cmd}}.strip
68
+ @exitstatus = $?.exitstatus
69
+ end
70
+
71
+ def lib
72
+ File.expand_path('../../../lib', __FILE__)
73
+ end
74
+
75
+ end
76
+ end
@@ -0,0 +1,24 @@
1
+ module Spec
2
+ module Fixtures
3
+
4
+ def tmp_path(name)
5
+ file = Tempfile.new(name)
6
+ path = file.path
7
+ file.unlink
8
+ path
9
+ end
10
+
11
+ def tmp(path)
12
+ File.expand_path("../../tmp/#{path}", __FILE__)
13
+ end
14
+
15
+ def fixture(path)
16
+ File.expand_path("../../fixtures/#{path}", __FILE__)
17
+ end
18
+
19
+ def read_fixture(path)
20
+ File.read fixture(path)
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ class IO
2
+ def read_available_bytes(chunk_size = 16384, select_timeout = 0.02)
3
+ buffer = []
4
+
5
+ return "" if closed? || eof?
6
+ # IO.select cannot be used here due to the fact that it
7
+ # just does not work on windows
8
+ while true
9
+ begin
10
+ IO.select([self], nil, nil, select_timeout)
11
+ break if eof? # stop raising :-(
12
+ buffer << self.readpartial(chunk_size)
13
+ rescue(EOFError)
14
+ break
15
+ end
16
+ end
17
+
18
+ buffer.join
19
+ end
20
+ end
data/spec/tmp/REDME.md ADDED
File without changes
metadata ADDED
@@ -0,0 +1,296 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redpomo-reloaded
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.13
5
+ platform: ruby
6
+ authors:
7
+ - Stefano Verna
8
+ - Yuri Freire
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-02-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: thor
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: todo-txt
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '0.11'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '0.11'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rest-client
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: launchy
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: applescript
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: terminal-table
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rspec
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: guard-rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: vcr
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: webmock
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: mocha
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: simplecov
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: rake
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ description: A nice little gem that integrates Redmine, Todo.txt and Pomodoro.app
211
+ email:
212
+ - yurifrl@outlook.com
213
+ executables: []
214
+ extensions: []
215
+ extra_rdoc_files: []
216
+ files:
217
+ - "./Dockerfile"
218
+ - "./Gemfile"
219
+ - "./Gemfile.lock"
220
+ - "./Guardfile"
221
+ - "./LICENSE"
222
+ - "./README.md"
223
+ - "./Rakefile"
224
+ - "./bin/redpomo"
225
+ - "./docker-compose.yml"
226
+ - "./lib/redpomo.rb"
227
+ - "./lib/redpomo/cli.rb"
228
+ - "./lib/redpomo/config.rb"
229
+ - "./lib/redpomo/entries_printer.rb"
230
+ - "./lib/redpomo/entry.rb"
231
+ - "./lib/redpomo/file_cache.rb"
232
+ - "./lib/redpomo/fuzzy_converter.rb"
233
+ - "./lib/redpomo/issue.rb"
234
+ - "./lib/redpomo/null_cache.rb"
235
+ - "./lib/redpomo/numeric_ext.rb"
236
+ - "./lib/redpomo/task.rb"
237
+ - "./lib/redpomo/task_list.rb"
238
+ - "./lib/redpomo/templates/config.yml"
239
+ - "./lib/redpomo/templates/issue_stub.textile"
240
+ - "./lib/redpomo/tracker.rb"
241
+ - "./lib/redpomo/ui.rb"
242
+ - "./lib/redpomo/version.rb"
243
+ - "./redpomo.gemspec"
244
+ - "./spec/file_cache_spec.rb"
245
+ - "./spec/fixtures/add_results.txt"
246
+ - "./spec/fixtures/cassettes/cli_add.yml"
247
+ - "./spec/fixtures/cassettes/cli_close.yml"
248
+ - "./spec/fixtures/cassettes/cli_pull.yml"
249
+ - "./spec/fixtures/cassettes/cli_push.yml"
250
+ - "./spec/fixtures/cassettes/close_issue.yml"
251
+ - "./spec/fixtures/cassettes/create_issue.yml"
252
+ - "./spec/fixtures/cassettes/issues.yml"
253
+ - "./spec/fixtures/cassettes/push_entry.yml"
254
+ - "./spec/fixtures/close_results.txt"
255
+ - "./spec/fixtures/config.yml"
256
+ - "./spec/fixtures/printer_output.txt"
257
+ - "./spec/fixtures/proper_timelog.csv"
258
+ - "./spec/fixtures/pull_results.txt"
259
+ - "./spec/fixtures/tasks.txt"
260
+ - "./spec/fixtures/timelog.csv"
261
+ - "./spec/integration/add_spec.rb"
262
+ - "./spec/integration/init_spec.rb"
263
+ - "./spec/lib/redpomo/cli_spec.rb"
264
+ - "./spec/lib/redpomo/entry_spec.rb"
265
+ - "./spec/lib/redpomo/fuzzy_converter_spec.rb"
266
+ - "./spec/lib/redpomo/task_spec.rb"
267
+ - "./spec/lib/redpomo/tracker_spec.rb"
268
+ - "./spec/spec_helper.rb"
269
+ - "./spec/support/cli_helpers.rb"
270
+ - "./spec/support/fixtures.rb"
271
+ - "./spec/support/ruby_ext.rb"
272
+ - "./spec/tmp/REDME.md"
273
+ homepage: ''
274
+ licenses: []
275
+ metadata: {}
276
+ post_install_message:
277
+ rdoc_options: []
278
+ require_paths:
279
+ - lib
280
+ required_ruby_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ required_rubygems_version: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: '0'
290
+ requirements: []
291
+ rubyforge_project:
292
+ rubygems_version: 2.6.10
293
+ signing_key:
294
+ specification_version: 4
295
+ summary: A nice little gem that integrates Redmine, Todo.txt and Pomodoro.app
296
+ test_files: []