Sha256: 94c2e29338b1e4b39e7ecd63b00ed9d9b82d3ec2c094056878198397cb4ad64d

Contents?: true

Size: 1.98 KB

Versions: 5

Compression:

Stored size: 1.98 KB

Contents

module Rbcli::Configurate

	@data = {
			scriptname: nil,
			version: nil,
			description: nil,
			config_userfile: 'config.yml',
			allow_json: false,
			options: {},
			default_action: nil,
			pre_hook: nil,
			post_hook: nil,
			first_run: nil,
			halt_after_first_run: false
	}

	def self.me &block
		@self_before_instance_eval = eval "self", block.binding
		instance_eval &block
	end

	# def self.method_missing(method, *args, &block)
	# 	@self_before_instance_eval.send method, *args, &block
	# end

	##
	# DSL Functions
	##
	def self.scriptname name
		@data[:scriptname] = name
	end

	def self.version vsn
		@data[:version] = vsn
	end

	def self.description desc
		@data[:description] = desc
	end

	def self.log_level level
		Rbcli::Logger::save_defaults level: level
	end

	def self.log_target target
		Rbcli::Logger::save_defaults target: target
	end

	def self.config_userfile *params
		Rbcli::Config::set_userfile *params
		@data[:config_userfile] = params[0]
	end

	def self.config_defaults filename
		Rbcli::Config::add_defaults filename
	end

	def self.config_default *params
		Rbcli::Config::add_default *params
	end

	def self.allow_json_output allow_json
		@data[:allow_json] = allow_json
	end

	def self.option name, description, type: :boolean, default: nil, required: false, permitted: nil
		default ||= false if (type == :boolean || type == :bool || type == :flag)
		@data[:options][name.to_sym] = {
				description: description,
				type: type,
				default: default,
				required: required,
				permitted: permitted
		}
	end

	def self.default_action &block
		@data[:default_action] = block
	end

	def self.pre_hook &block
		@data[:pre_hook] = block
	end

	def self.post_hook &block
		@data[:post_hook] = block
	end

	def self.first_run halt_after_running: false, &block
		@data[:halt_after_first_run] = halt_after_running
		@data[:first_run] = block
	end

	##
	# Data Retrieval
	##
	def self.configuration
		@data
	end

end

module Rbcli
	def self.configuration
		Rbcli::Configurate::configuration
	end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rbcli-0.1.7 lib/rbcli/configuration/configurate.rb
rbcli-0.1.6 lib/rbcli/configurate.rb
rbcli-0.1.5 lib/rbcli/configurate.rb
rbcli-0.1.4 lib/rbcli/configurate.rb
rbcli-0.1.3 lib/rbcli/configurate.rb