lib/dvdprofiler2xbmc/cli.rb in royw-dvdprofiler2xbmc-0.0.3 vs lib/dvdprofiler2xbmc/cli.rb in royw-dvdprofiler2xbmc-0.0.4
- old
+ new
@@ -1,25 +1,30 @@
require 'rubygems'
require 'yaml'
require 'xmlsimple'
require 'ftools'
require 'imdb'
-require 'pp'
require 'mash'
require 'log4r'
require 'commandline/optionparser'
include CommandLine
require 'dvdprofiler2xbmc/app'
require 'dvdprofiler2xbmc/app_config'
require 'dvdprofiler2xbmc/collection'
require 'dvdprofiler2xbmc/extensions'
-require 'dvdprofiler2xbmc/imdb_extensions'
require 'dvdprofiler2xbmc/media'
require 'dvdprofiler2xbmc/media_files'
require 'dvdprofiler2xbmc/nfo'
+# Command Line interface for the Dvdprofiler2Xbmc application.
+# All application output is via AppConfig[:logger] so we have
+# to set up the logger here.
+# Also handle the command line options.
+# Finally creates an instance of Dvdprofiler2Xbmc and executes
+# it.
+
module Dvdprofiler2xbmc
# == Synopsis
# Command line exit codes
class ExitCode
UNKNOWN = 3
@@ -31,92 +36,91 @@
class CLI
include AppConfig
def self.execute(stdout, arguments=[])
exit_code = ExitCode::OK
-
- # we start a STDOUT logger, but it will be switched after
+
+ # we start a STDOUT logger, but it will be switched after
# the config files are read if config[:logger_output] is set
logger = Log4r::Logger.new('dvdprofiler2xbmc')
logger.outputters = Log4r::StdoutOutputter.new(:console)
logger.level = Log4r::DEBUG
-
+
begin
- # trap ^C interrupts and let the app instance cleanly exit any long loops
- Signal.trap("INT") {DvdProfiler2Xbmc.interrupt}
+ # trap ^C interrupts and let the app instance cleanly exit any long loops
+ Signal.trap("INT") {DvdProfiler2Xbmc.interrupt}
-
- # parse the command line
- options = setupParser()
- od = options.parse(arguments)
+ # parse the command line
+ options = setupParser()
+ od = options.parse(arguments)
- # load config values
- AppConfig.default
-
- # the first reinitialize_logger adds the command line logging options to the default config
- # then we load the config files
- # then we run reinitialize_logger again to modify the logger for any logging options from the config files
-
- reinitialize_logger(logger, od["--quiet"], od["--debug"])
- AppConfig.load
-# AppConfig[:pretend] = od["--pretend"]
- AppConfig[:imdb_query] = !od["--no_imdb_query"]
- AppConfig.save
- reinitialize_logger(logger, od["--quiet"], od["--debug"])
-
- unless od["--help"] || od["--version"]
- # create and execute class instance here
- app = DvdProfiler2Xbmc.new
- app.execute
- app.report.each {|line| puts line}
- end
+ # load config values
+ AppConfig.default
+
+ # the first reinitialize_logger adds the command line logging options to the default config
+ # then we load the config files
+ # then we run reinitialize_logger again to modify the logger for any logging options from the config files
+
+ reinitialize_logger(logger, od["--quiet"], od["--debug"])
+ AppConfig.load
+ AppConfig[:imdb_query] = !od["--no_imdb_query"]
+ AppConfig.save
+ reinitialize_logger(logger, od["--quiet"], od["--debug"])
+
+ AppConfig[:do_update] = !od["--reports"]
+
+ unless od["--help"] || od["--version"]
+ # create and execute class instance here
+ app = DvdProfiler2Xbmc.instance
+ app.execute
+ app.report.each {|line| puts line}
+ end
rescue Exception => eMsg
- logger.error {eMsg.to_s}
- logger.error {options.to_s}
- logger.error {eMsg.backtrace.join("\n")}
- exit_code = ExitCode::CRITICAL
+ logger.error {eMsg.to_s}
+ logger.error {options.to_s}
+ logger.error {eMsg.backtrace.join("\n")}
+ exit_code = ExitCode::CRITICAL
end
exit_code
end
# Setup the command line option parser
# Returns:: OptionParser instances
def self.setupParser()
options = OptionParser.new()
- options << Option.new(:flag, :names => %w(--help -h),
- :opt_found => lambda {Log4r::Logger['dvdprofiler2xbmc'].info{options.to_s}},
- :opt_description => "This usage information")
- options << Option.new(:flag, :names => %w(--version -v),
- :opt_found => lambda {Log4r::Logger['dvdprofiler2xbmc'].info{"Dvdprofiler2xbmc #{Dvdprofiler2xbmc::VERSION}"}},
- :opt_description => "This version of dvdprofiler2xbmc")
-# options << Option.new(:flag, :names => %w(--pretend -p))
- options << Option.new(:flag, :names => %w(--no_imdb_query -n))
- options << Option.new(:flag, :names => %w(--quiet -q))
- options << Option.new(:flag, :names => %w(--debug -d))
+ options << Option.new(:flag, :names => %w(--help -h),
+ :opt_found => lambda {Log4r::Logger['dvdprofiler2xbmc'].info{options.to_s}},
+ :opt_description => "This usage information")
+ options << Option.new(:flag, :names => %w(--version -v),
+ :opt_found => lambda {Log4r::Logger['dvdprofiler2xbmc'].info{"Dvdprofiler2xbmc #{Dvdprofiler2xbmc::VERSION}"}},
+ :opt_description => "This version of dvdprofiler2xbmc")
+ options << Option.new(:flag, :names => %w(--no_imdb_query -n), :opt_description => 'Do not query IMDB.com')
+ options << Option.new(:flag, :names => %w(--quiet -q), :opt_description => 'Display error messages only')
+ options << Option.new(:flag, :names => %w(--debug -d), :opt_description => 'Display debug messages')
+ options << Option.new(:flag, :names => %w(--reports -r), :opt_description => 'Display reports only. Do not do any updates.')
options
end
-
+
# Reinitialize the logger using the loaded config.
# logger:: logger for any user messages
# config:: is the application's config hash.
def self.reinitialize_logger(logger, quiet, debug)
# switch the logger to the one specified in the config files
unless AppConfig[:logfile].nil?
- logfile_outputter = Log4r::RollingFileOutputter.new(:logfile, :filename => AppConfig[:logfile], :maxsize => 1000000 )
- logger.add logfile_outputter
- logfile_outputter.level = Log4r::INFO
- Log4r::Outputter[:logfile].formatter = Log4r::PatternFormatter.new(:pattern => "[%l] %d :: %M")
- unless AppConfig[:logfile_level].nil?
- level_map = {'DEBUG' => Log4r::DEBUG, 'INFO' => Log4r::INFO, 'WARN' => Log4r::WARN}
- logfile_outputter.level = level_map[AppConfig[:logfile_level]] || Log4r::INFO
- end
+ logfile_outputter = Log4r::RollingFileOutputter.new(:logfile, :filename => AppConfig[:logfile], :maxsize => 1000000 )
+ logger.add logfile_outputter
+ logfile_outputter.level = Log4r::INFO
+ Log4r::Outputter[:logfile].formatter = Log4r::PatternFormatter.new(:pattern => "[%l] %d :: %M")
+ unless AppConfig[:logfile_level].nil?
+ level_map = {'DEBUG' => Log4r::DEBUG, 'INFO' => Log4r::INFO, 'WARN' => Log4r::WARN}
+ logfile_outputter.level = level_map[AppConfig[:logfile_level]] || Log4r::INFO
+ end
end
Log4r::Outputter[:console].level = Log4r::INFO
Log4r::Outputter[:console].level = Log4r::WARN if quiet
Log4r::Outputter[:console].level = Log4r::DEBUG if debug
# logger.trace = true
AppConfig[:logger] = logger
end
end
end
-
-
\ No newline at end of file
+