aboutsummaryrefslogtreecommitdiff
path: root/cass.rb
diff options
context:
space:
mode:
Diffstat (limited to 'cass.rb')
-rwxr-xr-xcass.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/cass.rb b/cass.rb
new file mode 100755
index 0000000..7c8abbf
--- /dev/null
+++ b/cass.rb
@@ -0,0 +1,58 @@
+#!/usr/bin/env ruby
+
+require "optparse"
+require "pp"
+
+require_relative "parser"
+require_relative "time_util"
+
+op = OptionParser.new
+op.on("start ACCOUNT", String) do |acc|
+ puts acc
+end
+
+options = {}
+OptionParser.new do |opts|
+ opts.banner = "Usage: cassiopeia <command>"
+
+ opts.on("-f FILE", "--file=FILE", "Provide the working file") do |f|
+ options[:file] = f
+ end
+
+ opts.on("--start=ACCOUNT", "Start tracking time") do |acc|
+ options[:start] = acc
+ end
+
+ opts.on("--stop=ACCOUNT", "Stop working!") do |acc|
+ options[:stop] = acc
+ end
+
+ opts.on("-r", "--round", "Round to the next 15 minutes") do |r|
+ options[:round] = r
+ end
+
+ opts.on("-v", "--version", "Print program version") do |v|
+ puts "0.1.0"
+ end
+end.parse!
+
+path = options[:file]
+start = options[:start]
+stop = options[:stop]
+round = !!options[:round]
+
+file = File.open(path, "r") { |f| CassParser.new.parse(f.read) }
+
+if start
+ require_relative "start"
+ new = start(start, round, file)
+
+ File.open(path, "a") { |f| f.write(new) }
+elsif stop
+ require_relative "stop"
+ line, new = stop(stop, round, file)
+
+ lines = File.open(path, "r") { |f| f.readlines }
+ lines[line - 1] = new
+ File.open(path, "w") { |f| f.write(lines.join) }
+end