timetrap 1.9.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05ce9b29076154da0dee41fe4df8a38bffdedc7f
4
- data.tar.gz: d9617fc345497096984c88798645c64779e51f18
3
+ metadata.gz: 2f0cfbd1ca2273c6fbcaa8a48af329f8bb02e29b
4
+ data.tar.gz: 55d18f5690cfcfbf6f5379f244e323d5f2da4d80
5
5
  SHA512:
6
- metadata.gz: db1443b89c6cc00b5098f59aa1705c9e57796cde4d204cbafdb1423635bb09fd4f3c5ecce95470f8abd877d678a82de3d9ea99fd133f676632671db10b8aca71
7
- data.tar.gz: ea3431e082d78bcea28801c288e078d595bb4c99951fcab4f106f2ee756090acc65433e8f09d3133b98e2188e67d7f7c0e76fbdf0047a1f5dedec16479b83bfa
6
+ metadata.gz: 099d87442198a0dd457bf1ea35c6a2a7dd390b0b6c3935f63edfd6d5bb76d0adb605e82c46a454f1b5ff8e3bc36933c230267838050d2d311fac9a28ea776bfa
7
+ data.tar.gz: 4e18a20f8a8cdff882cf3a2b72f4e31f5adb8af5b5f2aed738f649e2a5190c0028cbff9a40649bedd6cfa15587524633fc7763d7e292a71fbdc85575a0226654
@@ -1,7 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.2
4
- - 1.9.3
5
- - 2.0.0
6
- - 2.1.5
7
- - 2.2.0
3
+ - 2.1.8
4
+ - 2.2.4
@@ -0,0 +1,25 @@
1
+ module Timetrap
2
+ module AutoSheets
3
+ #
4
+ # Check the current dir and all parent dirs for .timetrap-sheet
5
+ #
6
+ class NestedDotfiles
7
+ def check_sheet(dir)
8
+ dotfile = File.join(dir, '.timetrap-sheet')
9
+ File.read(dotfile).chomp if File.exist?(dotfile)
10
+ end
11
+
12
+ def sheet
13
+ dir = Dir.pwd
14
+ while true do
15
+ sheet = check_sheet dir
16
+ break if nil != sheet
17
+ new_dir = File.expand_path("..", dir)
18
+ break if new_dir == dir
19
+ dir = new_dir
20
+ end
21
+ return sheet
22
+ end
23
+ end
24
+ end
25
+ end
@@ -19,6 +19,7 @@ COMMAND is one of:
19
19
  usage: t archive [--start DATE] [--end DATE] [SHEET]
20
20
  -s, --start <date:qs> Include entries that start on this date or later
21
21
  -e, --end <date:qs> Include entries that start on this date or earlier
22
+ -g, --grep <regexp> Include entries where the note matches this regexp.
22
23
 
23
24
  * backend - Open an sqlite shell to the database.
24
25
  usage: t backend
@@ -54,6 +55,7 @@ COMMAND is one of:
54
55
  Documentation on defining custom formats can be
55
56
  found in the README included in this
56
57
  distribution.
58
+ -g, --grep <regexp> Include entries where the note matches this regexp.
57
59
 
58
60
  * edit - Alter an entry's note, start, or end time. Defaults to the active
59
61
  entry. Defaults to the last entry to be checked out of if no entry is active.
@@ -193,7 +195,7 @@ COMMAND is one of:
193
195
  def archive
194
196
  ee = selected_entries
195
197
  if ask_user "Archive #{ee.count} entries? "
196
- ee.all.each do |e|
198
+ ee.each do |e|
197
199
  next unless e.end
198
200
  e.update :sheet => "_#{e.sheet}"
199
201
  end
@@ -277,7 +279,7 @@ COMMAND is one of:
277
279
  entry
278
280
  when Timer.last_checkout
279
281
  last = Timer.last_checkout
280
- warn "Resuming last enrty you checked out of (#{last.note})"
282
+ warn "Resuming last entry you checked out of (#{last.note})"
281
283
  last
282
284
  end
283
285
 
@@ -334,7 +336,7 @@ COMMAND is one of:
334
336
  end
335
337
 
336
338
  def display
337
- entries = selected_entries.order(:start).all
339
+ entries = selected_entries
338
340
  if entries == []
339
341
  warn "No entries were selected to display."
340
342
  else
@@ -50,6 +50,11 @@ module Timetrap
50
50
  end
51
51
  ee = ee.filter('start >= ?', Date.parse(Timer.process_time(args['-s']).to_s)) if args['-s']
52
52
  ee = ee.filter('start <= ?', Date.parse(Timer.process_time(args['-e']).to_s) + 1) if args['-e']
53
+ ee = ee.order(:start)
54
+ if args['-g']
55
+ re = Regexp::new(args['-g'])
56
+ ee = ee.find_all{|e| re.match(e.note)}
57
+ end
53
58
  ee
54
59
  end
55
60
 
@@ -1,3 +1,3 @@
1
1
  module Timetrap
2
- VERSION = '1.9.0'
2
+ VERSION = '1.10.0'
3
3
  end
@@ -0,0 +1 @@
1
+ nested-sheet
File without changes
@@ -87,11 +87,26 @@ describe Timetrap do
87
87
 
88
88
  describe 'archive' do
89
89
  before do
90
+ 3.times do |i|
91
+ create_entry({:note => 'grep'})
92
+ end
90
93
  3.times do |i|
91
94
  create_entry
92
95
  end
93
96
  end
94
97
 
98
+ it "should only archive entries matched by the provided regex" do
99
+ $stdin.string = "yes\n"
100
+ invoke 'archive --grep [g][r][e][p]'
101
+ Timetrap::Entry.each do |e|
102
+ if e.note == 'grep'
103
+ e.sheet.should == '_default'
104
+ else
105
+ e.sheet.should == 'default'
106
+ end
107
+ end
108
+ end
109
+
95
110
  it "should put the entries in a hidden sheet" do
96
111
  $stdin.string = "yes\n"
97
112
  invoke 'archive'
@@ -277,6 +292,32 @@ describe Timetrap do
277
292
  end
278
293
  end
279
294
  end
295
+
296
+ describe "using nested_dotfiles auto_sheet" do
297
+ describe 'with a .timetrap-sheet in cwd' do
298
+ it 'should use sheet defined in dotfile' do
299
+ Dir.chdir('spec/dotfile') do
300
+ with_stubbed_config('auto_sheet' => 'nested_dotfiles')
301
+ Timetrap::Timer.current_sheet.should == 'dotfile-sheet'
302
+ end
303
+ end
304
+ it 'should use top-most sheet found in dir heirarchy' do
305
+ Dir.chdir('spec/dotfile/nested') do
306
+ with_stubbed_config('auto_sheet' => 'nested_dotfiles')
307
+ Timetrap::Timer.current_sheet.should == 'nested-sheet'
308
+ end
309
+ end
310
+ end
311
+
312
+ describe 'with no .timetrap-sheet in cwd' do
313
+ it 'should use sheet defined in ancestor\'s dotfile' do
314
+ Dir.chdir('spec/dotfile/nested/no-sheet') do
315
+ with_stubbed_config('auto_sheet' => 'nested_dotfiles')
316
+ Timetrap::Timer.current_sheet.should == 'nested-sheet'
317
+ end
318
+ end
319
+ end
320
+ end
280
321
  end
281
322
 
282
323
  describe "backend" do
@@ -332,6 +373,17 @@ Timesheet: SpecSheet
332
373
  Total 8:00:00
333
374
  OUTPUT
334
375
 
376
+ @desired_output_grepped = <<-OUTPUT
377
+ Timesheet: SpecSheet
378
+ Day Start End Duration Notes
379
+ Fri Oct 03, 2008 12:00:00 - 14:00:00 2:00:00 entry 1
380
+ 2:00:00
381
+ Sun Oct 05, 2008 16:00:00 - 18:00:00 2:00:00 entry 3
382
+ 2:00:00
383
+ -----------------------------------------------------------
384
+ Total 4:00:00
385
+ OUTPUT
386
+
335
387
  @desired_output_with_ids = <<-OUTPUT
336
388
  Timesheet: SpecSheet
337
389
  Id Day Start End Duration Notes
@@ -408,6 +460,12 @@ Grand Total 10:00:00
408
460
  $stdout.string.should include("entry 5")
409
461
  end
410
462
 
463
+ it "should only display entries that are matched by the provided regex" do
464
+ Timetrap::Timer.current_sheet = 'SpecSheet'
465
+ invoke 'display --grep [13]'
466
+ $stdout.string.should == @desired_output_grepped
467
+ end
468
+
411
469
  it "should display a timesheet with ids" do
412
470
  invoke 'display S --ids'
413
471
  $stdout.string.should == @desired_output_with_ids
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timetrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Goldstein
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-25 00:00:00.000000000 Z
11
+ date: 2016-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,6 +164,7 @@ files:
164
164
  - lib/timetrap.rb
165
165
  - lib/timetrap/auto_sheets.rb
166
166
  - lib/timetrap/auto_sheets/dotfiles.rb
167
+ - lib/timetrap/auto_sheets/nested_dotfiles.rb
167
168
  - lib/timetrap/auto_sheets/yaml_cwd.rb
168
169
  - lib/timetrap/cli.rb
169
170
  - lib/timetrap/config.rb
@@ -179,6 +180,8 @@ files:
179
180
  - lib/timetrap/timer.rb
180
181
  - lib/timetrap/version.rb
181
182
  - spec/dotfile/.timetrap-sheet
183
+ - spec/dotfile/nested/.timetrap-sheet
184
+ - spec/dotfile/nested/no-sheet/.gitkeep
182
185
  - spec/timetrap_spec.rb
183
186
  - timetrap.gemspec
184
187
  homepage: https://github.com/samg/timetrap
@@ -207,4 +210,6 @@ specification_version: 4
207
210
  summary: Command line time tracker
208
211
  test_files:
209
212
  - spec/dotfile/.timetrap-sheet
213
+ - spec/dotfile/nested/.timetrap-sheet
214
+ - spec/dotfile/nested/no-sheet/.gitkeep
210
215
  - spec/timetrap_spec.rb