module Shlog::BasicCLI
Attributes
cli_command[RW]
Public Class Methods
base_option_name_for(option, option_list)
click to toggle source
# File lib/shlog/basic_cli.rb, line 70 def base_option_name_for(option, option_list) name = nil option_list.each do |n, o| if o.include?(option) name = n break end end name end
cli_defaults()
click to toggle source
# File lib/shlog/basic_cli.rb, line 18 def cli_defaults @cli_defaults ||= Hash.new end
cli_defaults=(value)
click to toggle source
# File lib/shlog/basic_cli.rb, line 22 def cli_defaults=(value) @cli_defaults = value end
config_to_options_for(command, config)
click to toggle source
# File lib/shlog/basic_cli.rb, line 26 def config_to_options_for(command, config) self.cli_command ||= command setup_cli! config.each do |k, v| base_option_name = base_option_name_for(k, @cli_options[:list]) @cli_options[:list][base_option_name].each do |f| @cli_options[:values][f] = v end end @cli_options.fetch(:values) end
included(mod)
click to toggle source
# File lib/shlog/basic_cli.rb, line 3 def self.included(mod) mod.class_eval do extend GLI::App const_set(:CONFIG_FILE_NAME, "shlogrc") const_set(:CONFIG_FILES, [ File.expand_path(File.join(File.dirname(File.realpath(__FILE__)), "..", "..", const_get(:CONFIG_FILE_NAME))), File.join(ENV["HOME"], ".#{const_get(:CONFIG_FILE_NAME)}"), File.join(Dir.getwd, ".#{const_get(:CONFIG_FILE_NAME)}") ]) class << self attr_accessor :cli_command def cli_defaults @cli_defaults ||= Hash.new end def cli_defaults=(value) @cli_defaults = value end def config_to_options_for(command, config) self.cli_command ||= command setup_cli! config.each do |k, v| base_option_name = base_option_name_for(k, @cli_options[:list]) @cli_options[:list][base_option_name].each do |f| @cli_options[:values][f] = v end end @cli_options.fetch(:values) end def setup_cli! raise RuntimeError, "Command not set!" unless cli_command unless @cli_options @cli_options = { list: Hash.new, values: Hash.new } flags_array = cli_command.flags.map(&:last).map { |f| [f.name, f.aliases].flatten } flags_array.each do |o| @cli_options[:list][o.first.to_sym] = [o.map(&:to_sym), o.map(&:to_s)].flatten.compact unless @cli_options.fetch(:list).has_key?(o.first.to_sym) o.each do |oo| @cli_options[:values][oo.to_sym] = nil unless @cli_options.fetch(:values).has_key?(oo.to_sym) @cli_options[:values][oo.to_s] = nil unless @cli_options.fetch(:values).has_key?(oo.to_s) end end switches_array = cli_command.switches.map(&:last).map { |s| [s.name, s.aliases].flatten.compact } switches_array.each do |o| @cli_options[:list][o.first.to_sym] = [o.map(&:to_sym), o.map(&:to_s)].flatten.compact unless @cli_options.fetch(:list).has_key?(o.first.to_sym) o.each do |oo| @cli_options[:values][oo.to_sym] = false unless @cli_options.fetch(:values).has_key?(oo.to_sym) @cli_options[:values][oo.to_s] = false unless @cli_options.fetch(:values).has_key?(oo.to_s) end end end end def base_option_name_for(option, option_list) name = nil option_list.each do |n, o| if o.include?(option) name = n break end end name end end private def self.set_default_options! config_file = const_get(:CONFIG_FILES).first if File.exists?(config_file) && File.readable?(config_file) config = Psych.load(ERB.new(IO.read(config_file)).result) else config = {} end self.cli_defaults = config["commands"] end end end
set_default_options!()
click to toggle source
# File lib/shlog/basic_cli.rb, line 86 def self.set_default_options! config_file = const_get(:CONFIG_FILES).first if File.exists?(config_file) && File.readable?(config_file) config = Psych.load(ERB.new(IO.read(config_file)).result) else config = {} end self.cli_defaults = config["commands"] end
setup_cli!()
click to toggle source
# File lib/shlog/basic_cli.rb, line 42 def setup_cli! raise RuntimeError, "Command not set!" unless cli_command unless @cli_options @cli_options = { list: Hash.new, values: Hash.new } flags_array = cli_command.flags.map(&:last).map { |f| [f.name, f.aliases].flatten } flags_array.each do |o| @cli_options[:list][o.first.to_sym] = [o.map(&:to_sym), o.map(&:to_s)].flatten.compact unless @cli_options.fetch(:list).has_key?(o.first.to_sym) o.each do |oo| @cli_options[:values][oo.to_sym] = nil unless @cli_options.fetch(:values).has_key?(oo.to_sym) @cli_options[:values][oo.to_s] = nil unless @cli_options.fetch(:values).has_key?(oo.to_s) end end switches_array = cli_command.switches.map(&:last).map { |s| [s.name, s.aliases].flatten.compact } switches_array.each do |o| @cli_options[:list][o.first.to_sym] = [o.map(&:to_sym), o.map(&:to_s)].flatten.compact unless @cli_options.fetch(:list).has_key?(o.first.to_sym) o.each do |oo| @cli_options[:values][oo.to_sym] = false unless @cli_options.fetch(:values).has_key?(oo.to_sym) @cli_options[:values][oo.to_s] = false unless @cli_options.fetch(:values).has_key?(oo.to_s) end end end end