Sha256: 79d8ec3b0d3e3f275f6aca4dbfb0ff1161d520eefb8bc3fbbeb65ecb41d46aa5

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

require "yaml"
module Invoker
  module Power
    # Save and Load Invoker::Power config
    class ConfigExists < StandardError; end
    class Config
      CONFIG_LOCATION = File.join(ENV['HOME'], ".invoker")
      def self.has_config?
        File.exists?(CONFIG_LOCATION)
      end

      def self.create(options = {})
        if has_config?
          raise ConfigExists, "Config file already exists at location #{CONFIG_LOCATION}"
        end
        config = new(options)
        config.save
      end

      def initialize(options = {})
        @config = options
      end

      def self.load_config
        config_hash = File.open(CONFIG_LOCATION, "r") { |fl| YAML.load(fl) }
        new(config_hash)
      end

      def dns_port=(dns_port)
        @config[:dns_port] = dns_port
      end

      def http_port=(http_port)
        @config[:http_port] = http_port
      end

      def ipfw_rule_number=(ipfw_rule_number)
        @config[:ipfw_rule_number] = ipfw_rule_number
      end

      def dns_port; @config[:dns_port]; end
      def http_port; @config[:http_port]; end
      def ipfw_rule_number; @config[:ipfw_rule_number]; end

      def save
        File.open(CONFIG_LOCATION, "w") do |fl|
          YAML.dump(@config, fl)
        end
        self
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
invoker-1.0.0 lib/invoker/power/config.rb