timetrap 1.6.0 → 1.6.1
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/README.md +3 -3
- data/VERSION.yml +1 -1
- data/lib/timetrap/cli.rb +26 -19
- data/spec/timetrap_spec.rb +20 -0
- data/timetrap.gemspec +2 -2
- metadata +4 -4
data/README.md
CHANGED
|
@@ -32,7 +32,7 @@ All commands can be abbreviated.
|
|
|
32
32
|
|
|
33
33
|
Each timesheet contains *entries*. Each entry has a start and end time, and a
|
|
34
34
|
note associated with it. An entry without an end time set is considered to be
|
|
35
|
-
|
|
35
|
+
running.
|
|
36
36
|
|
|
37
37
|
You check in to the current sheet with the `in` command.
|
|
38
38
|
|
|
@@ -199,9 +199,9 @@ Commands
|
|
|
199
199
|
|
|
200
200
|
**sheet**
|
|
201
201
|
Switch to a timesheet creating it if necessary. The default timesheet is
|
|
202
|
-
called "default".
|
|
202
|
+
called "default". When no sheet is specified list all existing sheets.
|
|
203
203
|
|
|
204
|
-
usage: ``t sheet TIMESHEET``
|
|
204
|
+
usage: ``t sheet [TIMESHEET]``
|
|
205
205
|
|
|
206
206
|
**week**
|
|
207
207
|
Shortcut for display with start date set to monday of this week
|
data/VERSION.yml
CHANGED
data/lib/timetrap/cli.rb
CHANGED
|
@@ -51,8 +51,6 @@ COMMAND is one of:
|
|
|
51
51
|
configurable (see configure)
|
|
52
52
|
-m, --move <sheet> Move to another sheet
|
|
53
53
|
|
|
54
|
-
* format - Deprecated: alias for display.
|
|
55
|
-
|
|
56
54
|
* in - Start the timer for the current timesheet.
|
|
57
55
|
usage: t in [--at TIME] [NOTES]
|
|
58
56
|
-a, --at <time:qs> Use this time instead of now
|
|
@@ -71,12 +69,9 @@ COMMAND is one of:
|
|
|
71
69
|
usage: t out [--at TIME] [TIMESHEET]
|
|
72
70
|
-a, --at <time:qs> Use this time instead of now
|
|
73
71
|
|
|
74
|
-
*
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
usage: t sheet TIMESHEET
|
|
78
|
-
|
|
79
|
-
* switch - Deprecated: renamed to sheet.
|
|
72
|
+
* sheet - Switch to a timesheet creating it if necessary. When no sheet is
|
|
73
|
+
specified list all sheets.
|
|
74
|
+
usage: t sheet [TIMESHEET]
|
|
80
75
|
|
|
81
76
|
* week - Shortcut for display with start date set to monday of this week.
|
|
82
77
|
usage: t week [--ids] [--end DATE] [--format FMT] [SHEET | all]
|
|
@@ -121,17 +116,33 @@ COMMAND is one of:
|
|
|
121
116
|
Timetrap::CLI::USAGE.scan(/\* \w+/).map{|s| s.gsub(/\* /, '')}
|
|
122
117
|
end
|
|
123
118
|
|
|
119
|
+
def deprecated_commands
|
|
120
|
+
{
|
|
121
|
+
'switch' => 'sheet',
|
|
122
|
+
'running' => 'now',
|
|
123
|
+
'format' => 'display'
|
|
124
|
+
}
|
|
125
|
+
end
|
|
126
|
+
|
|
124
127
|
def invoke_command_if_valid
|
|
125
128
|
command = args.unused.shift
|
|
126
129
|
set_global_options
|
|
127
130
|
case (valid = commands.select{|name| name =~ %r|^#{command}|}).size
|
|
128
|
-
when
|
|
131
|
+
when 1 then send valid[0]
|
|
129
132
|
else
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
handle_invalid_command(command)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def handle_invalid_command(command)
|
|
138
|
+
if !command
|
|
139
|
+
puts USAGE
|
|
140
|
+
elsif mapping = deprecated_commands.detect{|(k,v)| k =~ %r|^#{command}|}
|
|
141
|
+
deprecated, current = *mapping
|
|
142
|
+
warn "The #{deprecated.inspect} command is deprecated in favor of #{current.inspect}. Sorry for the inconvenience."
|
|
143
|
+
send current
|
|
144
|
+
else
|
|
145
|
+
warn "Invalid command: #{command.inspect}"
|
|
135
146
|
end
|
|
136
147
|
end
|
|
137
148
|
|
|
@@ -246,20 +257,17 @@ COMMAND is one of:
|
|
|
246
257
|
puts fmt_klass.new(entries).output
|
|
247
258
|
end
|
|
248
259
|
end
|
|
249
|
-
alias_method :format, :display
|
|
250
260
|
|
|
251
261
|
def sheet
|
|
252
262
|
sheet = unused_args
|
|
253
263
|
unless sheet =~ /.+/
|
|
254
|
-
|
|
264
|
+
list
|
|
255
265
|
else
|
|
256
266
|
Timer.current_sheet = sheet
|
|
257
267
|
warn "Switching to sheet #{sheet.inspect}"
|
|
258
268
|
end
|
|
259
269
|
end
|
|
260
270
|
|
|
261
|
-
alias_method :switch, :sheet
|
|
262
|
-
|
|
263
271
|
def list
|
|
264
272
|
sheets = ([Timer.current_sheet] | Entry.sheets).map do |sheet|
|
|
265
273
|
sheet_atts = {:total => 0, :running => 0, :today => 0}
|
|
@@ -301,7 +309,6 @@ COMMAND is one of:
|
|
|
301
309
|
puts out
|
|
302
310
|
end
|
|
303
311
|
end
|
|
304
|
-
alias_method :running, :display
|
|
305
312
|
|
|
306
313
|
def week
|
|
307
314
|
args['-s'] = Date.today.wday == 1 ? Date.today.to_s : Date.parse(Chronic.parse(%q(last monday)).to_s).to_s
|
data/spec/timetrap_spec.rb
CHANGED
|
@@ -44,6 +44,14 @@ describe Timetrap do
|
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
+
describe 'with an invalid command' do
|
|
48
|
+
it "should tell me I'm wrong" do
|
|
49
|
+
invoke 'poo'
|
|
50
|
+
$stderr.string.should include 'Invalid command: "poo"'
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
47
55
|
describe 'archive' do
|
|
48
56
|
before do
|
|
49
57
|
3.times do |i|
|
|
@@ -279,6 +287,12 @@ Grand Total 10:00:00
|
|
|
279
287
|
create_entry(:start => '2008-10-05 12:00:00', :end => '2008-10-05 14:00:00')
|
|
280
288
|
end
|
|
281
289
|
describe 'csv' do
|
|
290
|
+
it "should be deprecated" do
|
|
291
|
+
invoke 'format'
|
|
292
|
+
$stderr.string.should == <<-WARN
|
|
293
|
+
The "format" command is deprecated in favor of "display". Sorry for the inconvenience.
|
|
294
|
+
WARN
|
|
295
|
+
end
|
|
282
296
|
|
|
283
297
|
it "should not export running items" do
|
|
284
298
|
invoke 'in'
|
|
@@ -579,6 +593,12 @@ END:VCALENDAR
|
|
|
579
593
|
invoke 'sheet'
|
|
580
594
|
Timetrap::Timer.current_sheet.should == 'sheet 1'
|
|
581
595
|
end
|
|
596
|
+
|
|
597
|
+
it "should list timesheets when there are no arguments" do
|
|
598
|
+
invoke 'sheet sheet 1'
|
|
599
|
+
invoke 'sheet'
|
|
600
|
+
$stdout.string.should == " Timesheet Running Today Total Time\n*sheet 1 0:00:00 0:00:00 0:00:00\n"
|
|
601
|
+
end
|
|
582
602
|
end
|
|
583
603
|
end
|
|
584
604
|
end
|
data/timetrap.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{timetrap}
|
|
8
|
-
s.version = "1.6.
|
|
8
|
+
s.version = "1.6.1"
|
|
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{2010-11-
|
|
12
|
+
s.date = %q{2010-11-29}
|
|
13
13
|
s.default_executable = %q{t}
|
|
14
14
|
s.description = %q{Command line time tracker}
|
|
15
15
|
s.email = %q{sgrock@gmail.com}
|
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:
|
|
4
|
+
hash: 13
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 1
|
|
8
8
|
- 6
|
|
9
|
-
-
|
|
10
|
-
version: 1.6.
|
|
9
|
+
- 1
|
|
10
|
+
version: 1.6.1
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Sam Goldstein
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2010-11-
|
|
18
|
+
date: 2010-11-29 00:00:00 -08:00
|
|
19
19
|
default_executable: t
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|