Sha256: e7e5459c5f505730e9e5c80787de2b8aa15a381569c11f305043980a999851a8

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module WatchmonkeyCli
  class Application
    class Configuration
      module AppHelper
        def config_directory
          "#{wm_cfg_path}/configs"
        end

        def config_files
          Dir["#{config_directory}/**/*.rb"].reject do |file|
            file.gsub(config_directory, "").split("/").any?{|fp| fp.start_with?("__") }
          end
        end

        def config_filename name = "default"
          "#{config_directory}/#{name}.rb"
        end

        def load_configs!
          config_files.each {|f| Configuration.new(self, f) }
        end

        def generate_config name = "default"
          FileUtils.mkdir_p(config_directory)
          File.open(config_filename(name), "w", encoding: "utf-8") do |f|
            f << File.read("#{File.dirname(__FILE__)}/configuration.tpl", encoding: "utf-8")
          end
        end
      end

      def initialize app, file
        @app = app
        @file = file
        begin
          eval File.read(file, encoding: "utf-8"), binding, file
        rescue
          app.error "Invalid config file #{file}"
          raise
        end
      end

      def ssh_connection name, opts = {}, &b
        @app.fetch_connection(:ssh, name, opts, &b)
      end

      def method_missing meth, *args, &block
        if c = @app.checkers[meth.to_s]
          c.enqueue(*args)
        else
          super
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
watchmonkey_cli-1.4 lib/watchmonkey_cli/application/configuration.rb