timetrap 1.7.4 → 1.7.5

Sign up to get free protection for your applications and to get access to all the features.
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