timetrap 1.7.4 → 1.7.5

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.
data/Gemfile CHANGED
@@ -6,8 +6,13 @@ gem 'chronic', "~> 0.3.0"
6
6
  gem 'getopt-declare', ">= 1.28"
7
7
  gem 'json', "~>1.4.6"
8
8
  gem 'icalendar', "~>1.1.5"
9
+ gem 'rake'
9
10
 
10
11
  group :test do
11
12
  gem "rspec", "~>2"
12
13
  gem 'fakefs'
13
14
  end
15
+
16
+ group :development do
17
+ gem 'jeweler'
18
+ end
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'rake/rdoctask'
2
- require 'rake/gempackagetask'
2
+ require 'rubygems/package_task'
3
3
  require 'rspec/core/rake_task'
4
4
 
5
5
  desc 'Default: run specs.'
@@ -24,7 +24,6 @@ begin
24
24
 
25
25
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
26
26
  s.authors = ["Sam Goldstein"]
27
- s.date = %q{2009-04-14}
28
27
  s.description = %q{Command line time tracker}
29
28
  s.email = %q{sgrock@gmail.com}
30
29
  s.has_rdoc = true
@@ -40,6 +39,6 @@ begin
40
39
  s.add_dependency("getopt-declare", ">= 1.28")
41
40
  end
42
41
  rescue LoadError
43
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
42
+ puts "Jeweler not available."
44
43
  end
45
44
 
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 7
4
- :patch: 4
4
+ :patch: 5
data/lib/timetrap/cli.rb CHANGED
@@ -306,6 +306,7 @@ COMMAND is one of:
306
306
  end
307
307
  end.sort_by{|sheet| sheet[:name].downcase}
308
308
  width = sheets.sort_by{|h|h[:name].length }.last[:name].length + 4
309
+ width = 10 if width < 10
309
310
  puts " %-#{width}s%-12s%-12s%s" % ["Timesheet", "Running", "Today", "Total Time"]
310
311
  sheets.each do |sheet|
311
312
  star = sheet[:name] == Timer.current_sheet ? '*' : ' '
@@ -322,9 +323,9 @@ COMMAND is one of:
322
323
  puts "*#{Timer.current_sheet}: not running"
323
324
  end
324
325
  Timer.running_entries.each do |entry|
325
- current = entry[:sheet] == Timer.current_sheet
326
+ current = entry.sheet == Timer.current_sheet
326
327
  out = current ? '*' : ' '
327
- out << "#{entry[:sheet]}: #{format_duration(entry.duration)}".gsub(/ /, ' ')
328
+ out << "#{entry.sheet}: #{format_duration(entry.duration)}".gsub(/ /, ' ')
328
329
  out << " (#{entry.note})" if entry.note =~ /.+/
329
330
  puts out
330
331
  end
@@ -29,6 +29,12 @@ module Timetrap
29
29
  round? ? rounded_end : self[:end]
30
30
  end
31
31
 
32
+ # work around sequel's behavior of returning numeric values in string
33
+ # fields as integers
34
+ def sheet
35
+ self[:sheet].to_s
36
+ end
37
+
32
38
  def duration
33
39
  @duration ||= self.end_or_now.to_i - self.start.to_i
34
40
  end
@@ -56,7 +56,7 @@ module Timetrap
56
56
  unless Meta.find(:key => 'current_sheet')
57
57
  Meta.create(:key => 'current_sheet', :value => 'default')
58
58
  end
59
- Meta.find(:key => 'current_sheet').value
59
+ Meta.find(:key => 'current_sheet').value.to_s
60
60
  end
61
61
 
62
62
  def last_sheet
@@ -561,6 +561,20 @@ END:VCALENDAR
561
561
  invoke "kill --id #{entry.id} --yes"
562
562
  end.should change(Timetrap::Entry, :count).by(-1)
563
563
  end
564
+
565
+ describe "with a numeric sheet name" do
566
+ before do
567
+ Time.stub!(:now).and_return local_time("2008-10-05 18:00:00")
568
+ create_entry( :sheet => 1234, :start => local_time_cli('2008-10-03 12:00:00'),
569
+ :end => local_time_cli('2008-10-03 14:00:00'))
570
+ end
571
+
572
+ it "should kill the sheet" do
573
+ lambda do
574
+ invoke 'kill -y 1234'
575
+ end.should change(Timetrap::Entry, :count).by(-1)
576
+ end
577
+ end
564
578
  end
565
579
 
566
580
  describe "list" do
@@ -571,6 +585,30 @@ END:VCALENDAR
571
585
  end
572
586
  end
573
587
 
588
+ describe "with a numeric sheet name" do
589
+ before do
590
+ Time.stub!(:now).and_return local_time("2008-10-05 18:00:00")
591
+ create_entry( :sheet => '1234', :start => local_time_cli('2008-10-03 12:00:00'),
592
+ :end => local_time_cli('2008-10-03 14:00:00'))
593
+ end
594
+
595
+ it "should list the sheet" do
596
+ invoke 'list'
597
+ $stdout.string.should == " Timesheet Running Today Total Time\n 1234 0:00:00 0:00:00 2:00:00\n*default 0:00:00 0:00:00 0:00:00\n"
598
+ end
599
+ end
600
+
601
+ describe "with a numeric current_sheet" do
602
+ before do
603
+ Timetrap::Timer.current_sheet = '1234'
604
+ end
605
+
606
+ it "should list the sheet" do
607
+ invoke 'list'
608
+ $stdout.string.should == " Timesheet Running Today Total Time\n*1234 0:00:00 0:00:00 0:00:00\n"
609
+ end
610
+ end
611
+
574
612
  describe "with sheets defined" do
575
613
  before do
576
614
  Time.stub!(:now).and_return local_time("2008-10-05 18:00:00")
data/timetrap.gemspec CHANGED
@@ -1,61 +1,56 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{timetrap}
8
- s.version = "1.7.4"
8
+ s.version = "1.7.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sam Goldstein"]
12
- s.date = %q{2011-03-07}
12
+ s.date = %q{2011-06-17}
13
13
  s.default_executable = %q{t}
14
14
  s.description = %q{Command line time tracker}
15
15
  s.email = %q{sgrock@gmail.com}
16
16
  s.executables = ["t"]
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE.txt",
19
- "README.md"
19
+ "README.md"
20
20
  ]
21
21
  s.files = [
22
- ".gitignore",
23
- ".rspec",
24
- "CONTRIBUTORS",
25
- "Gemfile",
26
- "LICENSE.txt",
27
- "README.md",
28
- "Rakefile",
29
- "VERSION.yml",
30
- "bin/dev_t",
31
- "bin/t",
32
- "lib/timetrap.rb",
33
- "lib/timetrap/cli.rb",
34
- "lib/timetrap/config.rb",
35
- "lib/timetrap/formatters.rb",
36
- "lib/timetrap/formatters/csv.rb",
37
- "lib/timetrap/formatters/factor.rb",
38
- "lib/timetrap/formatters/ical.rb",
39
- "lib/timetrap/formatters/ids.rb",
40
- "lib/timetrap/formatters/json.rb",
41
- "lib/timetrap/formatters/text.rb",
42
- "lib/timetrap/helpers.rb",
43
- "lib/timetrap/models.rb",
44
- "lib/timetrap/timer.rb",
45
- "spec/timetrap_spec.rb",
46
- "timetrap.gemspec"
22
+ ".rspec",
23
+ "CONTRIBUTORS",
24
+ "Gemfile",
25
+ "LICENSE.txt",
26
+ "README.md",
27
+ "Rakefile",
28
+ "VERSION.yml",
29
+ "bin/dev_t",
30
+ "bin/t",
31
+ "lib/timetrap.rb",
32
+ "lib/timetrap/cli.rb",
33
+ "lib/timetrap/config.rb",
34
+ "lib/timetrap/formatters.rb",
35
+ "lib/timetrap/formatters/csv.rb",
36
+ "lib/timetrap/formatters/factor.rb",
37
+ "lib/timetrap/formatters/ical.rb",
38
+ "lib/timetrap/formatters/ids.rb",
39
+ "lib/timetrap/formatters/json.rb",
40
+ "lib/timetrap/formatters/text.rb",
41
+ "lib/timetrap/helpers.rb",
42
+ "lib/timetrap/models.rb",
43
+ "lib/timetrap/timer.rb",
44
+ "spec/timetrap_spec.rb",
45
+ "timetrap.gemspec"
47
46
  ]
48
47
  s.homepage = %q{http://github.com/samg/timetrap/tree/master}
49
48
  s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
50
49
  s.require_paths = ["lib"]
51
- s.rubygems_version = %q{1.3.7}
50
+ s.rubygems_version = %q{1.5.3}
52
51
  s.summary = %q{Command line time tracker}
53
- s.test_files = [
54
- "spec/timetrap_spec.rb"
55
- ]
56
52
 
57
53
  if s.respond_to? :specification_version then
58
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
59
54
  s.specification_version = 3
60
55
 
61
56
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -63,17 +58,41 @@ Gem::Specification.new do |s|
63
58
  s.add_runtime_dependency(%q<sqlite3>, ["~> 1.3.3"])
64
59
  s.add_runtime_dependency(%q<chronic>, ["~> 0.3.0"])
65
60
  s.add_runtime_dependency(%q<getopt-declare>, [">= 1.28"])
61
+ s.add_runtime_dependency(%q<json>, ["~> 1.4.6"])
62
+ s.add_runtime_dependency(%q<icalendar>, ["~> 1.1.5"])
63
+ s.add_runtime_dependency(%q<rake>, [">= 0"])
64
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
65
+ s.add_runtime_dependency(%q<sequel>, [">= 3.9.0"])
66
+ s.add_runtime_dependency(%q<sqlite3>, ["~> 1.3.3"])
67
+ s.add_runtime_dependency(%q<chronic>, ["~> 0.3.0"])
68
+ s.add_runtime_dependency(%q<getopt-declare>, [">= 1.28"])
66
69
  else
67
70
  s.add_dependency(%q<sequel>, [">= 3.9.0"])
68
71
  s.add_dependency(%q<sqlite3>, ["~> 1.3.3"])
69
72
  s.add_dependency(%q<chronic>, ["~> 0.3.0"])
70
73
  s.add_dependency(%q<getopt-declare>, [">= 1.28"])
74
+ s.add_dependency(%q<json>, ["~> 1.4.6"])
75
+ s.add_dependency(%q<icalendar>, ["~> 1.1.5"])
76
+ s.add_dependency(%q<rake>, [">= 0"])
77
+ s.add_dependency(%q<jeweler>, [">= 0"])
78
+ s.add_dependency(%q<sequel>, [">= 3.9.0"])
79
+ s.add_dependency(%q<sqlite3>, ["~> 1.3.3"])
80
+ s.add_dependency(%q<chronic>, ["~> 0.3.0"])
81
+ s.add_dependency(%q<getopt-declare>, [">= 1.28"])
71
82
  end
72
83
  else
73
84
  s.add_dependency(%q<sequel>, [">= 3.9.0"])
74
85
  s.add_dependency(%q<sqlite3>, ["~> 1.3.3"])
75
86
  s.add_dependency(%q<chronic>, ["~> 0.3.0"])
76
87
  s.add_dependency(%q<getopt-declare>, [">= 1.28"])
88
+ s.add_dependency(%q<json>, ["~> 1.4.6"])
89
+ s.add_dependency(%q<icalendar>, ["~> 1.1.5"])
90
+ s.add_dependency(%q<rake>, [">= 0"])
91
+ s.add_dependency(%q<jeweler>, [">= 0"])
92
+ s.add_dependency(%q<sequel>, [">= 3.9.0"])
93
+ s.add_dependency(%q<sqlite3>, ["~> 1.3.3"])
94
+ s.add_dependency(%q<chronic>, ["~> 0.3.0"])
95
+ s.add_dependency(%q<getopt-declare>, [">= 1.28"])
77
96
  end
78
97
  end
79
98
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timetrap
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease: false
4
+ hash: 1
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
- - 4
10
- version: 1.7.4
9
+ - 5
10
+ version: 1.7.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sam Goldstein
@@ -15,13 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-07 00:00:00 -08:00
18
+ date: 2011-06-17 00:00:00 -07:00
19
19
  default_executable: t
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: sequel
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
25
  requirements:
27
26
  - - ">="
@@ -32,12 +31,12 @@ dependencies:
32
31
  - 9
33
32
  - 0
34
33
  version: 3.9.0
34
+ prerelease: false
35
35
  type: :runtime
36
- version_requirements: *id001
36
+ requirement: *id001
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sqlite3
39
- prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
39
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
40
  none: false
42
41
  requirements:
43
42
  - - ~>
@@ -48,12 +47,12 @@ dependencies:
48
47
  - 3
49
48
  - 3
50
49
  version: 1.3.3
50
+ prerelease: false
51
51
  type: :runtime
52
- version_requirements: *id002
52
+ requirement: *id002
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: chronic
55
- prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
55
+ version_requirements: &id003 !ruby/object:Gem::Requirement
57
56
  none: false
58
57
  requirements:
59
58
  - - ~>
@@ -64,12 +63,135 @@ dependencies:
64
63
  - 3
65
64
  - 0
66
65
  version: 0.3.0
66
+ prerelease: false
67
67
  type: :runtime
68
- version_requirements: *id003
68
+ requirement: *id003
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: getopt-declare
71
+ version_requirements: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 55
77
+ segments:
78
+ - 1
79
+ - 28
80
+ version: "1.28"
81
+ prerelease: false
82
+ type: :runtime
83
+ requirement: *id004
84
+ - !ruby/object:Gem::Dependency
85
+ name: json
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ hash: 11
92
+ segments:
93
+ - 1
94
+ - 4
95
+ - 6
96
+ version: 1.4.6
97
+ prerelease: false
98
+ type: :runtime
99
+ requirement: *id005
100
+ - !ruby/object:Gem::Dependency
101
+ name: icalendar
102
+ version_requirements: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ hash: 25
108
+ segments:
109
+ - 1
110
+ - 1
111
+ - 5
112
+ version: 1.1.5
113
+ prerelease: false
114
+ type: :runtime
115
+ requirement: *id006
116
+ - !ruby/object:Gem::Dependency
117
+ name: rake
118
+ version_requirements: &id007 !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ hash: 3
124
+ segments:
125
+ - 0
126
+ version: "0"
127
+ prerelease: false
128
+ type: :runtime
129
+ requirement: *id007
130
+ - !ruby/object:Gem::Dependency
131
+ name: jeweler
132
+ version_requirements: &id008 !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
141
+ prerelease: false
142
+ type: :development
143
+ requirement: *id008
144
+ - !ruby/object:Gem::Dependency
145
+ name: sequel
146
+ version_requirements: &id009 !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ hash: 35
152
+ segments:
153
+ - 3
154
+ - 9
155
+ - 0
156
+ version: 3.9.0
157
+ prerelease: false
158
+ type: :runtime
159
+ requirement: *id009
160
+ - !ruby/object:Gem::Dependency
161
+ name: sqlite3
162
+ version_requirements: &id010 !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ hash: 29
168
+ segments:
169
+ - 1
170
+ - 3
171
+ - 3
172
+ version: 1.3.3
71
173
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
174
+ type: :runtime
175
+ requirement: *id010
176
+ - !ruby/object:Gem::Dependency
177
+ name: chronic
178
+ version_requirements: &id011 !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ~>
182
+ - !ruby/object:Gem::Version
183
+ hash: 19
184
+ segments:
185
+ - 0
186
+ - 3
187
+ - 0
188
+ version: 0.3.0
189
+ prerelease: false
190
+ type: :runtime
191
+ requirement: *id011
192
+ - !ruby/object:Gem::Dependency
193
+ name: getopt-declare
194
+ version_requirements: &id012 !ruby/object:Gem::Requirement
73
195
  none: false
74
196
  requirements:
75
197
  - - ">="
@@ -79,8 +201,9 @@ dependencies:
79
201
  - 1
80
202
  - 28
81
203
  version: "1.28"
204
+ prerelease: false
82
205
  type: :runtime
83
- version_requirements: *id004
206
+ requirement: *id012
84
207
  description: Command line time tracker
85
208
  email: sgrock@gmail.com
86
209
  executables:
@@ -91,7 +214,6 @@ extra_rdoc_files:
91
214
  - LICENSE.txt
92
215
  - README.md
93
216
  files:
94
- - .gitignore
95
217
  - .rspec
96
218
  - CONTRIBUTORS
97
219
  - Gemfile
@@ -147,9 +269,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
269
  requirements: []
148
270
 
149
271
  rubyforge_project:
150
- rubygems_version: 1.3.7
272
+ rubygems_version: 1.5.3
151
273
  signing_key:
152
274
  specification_version: 3
153
275
  summary: Command line time tracker
154
- test_files:
155
- - spec/timetrap_spec.rb
276
+ test_files: []
277
+
data/.gitignore DELETED
@@ -1,5 +0,0 @@
1
- tags
2
- pkg
3
- *.swp
4
- Gemfile.lock
5
- .bundle