exe/clock_window in clock_window-0.0.5 vs exe/clock_window in clock_window-0.0.6
- old
+ new
@@ -1,17 +1,57 @@
#!/usr/bin/env ruby
+require 'fileutils'
+require 'slop'
require 'neatjson'
require 'clock_window'
+
+opts = Slop.parse do |o|
+ o.banner = <<-BANNER
+Clock Window - "Clock your desktop activity!"
+Copyright (c) 2016 Daniel P. Clark via the MIT License
+Version: #{ClockWindow::VERSION}
+
+usage: clock_window [options]
+BANNER
+ o.bool "-c", "--clean", "Use all known name filters"
+ o.string "-o", "--output", "File/directory output in strftime"
+ o.bool "-e", "--eager", "Use strftime of time at start of script\n"
+
+ o.on "--version", "Print the version" do
+ puts ClockWindow::VERSION
+ exit
+ end
+ o.bool "-h", "--help", "This help menu\n\n"
+end
+
+if opts[:help]
+ puts opts
+ exit
+else
+ puts opts.to_s.partition("\n\n").first
+ puts "\nPress CTRL-C to exit the script."
+ puts "Starting active window tracking!"
+end
+
+dir_name, _, file_name = opts[:output].to_s.rpartition(File::SEPARATOR)
+file_name = "timelog.json" if file_name.empty?
+
+@time = Time.now if opts[:eager]
@hash = {}
begin
loop do
- x = ClockWindow::ClockIt.new.active_window
+ filter_opts = opts.clean? ? {filter_opts: {no_notify: true}} : {}
+ x = ClockWindow::ClockIt.new(**filter_opts).active_window
@hash[x] = @hash[x].to_f + 0.25
sleep 15
end
ensure
@hash = {"*---------- WINDOW NAME ----------*" => "minutes"}.merge(@hash)
- File.open("timelog.json","w") do |f|
+ @time ||= Time.now
+ dir = @time.strftime(dir_name)
+ FileUtils.mkdir_p(dir) unless dir.empty?
+ file = @time.strftime(file_name)
+ File.open("#{dir}#{File::SEPARATOR unless dir.empty?}#{file}","w") do |f|
f.write(JSON.neat_generate(@hash,aligned:true,around_colon:1))
end
end