summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfelix <felix@seconddrawer.com.au>2011-05-17 13:37:33 +0000
committerfelix <felix@seconddrawer.com.au>2011-05-17 13:37:33 +0000
commit6b63d50902d46763e575eca633710f9e8e8b14b1 (patch)
tree5fe1fafd5b727aa6ed43c1f8f872f3a04c8d4aab
parent19fc94dd1285e19df253eb8d3c3ddd7d43f17f8d (diff)
downloadtimetrackr-6b63d50902d46763e575eca633710f9e8e8b14b1.tar.gz
timetrackr-6b63d50902d46763e575eca633710f9e8e8b14b1.tar.bz2
config uses string keys
few sqlite fixes
-rwxr-xr-xbin/timetrackr32
-rw-r--r--lib/timetrackr.rb8
-rw-r--r--lib/timetrackr/sqlite.rb12
-rw-r--r--test/test_timetrackr.rb5
4 files changed, 26 insertions, 31 deletions
diff --git a/bin/timetrackr b/bin/timetrackr
index cc4e6e9..d3daace 100755
--- a/bin/timetrackr
+++ b/bin/timetrackr
@@ -6,13 +6,13 @@ require 'timetrackr'
require 'timetrackr/period'
DEFAULTS = {
- :backend => 'yaml',
- :verbose => false,
- :single_task => false,
- :path => File.join(ENV['HOME'],'.timetrackr.db'),
- :relative_format => "%2<hours>dh %2<minutes>dm %2<seconds>ds",
- :absolute_time => "%H:%m",
- :absolute_day => "%Y-%m-%d"
+ 'backend' => 'yaml',
+ 'verbose' => false,
+ 'single_task' => false,
+ 'path' => File.join(ENV['HOME'],'.timetrackr.db'),
+ 'relative_format' => "%2<hours>dh %2<minutes>dm %2<seconds>ds",
+ 'absolute_time' => "%H:%M",
+ 'absolute_day' => "%Y-%m-%d"
}
def show_help
@@ -56,7 +56,7 @@ end
# global options
while (cmd = ARGV.shift) && cmd.start_with?('-')
if ['-v','--verbose'].include? cmd
- config[:verbose] = true
+ config['verbose'] = true
end
if ['-h','--help'].include? cmd
show_help
@@ -65,8 +65,8 @@ while (cmd = ARGV.shift) && cmd.start_with?('-')
end
config = DEFAULTS.merge(config || {})
-$verbose = config[:verbose]
-trackr = TimeTrackr.create(config[:backend], config)
+$verbose = config['verbose']
+trackr = TimeTrackr.create(config['backend'], config)
#
# commands
@@ -76,7 +76,7 @@ when 'start','in','s'
task = ARGV.shift
notes = ARGV.join(' ')
# switch tasks if config says so
- if config[:single_task] && trackr.current != task
+ if config['single_task'] && trackr.current != task
trackr.current.each { |t|
trackr.stop(t) unless t == task
}
@@ -118,7 +118,7 @@ when 'time','status',nil
t = t + period.length
}
name = trackr.current.include?(task) ? task+' *' : task
- puts name.ljust(15) << format_time(total,config[:relative_format])
+ puts name.ljust(15) << format_time(total,config['relative_format'])
end
when 'log'
@@ -131,13 +131,13 @@ when 'log'
periods = tasks.each.collect{ |t| trackr.history(t) }.flatten
lastday = nil
table << periods.sort{|x,y| x.start <=> y.start}.collect{ |period|
- currday = period.start.strftime(config[:absolute_day])
+ currday = period.start.strftime(config['absolute_day'])
day = (currday == lastday) ? ' ' : currday
lastday = currday
name = period.current? ? period.task+' *' : period.task
- start = period.start.strftime(config[:absolute_time])
- stop = period.current? ? ' ' : period.stop.strftime(config[:absolute_time])
- length = format_time(period.length, config[:relative_format])
+ start = period.start.strftime(config['absolute_time'])
+ stop = period.current? ? ' ' : period.stop.strftime(config['absolute_time'])
+ length = format_time(period.length, config['relative_format'])
"#{day.ljust(12)} #{name.ljust(15)} #{start.ljust(7)} #{stop.ljust(7)} #{length}"
}
puts table.join("\n")
diff --git a/lib/timetrackr.rb b/lib/timetrackr.rb
index c93da9b..14a501e 100644
--- a/lib/timetrackr.rb
+++ b/lib/timetrackr.rb
@@ -2,12 +2,12 @@ autoload 'YamlTimeTrackr', 'timetrackr/yaml'
autoload 'SqliteTimeTrackr', 'timetrackr/sqlite'
class TimeTrackr
- def self.create(type,options={})
+ def self.create(type, options={})
case type.to_s
when 'yaml'
begin
require 'yaml'
- log = YamlTimeTrackr.new(options[:path])
+ log = YamlTimeTrackr.new(options['path'])
puts 'Loaded yaml tracker' if $verbose
rescue LoadError
puts 'Yaml not found'
@@ -15,7 +15,7 @@ class TimeTrackr
when 'sqlite'
begin
require 'sqlite3'
- log = SqliteTimeTrackr.new(options[:path])
+ log = SqliteTimeTrackr.new(options['path'])
puts 'Loaded sqlite tracker' if $verbose
rescue LoadError
puts 'Sqlite not found'
@@ -34,7 +34,7 @@ class TimeTrackr
end
#
- # start a period
+ # start a period with optional notes
#
def start(task,notes)
raise 'Not implemented'
diff --git a/lib/timetrackr/sqlite.rb b/lib/timetrackr/sqlite.rb
index d51f699..2660376 100644
--- a/lib/timetrackr/sqlite.rb
+++ b/lib/timetrackr/sqlite.rb
@@ -5,11 +5,11 @@ class SqliteTimeTrackr < TimeTrackr
if !File.exist? @log_path
@db = SQLite3::Database.new(@log_path)
sql_events = "CREATE TABLE events (
- id INTEGER AUTO_INCREMENT PRIMARY KEY,
- task VARCHAR(50),
- start DATETIME,
- stop DATETIME,
- notes VARCHAR(255));"
+ id INTEGER PRIMARY KEY,
+ task TEXT,
+ start TIME,
+ stop TIME,
+ notes TEXT);"
@db.execute(sql_events)
else
@db = SQLite3::Database.open(@log_path)
@@ -43,7 +43,7 @@ class SqliteTimeTrackr < TimeTrackr
def stop(task)
sql = "SELECT id FROM events WHERE task = :task AND stop IS NULL;"
- exists = @db.get_first_value(sql, 'task' => task).first
+ exists = @db.get_first_value(sql, 'task' => task)
if exists
sql = "UPDATE events SET stop = :stop WHERE id = :current;"
@db.execute(sql, 'current' => exists, 'stop' => Time.now.to_s)
diff --git a/test/test_timetrackr.rb b/test/test_timetrackr.rb
index 07589a4..b9fb355 100644
--- a/test/test_timetrackr.rb
+++ b/test/test_timetrackr.rb
@@ -66,11 +66,6 @@ class TestTimetrackr < Test::Unit::TestCase
end
context 'with empty db' do
- setup do
- File.open(@config[:path]) do |fh|
- @db = YAML.load(fh)
- end
- end
should 'not fail on current command' do
assert_nothing_raised Exception do