diff --git a/src/config.cr b/src/config.cr index 4f4bc41..b789621 100644 --- a/src/config.cr +++ b/src/config.cr @@ -20,8 +20,9 @@ class Config @[YAML::Field(key: "log_level")] property log_level : String = "info" - def self.load - cfg_path = File.expand_path "~/.config/mango/config.yml", home: true + def self.load(path : String?) + path = "~/.config/mango/config.yml" if path.nil? + cfg_path = File.expand_path path, home: true if File.exists? cfg_path return self.from_yaml File.read cfg_path end diff --git a/src/mango.cr b/src/mango.cr index 66c082c..f45c496 100644 --- a/src/mango.cr +++ b/src/mango.cr @@ -1,11 +1,29 @@ require "./server" require "./context" -require "./config" -require "./library" -require "./storage" -require "./logger" +require "option_parser" -config = Config.load +VERSION = "0.1.0" + +config_path = nil + +parser = OptionParser.parse do |parser| + parser.banner = "Mango e-manga server/reader. Version #{VERSION}\n" + + parser.on "-v", "--version", "Show version" do + puts "Version #{VERSION}" + exit + end + parser.on "-h", "--help", "Show help" do + puts parser + exit + end + parser.on "-c PATH", "--config=PATH", "Path to the config file. " \ + "Default is `~/.config/mango/config.yml`" do |path| + config_path = path + end +end + +config = Config.load config_path logger = MLogger.new config library = Library.new config.library_path, config.scan_interval, logger storage = Storage.new config.db_path, logger