X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Fconfig.rb;h=ef63a2feb06c36f1372e75d412d199814b633543;hb=d935d59d0430c40c9e51664693c370563d5d09cb;hp=4f81c6951050e89bc5719c664a05a4832a1a38e6;hpb=11092542ded9d33f2f5abd3f5c8789ff73bb37b4;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/config.rb b/lib/rbot/config.rb index 4f81c695..ef63a2fe 100644 --- a/lib/rbot/config.rb +++ b/lib/rbot/config.rb @@ -24,6 +24,7 @@ module Config attr_reader :desc attr_reader :key attr_reader :wizard + attr_reader :store_default attr_reader :requires_restart attr_reader :requires_rescan attr_reader :order @@ -52,6 +53,7 @@ module Config @on_change = params[:on_change] @validate = params[:validate] @wizard = params[:wizard] + @store_default = params[:store_default] @requires_restart = params[:requires_restart] @requires_rescan = params[:requires_rescan] @auth_path = "config::key::#{key.sub('.','::')}" @@ -262,9 +264,10 @@ module Config return unless @bot @changed = false - if(File.exist?("#{@bot.botclass}/conf.yaml")) + conf = @bot.path 'conf.yaml' + if File.exist? conf begin - newconfig = YAML::load_file("#{@bot.botclass}/conf.yaml") + newconfig = YAML::load_file conf newconfig.each { |key, val| @config[key.to_sym] = val } @@ -273,6 +276,14 @@ module Config error "failed to read conf.yaml: #{$!}" end end + # config options with :store_default to true should store + # their default value at first run. + # Some defaults might change anytime the bot starts + # for instance core.db or authpw + @items.values.find_all {|i| i.store_default }.each do |value| + @config[value.key] = value.default + end + # if we got here, we need to run the first-run wizard Wizard.new(@bot).run # save newly created config @@ -327,8 +338,10 @@ module Config return end begin + conf = @bot.path 'conf.yaml' + fnew = conf + '.new' debug "Writing new conf.yaml ..." - File.open("#{@bot.botclass}/conf.yaml.new", "w") do |file| + File.open(fnew, "w") do |file| savehash = {} @config.each { |key, val| savehash[key.to_s] = val @@ -336,8 +349,7 @@ module Config file.puts savehash.to_yaml end debug "Officializing conf.yaml ..." - File.rename("#{@bot.botclass}/conf.yaml.new", - "#{@bot.botclass}/conf.yaml") + File.rename(fnew, conf) @changed = false rescue => e error "failed to write configuration file conf.yaml! #{$!}"