one_inch_punch 0.3.2 → 0.3.3
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/History.txt +6 -0
- data/bin/punch +3 -1
- data/lib/punch/version.rb +1 -1
- data/lib/punch.rb +9 -1
- data/spec/punch_command_spec.rb +8 -12
- data/spec/punch_spec.rb +66 -1
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 0.3.3 2008-06-25
|
2
|
+
|
3
|
+
* 1 tiny enhancement:
|
4
|
+
* added 'short' status, which only displays what's currently punched in (or 'out' if nothing)
|
5
|
+
* punch command displays status as YAML if it's a hash, like it does for total
|
6
|
+
|
1
7
|
== 0.3.2 2008-06-01
|
2
8
|
|
3
9
|
* 1 tiny bugfix enhancement:
|
data/bin/punch
CHANGED
@@ -35,6 +35,8 @@ BANNER
|
|
35
35
|
"Add the given log message when punching in/out") { |message| OPTIONS[:message] = message }
|
36
36
|
opts.on('--full',
|
37
37
|
"Show full output for the command") { |full| OPTIONS[:full] = true }
|
38
|
+
opts.on('--short',
|
39
|
+
"Show short output for the command") { |full| OPTIONS[:short] = true }
|
38
40
|
opts.on("-h", "--help",
|
39
41
|
"Show this help message.") { puts opts; exit }
|
40
42
|
opts.parse!(ARGV)
|
@@ -58,7 +60,7 @@ Punch.load
|
|
58
60
|
commands = {
|
59
61
|
'status' => lambda do |project|
|
60
62
|
result = Punch.status(project, OPTIONS)
|
61
|
-
if
|
63
|
+
if result.is_a?(Hash)
|
62
64
|
puts result.to_yaml
|
63
65
|
else
|
64
66
|
puts result.inspect
|
data/lib/punch/version.rb
CHANGED
data/lib/punch.rb
CHANGED
@@ -45,7 +45,15 @@ class Punch
|
|
45
45
|
project = nil
|
46
46
|
end
|
47
47
|
|
48
|
-
|
48
|
+
unless project
|
49
|
+
stats = {}
|
50
|
+
projects.each { |project| stats[project] = status(project, options) }
|
51
|
+
if options[:short]
|
52
|
+
stats.reject! { |k, v| v != 'in' }
|
53
|
+
stats = 'out' if stats.empty?
|
54
|
+
end
|
55
|
+
return stats
|
56
|
+
end
|
49
57
|
|
50
58
|
project_data = data[project]
|
51
59
|
time_data = (project_data || []).last
|
data/spec/punch_command_spec.rb
CHANGED
@@ -163,8 +163,8 @@ describe 'punch command' do
|
|
163
163
|
run_command('status', @project)
|
164
164
|
end
|
165
165
|
|
166
|
-
it
|
167
|
-
result = 'status data'
|
166
|
+
it "should output the status as YAML if the status data is a Hash" do
|
167
|
+
result = { 'status' => 'data' }
|
168
168
|
Punch.stub!(:status).and_return(result)
|
169
169
|
self.should.receive(:puts).with(result.to_yaml)
|
170
170
|
run_command('status')
|
@@ -180,18 +180,14 @@ describe 'punch command' do
|
|
180
180
|
run_command('status', '--full')
|
181
181
|
end
|
182
182
|
|
183
|
-
it 'should
|
184
|
-
|
185
|
-
|
186
|
-
self.should.receive(:puts).with(result.to_yaml)
|
187
|
-
run_command('status', @project, '--full')
|
183
|
+
it 'should pass a true short option if specified on the command line (with --short)' do
|
184
|
+
Punch.should.receive(:status).with(@project, :short => true)
|
185
|
+
run_command('status', @project, '--short')
|
188
186
|
end
|
189
187
|
|
190
|
-
it 'should
|
191
|
-
|
192
|
-
|
193
|
-
self.should.receive(:puts).with(result.to_yaml)
|
194
|
-
run_command('status', '--full')
|
188
|
+
it 'should pass a true short option if specified on the command line (with --short) and no project given' do
|
189
|
+
Punch.should.receive(:status).with(nil, :short => true)
|
190
|
+
run_command('status', '--short')
|
195
191
|
end
|
196
192
|
|
197
193
|
it 'should not write the data' do
|
data/spec/punch_spec.rb
CHANGED
@@ -235,12 +235,77 @@ describe Punch do
|
|
235
235
|
}
|
236
236
|
end
|
237
237
|
|
238
|
-
it 'should return the full status
|
238
|
+
it 'should return the full status of all projects if no project given' do
|
239
239
|
Punch.status(:full => true).should == {
|
240
240
|
@projects['out'] => { :status => 'out', :time => @now + 12 },
|
241
241
|
@projects['in'] => { :status => 'in', :time => @now }
|
242
242
|
}
|
243
243
|
end
|
244
|
+
|
245
|
+
describe 'when given a :short option' do
|
246
|
+
it "should return 'in' if the project is currently punched in" do
|
247
|
+
Punch.status(@projects['in'], :short => true).should == 'in'
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should return 'out' if the project is currently punched out" do
|
251
|
+
Punch.status(@projects['out'], :short => true).should == 'out'
|
252
|
+
end
|
253
|
+
|
254
|
+
it 'should return nil if project does not exist' do
|
255
|
+
Punch.status('other project', :short => true).should.be.nil
|
256
|
+
end
|
257
|
+
|
258
|
+
describe 'handling multiple projects' do
|
259
|
+
before do
|
260
|
+
@projects['in2'] = 'bingbang'
|
261
|
+
@projects['out2'] = 'boopadope'
|
262
|
+
@data[@projects['in2']] = [ { 'in' => @now - 5 } ]
|
263
|
+
@data[@projects['out2']] = [ { 'in' => @now - 500, 'out' => @now - 20 } ]
|
264
|
+
Punch.data = @data
|
265
|
+
end
|
266
|
+
|
267
|
+
it 'should return just the punched-in projects if nil is given as the project' do
|
268
|
+
Punch.status(nil, :short => true).should == {
|
269
|
+
@projects['in'] => 'in',
|
270
|
+
@projects['in2'] => 'in'
|
271
|
+
}
|
272
|
+
end
|
273
|
+
|
274
|
+
it 'should return just the punched-in projects if no project given' do
|
275
|
+
Punch.status(:short => true).should == {
|
276
|
+
@projects['in'] => 'in',
|
277
|
+
@projects['in2'] => 'in'
|
278
|
+
}
|
279
|
+
end
|
280
|
+
|
281
|
+
it 'should not include empty projects' do
|
282
|
+
@data['empty_project'] = []
|
283
|
+
Punch.data = @data
|
284
|
+
|
285
|
+
Punch.status(:short => true).should == {
|
286
|
+
@projects['in'] => 'in',
|
287
|
+
@projects['in2'] => 'in'
|
288
|
+
}
|
289
|
+
end
|
290
|
+
|
291
|
+
it "should return 'out' if all projects are punched out" do
|
292
|
+
@data.delete(@projects['in'])
|
293
|
+
@data.delete(@projects['in2'])
|
294
|
+
Punch.data = @data
|
295
|
+
|
296
|
+
Punch.status(:short => true).should == 'out'
|
297
|
+
end
|
298
|
+
|
299
|
+
it "should return 'out' if all projects are punched out or empty" do
|
300
|
+
@data.delete(@projects['in'])
|
301
|
+
@data.delete(@projects['in2'])
|
302
|
+
@data['empty_project'] = []
|
303
|
+
Punch.data = @data
|
304
|
+
|
305
|
+
Punch.status(:short => true).should == 'out'
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
244
309
|
end
|
245
310
|
|
246
311
|
describe 'handling a sub-project' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: one_inch_punch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yossef Mendelssohn
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-06-
|
12
|
+
date: 2009-06-25 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -105,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
105
|
requirements: []
|
106
106
|
|
107
107
|
rubyforge_project: yomendel
|
108
|
-
rubygems_version: 1.3.
|
108
|
+
rubygems_version: 1.3.4
|
109
109
|
signing_key:
|
110
110
|
specification_version: 3
|
111
111
|
summary: a simple time-tracking tool
|