diff options
Diffstat (limited to 'lib/oxidized/cli.rb')
-rw-r--r-- | lib/oxidized/cli.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/oxidized/cli.rb b/lib/oxidized/cli.rb new file mode 100644 index 0000000..720f405 --- /dev/null +++ b/lib/oxidized/cli.rb @@ -0,0 +1,48 @@ +module Oxidized + class CLI + require 'oxidized' + require 'slop' + class CLIError < OxidizedError; end + class NoConfig < CLIError; end + + def run + Process.daemon unless CFG.debug + begin + Oxidized.new + rescue => error + crash error + raise + end + end + + private + + def initialize + if CFGS.system.empty? and CFGS.user.empty? + CFGS.user = CFGS.default + CFGS.save :user + raise NoConfig, 'edit ~/.config/oxidized/config' + end + _args, opts = parse_opts + CFG.debug = true if opts[:debug] + end + + def crash error + open Config::Crash, 'w' do |file| + file.puts '-' * 50 + file.puts Time.now.utc + file.puts error.message + ' [' + error.class.to_s + ']' + file.puts '-' * 50 + file.puts error.backtrace + file.puts '-' * 50 + end + end + + def parse_opts + opts = Slop.new(:help=>true) do + on 'd', 'debug', 'turn on debugging' + end + [opts.parse!, opts] + end + end +end |