# -*- coding: utf-8 -*- # コマンドラインオプションを受け取る require 'optparse' module Mopt extend Mopt @opts = { error_level: 1 } def confroot @opts[:confroot] || ENV['MIKUTTER_CONFROOT'] || File.join(Dir.home, '.mikutter') end def method_missing(key) scope = class << self; self end scope.__send__(:define_method, key){ @opts[key.to_sym] } @opts[key.to_sym] end def parse(argv=ARGV, exec_command: false) unless argv.is_a? OptionParser::Arguable argv.extend(OptionParser::Arguable) end OptionParser.new do |opt| opt.banner = "Usage: mikutter.rb [options] [command]" opt.separator "options are:" opt.on('--debug', 'Debug mode (for development)') { |v| @opts[:debug] = true @opts[:error_level] = v.is_a?(Integer) ? v : 3 } opt.on('--profile', 'Profiling mode (for development)') { @opts[:profile] = true } opt.on('--skip-version-check', 'Skip library and environment version check') { @opts[:skip_version_check] = true } opt.on('-p', '--plugin=', 'Load specified plugins and depended plugins (comma separated)'){ |plugins| @opts[:plugin] = (@opts[:plugin]||[]).concat plugins.split(",") } opt.on('--confroot=', 'set confroot directory') { |v| @opts[:confroot] = File.expand_path(v) } opt.on('--daemon', '-d'){ Process.daemon(true) } opt.on('--clean', 'delete all caches and duplicated files') { |v| require 'fileutils' require_relative '../utils' miquire :core, 'environment' puts "delete "+File.expand_path(Environment::TMPDIR) FileUtils.rm_rf(File.expand_path(Environment::TMPDIR)) puts "delete "+File.expand_path(Environment::LOGDIR) FileUtils.rm_rf(File.expand_path(Environment::LOGDIR)) puts "delete "+File.expand_path(Environment::CONFROOT) FileUtils.rm_rf(File.expand_path(File.join(Environment::CONFROOT, 'icons'))) puts "delete "+File.expand_path(Environment::CACHE) FileUtils.rm_rf(File.expand_path(Environment::CACHE)) exit } opt.on('-v', '--version', "Show mikutter version"){ |v| require 'fileutils' require_relative '../utils' miquire :core, 'environment' puts Environment::NAME + ' ' + Environment::VERSION.to_s exit } opt.on('-h', '--help', "Show this message"){ puts opt puts "command are:" puts " generate [plugin_slug] generate plugin template at ~/.mikutter/plugin/" puts " spec [directory] generate plugin spec. ex) mikutter spec ~/.mikutter/plugin/test" puts " makepot generate .pot file all plugins." puts " account Register new Twitter account." puts " plugin_depends Output plugin dependencies." exit } opt.parse!(argv) if exec_command and argv[0] require_relative '../utils' miquire :boot, 'check_config_permission' file = File.join(File.dirname(__FILE__), "shell/#{argv[0]}.rb") if FileTest.exist?(file) require file else puts "no such command: #{argv[0]}" end exit end end end end