X-Git-Url: https://pwan.org/git/?p=vagrant-dotfiles.git;a=blobdiff_plain;f=lib%2Fcopy_my_conf%2Fconfig.rb;fp=lib%2Fcopy_my_conf%2Fconfig.rb;h=23f150e999dba0b9ef74edf11bdf36d7a7833f0d;hp=b077607dd4d3788ab2260f43e1f137903a3dab1d;hb=2254852606b5104c60f643724a827701ae0c9c81;hpb=08b150e7415fcdaca5277bee264dda740369063f diff --git a/lib/copy_my_conf/config.rb b/lib/copy_my_conf/config.rb index b077607..23f150e 100644 --- a/lib/copy_my_conf/config.rb +++ b/lib/copy_my_conf/config.rb @@ -5,13 +5,28 @@ module Vagrant def self.all_attributes [:ssh, :vim, :git] end - attr_accessor *all_attributes attr_accessor :user_home - def all_true - self.class.all_attributes.collect do |attr| - self.send(attr) ? attr : nil + all_attributes.each do |attr| + define_method(attr) do + instance_variable_get_or_set(attr, CopyMyConf.const_get("#{attr.capitalize}").new) + end + end + + def all_enabled_attributes + all_attributes.collect do |attr| + instance_variable_get "@#{attr}" end.compact + [@ssh, @vim, @git].compact + end + + private + def all_attributes + self.class.all_attributes + end + + def instance_variable_get_or_set(attr, value) + instance_variable_get("@#{attr}") || instance_variable_set("@#{attr}", value) end end end