Module: Rbcli::Config
- Defined in:
- lib/rbcli/features/userconfig.rb
Class Method Summary collapse
- .add_categorized_defaults(name, description, config) ⇒ Object
- .add_default(name, description: nil, default: nil) ⇒ Object
- .add_defaults(filename = nil, text: nil) ⇒ Object
- .config ⇒ Object
- .generate_userconf(filename) ⇒ Object
- .load ⇒ Object
- .set_userfile(filename, merge_defaults: true, required: false) ⇒ Object
Class Method Details
.add_categorized_defaults(name, description, config) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/rbcli/features/userconfig.rb', line 76 def self.add_categorized_defaults name, description, config @categorized_defaults ||= {} @categorized_defaults[name.to_sym] = { description: description, config: config } @config_defaults ||= {} @config_defaults[name.to_sym] = {} config.each do |k, v| @config_defaults[name.to_sym][k.to_sym] = v[:value] end @loaded = false end |
.add_default(name, description: nil, default: nil) ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/rbcli/features/userconfig.rb', line 91 def self.add_default name, description: nil, default: nil @config_individual_lines ||= [] text = "#{name.to_s}: #{default}".ljust(30) + " # #{description}" @config_individual_lines.push text unless @config_individual_lines.include? text @config_defaults[name.to_sym] = default @loaded = false end |
.add_defaults(filename = nil, text: nil) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/rbcli/features/userconfig.rb', line 99 def self.add_defaults filename=nil, text: nil filename = File. filename return unless filename and File.exists? filename @config_text ||= '' @config_text += "\n" unless @config_text.empty? File.readlines(filename).each do |line| if line.start_with? '---' or line.start_with? '...' @config_text << "\n" unless @config_text.empty? else @config_text << line unless @config_text.include? line end end if filename and File.exists? filename @config_text << "\n\n" << text if text @config_defaults ||= {} @config_defaults.deep_merge! YAML.safe_load(@config_text, [], [], true).deep_symbolize! @loaded = false end |
.config ⇒ Object
132 133 134 135 |
# File 'lib/rbcli/features/userconfig.rb', line 132 def self.config self.load unless @loaded (@config.nil?) ? @config_defaults : @config end |
.generate_userconf(filename) ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/rbcli/features/userconfig.rb', line 137 def self.generate_userconf filename filepath = File. "#{(filename) ? filename : "#{Dir.pwd}/config.yml"}" FileUtils.touch filepath File.write filepath, @config_text File.open(filepath, 'a') do |f| f.puts "# Individual Settings" @config_individual_lines.each { |l| f.puts l } end if @config_individual_lines if @categorized_defaults text = '' @categorized_defaults.each do |name, opts| text += "\n# #{opts[:description]}\n" text += "#{name.to_s}:\n" opts[:config].each do |opt, v| text += " #{opt.to_s}: #{(v[:value].nil?) ? '~' : v[:value]}".ljust(30) + " # #{v[:description]}\n" end end File.open(filepath, 'a') do |f| f.puts text end end end |
.load ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/rbcli/features/userconfig.rb', line 118 def self.load if (! @config_file.nil?) and File.exists? @config_file @config = YAML.safe_load(File.read(@config_file), [], [], true).deep_symbolize! @config.deep_merge! @config_defaults if @merge_defaults elsif @userfile_required puts "User's config file not found at #{@config_file}. Please run this tool with the `--generate-config` option to generate it." exit 1 else @config = @config_defaults end @loaded = true @config end |
.set_userfile(filename, merge_defaults: true, required: false) ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/rbcli/features/userconfig.rb', line 68 def self.set_userfile filename, merge_defaults: true, required: false return if filename.nil? @config_file = File. filename @merge_defaults = merge_defaults @userfile_required = required @loaded = false end |