timetrap 1.2.0 → 1.2.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 +10 -1
- data/VERSION.yml +1 -1
- data/lib/timetrap/config.rb +10 -1
- data/lib/timetrap/models.rb +2 -2
- data/spec/timetrap_spec.rb +30 -13
- data/timetrap.gemspec +2 -2
- metadata +2 -2
data/README.md
CHANGED
@@ -103,7 +103,7 @@ Commands
|
|
103
103
|
usage: ``t backend``
|
104
104
|
|
105
105
|
**configure**
|
106
|
-
Creates a config file at
|
106
|
+
Creates a config file at ``~/.timetrap.yml`` or ``ENV['TIMETRAP_CONFIG_FILE']`` if
|
107
107
|
one doesn't exist. Prints path to config file. Currently allows configuration
|
108
108
|
of path to database file.
|
109
109
|
|
@@ -190,6 +190,15 @@ Global Options
|
|
190
190
|
display commands (e.g. display, list, week, etc.) and is non-destructive.
|
191
191
|
The actual start and end time stored by Timetrap are unaffected.
|
192
192
|
|
193
|
+
Configuration
|
194
|
+
--------
|
195
|
+
|
196
|
+
Configuration of TimeTrap's behavior can be done through a YAML config file.
|
197
|
+
See ``t configure`` for details. Currently supported options are:
|
198
|
+
|
199
|
+
round_in_seconds: The duration of time to use for rounding with the -r flag
|
200
|
+
database_file: The file path of the sqlite databese
|
201
|
+
|
193
202
|
Bugs and Feature Requests
|
194
203
|
--------
|
195
204
|
Submit to http://github.com/samg/timetrap/issues
|
data/VERSION.yml
CHANGED
data/lib/timetrap/config.rb
CHANGED
@@ -3,9 +3,18 @@ module Timetrap
|
|
3
3
|
extend self
|
4
4
|
PATH = ENV['TIMETRAP_CONFIG_FILE'] || File.join(ENV['HOME'], '.timetrap.yml')
|
5
5
|
|
6
|
+
# Application defaults.
|
7
|
+
#
|
8
|
+
# These are written to a config file by invoking:
|
9
|
+
# <code>
|
10
|
+
# t configure
|
11
|
+
# </code>
|
6
12
|
def defaults
|
7
13
|
{
|
8
|
-
|
14
|
+
# Path to the sqlite db
|
15
|
+
'database_file' => "#{ENV['HOME']}/.timetrap.db",
|
16
|
+
# Unit of time for rounding (-r) in seconds
|
17
|
+
'round_in_seconds' => 900
|
9
18
|
}
|
10
19
|
end
|
11
20
|
|
data/lib/timetrap/models.rb
CHANGED
@@ -44,10 +44,10 @@ module Timetrap
|
|
44
44
|
def round time
|
45
45
|
return nil unless time
|
46
46
|
Time.at(
|
47
|
-
if (r = time.to_i %
|
47
|
+
if (r = time.to_i % Timetrap::Config['round_in_seconds']) < 450
|
48
48
|
time.to_i - r
|
49
49
|
else
|
50
|
-
time.to_i + (
|
50
|
+
time.to_i + (Timetrap::Config['round_in_seconds'] - r)
|
51
51
|
end
|
52
52
|
)
|
53
53
|
end
|
data/spec/timetrap_spec.rb
CHANGED
@@ -3,6 +3,14 @@ require File.join(File.dirname(__FILE__), '..', 'lib', 'timetrap')
|
|
3
3
|
require 'spec'
|
4
4
|
require 'fakefs/safe'
|
5
5
|
|
6
|
+
module Timetrap::StubConfig
|
7
|
+
def with_stubbed_config options
|
8
|
+
options.each do |k, v|
|
9
|
+
Timetrap::Config.stub(:[]).with(k).and_return v
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
6
14
|
describe Timetrap do
|
7
15
|
def create_entry atts = {}
|
8
16
|
Timetrap::Entry.create({
|
@@ -12,6 +20,7 @@ describe Timetrap do
|
|
12
20
|
:note => 'note'}.merge(atts))
|
13
21
|
end
|
14
22
|
|
23
|
+
|
15
24
|
before :each do
|
16
25
|
Timetrap::Entry.create_table!
|
17
26
|
Timetrap::Meta.create_table!
|
@@ -548,6 +557,8 @@ current sheet: 0:01:00 (a timesheet that is running)
|
|
548
557
|
end
|
549
558
|
|
550
559
|
describe Timetrap::Entry do
|
560
|
+
|
561
|
+
include Timetrap::StubConfig
|
551
562
|
describe "with an instance" do
|
552
563
|
before do
|
553
564
|
@time = Time.now
|
@@ -575,10 +586,10 @@ describe Timetrap::Entry do
|
|
575
586
|
@entry.sheet.should == 'name'
|
576
587
|
end
|
577
588
|
|
578
|
-
def
|
589
|
+
def with_rounding_on
|
579
590
|
old_val = Timetrap::Entry.round
|
580
591
|
begin
|
581
|
-
Timetrap::Entry.round =
|
592
|
+
Timetrap::Entry.round = true
|
582
593
|
block_return_value = yield
|
583
594
|
ensure
|
584
595
|
Timetrap::Entry.round = old_val
|
@@ -586,25 +597,31 @@ describe Timetrap::Entry do
|
|
586
597
|
end
|
587
598
|
|
588
599
|
it "should use round start if the global round attribute is set" do
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
600
|
+
with_rounding_on do
|
601
|
+
with_stubbed_config('round_in_seconds' => 900) do
|
602
|
+
@time = Chronic.parse("12:55am")
|
603
|
+
@entry.start = @time
|
604
|
+
@entry.start.should == Chronic.parse("1am")
|
605
|
+
end
|
593
606
|
end
|
594
607
|
end
|
595
608
|
|
596
609
|
it "should use round start if the global round attribute is set" do
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
610
|
+
with_rounding_on do
|
611
|
+
with_stubbed_config('round_in_seconds' => 900) do
|
612
|
+
@time = Chronic.parse("12:50am")
|
613
|
+
@entry.start = @time
|
614
|
+
@entry.start.should == Chronic.parse("12:45am")
|
615
|
+
end
|
601
616
|
end
|
602
617
|
end
|
603
618
|
|
604
619
|
it "should have a rounded start" do
|
605
|
-
|
606
|
-
|
607
|
-
|
620
|
+
with_stubbed_config('round_in_seconds' => 900) do
|
621
|
+
@time = Chronic.parse("12:50am")
|
622
|
+
@entry.start = @time
|
623
|
+
@entry.rounded_start.should == Chronic.parse("12:45am")
|
624
|
+
end
|
608
625
|
end
|
609
626
|
|
610
627
|
it "should not round nil times" do
|
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.2.
|
8
|
+
s.version = "1.2.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{2009-12-
|
12
|
+
s.date = %q{2009-12-20}
|
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,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timetrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Goldstein
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-20 00:00:00 -08:00
|
13
13
|
default_executable: t
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|