class SshMenu::Config
Attributes
config_file[R]
connections[R]
general[R]
Public Class Methods
default_config_file()
click to toggle source
# File lib/sshmenu/config.rb, line 68 def self.default_config_file File.join(Dir.home, '.config', 'sshmenu', 'config.yml') end
default_editor()
click to toggle source
# File lib/sshmenu/config.rb, line 64 def self.default_editor ENV['EDITOR'] || 'vi' end
default_ssh_client()
click to toggle source
# File lib/sshmenu/config.rb, line 60 def self.default_ssh_client 'ssh' end
new(cfg_file = nil)
click to toggle source
# File lib/sshmenu/config.rb, line 11 def initialize(cfg_file = nil) @config_file = cfg_file || self.class.default_config_file create_config_file(@config_file) unless File.exist? @config_file config = YAML.load_file(@config_file) config = {} unless config merge_defaults config validate_config config gen_user_host config['connections'] @general = config['general'] @connections = config['connections'] puts "Config is #{config.inspect}" if $DEBUG rescue Psych::SyntaxError => e raise ConfigException, "YAML syntax error: #{e.message}" end
Public Instance Methods
create_config_file(cfg_file)
click to toggle source
# File lib/sshmenu/config.rb, line 40 def create_config_file(cfg_file) puts "Create sample config file #{cfg_file}" project_dir = File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__)))) sample_cfg = File.join(project_dir, 'data', 'sshmenu', 'sampleconfig.yml'); FileUtils.mkdir_p(File.dirname(cfg_file)) FileUtils.cp(sample_cfg, cfg_file) end
gen_user_host(conns)
click to toggle source
# File lib/sshmenu/config.rb, line 54 def gen_user_host(conns) conns.each do |conn| conn['user_host'] = conn['user'] ? "#{conn['user']}@#{conn['host']}" : conn['host'] end end
merge_defaults(config)
click to toggle source
# File lib/sshmenu/config.rb, line 30 def merge_defaults(config) config['general'] ||= {} gen = config['general'] gen['ssh_exec'] ||= self.class.default_ssh_client gen['ssh_opts'] ||= '' gen['editor'] ||= self.class.default_editor config['connections'] ||= [] end
validate_config(config)
click to toggle source
# File lib/sshmenu/config.rb, line 48 def validate_config(config) unless config['connections'].all? {|conn| conn['host']} raise ConfigException, "invalid connection found in #{@config_file}: missing host" end end