ablerc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +19 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +121 -0
- data/Rakefile +1 -0
- data/ablerc.gemspec +24 -0
- data/lib/ablerc.rb +97 -0
- data/lib/ablerc/configuration.rb +43 -0
- data/lib/ablerc/context.rb +53 -0
- data/lib/ablerc/dsl.rb +61 -0
- data/lib/ablerc/errors.rb +4 -0
- data/lib/ablerc/option.rb +77 -0
- data/lib/ablerc/stub_generator.rb +44 -0
- data/lib/ablerc/version.rb +3 -0
- metadata +108 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Spencer Markowski
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
ablerc
|
2
|
+
======
|
3
|
+
|
4
|
+
Add "rc" capabilities into your ruby libraries
|
5
|
+
|
6
|
+
Installation
|
7
|
+
------
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'ablerc'
|
11
|
+
```
|
12
|
+
|
13
|
+
Usage
|
14
|
+
------
|
15
|
+
|
16
|
+
Add an ablerc.rb file to the root of your project.
|
17
|
+
|
18
|
+
If you use the option DSL you will be able to generate stub rc files and validate option values. However, you're free to
|
19
|
+
simply provide an `rc_file_name` and any option defined in that rc file will be available to you.
|
20
|
+
|
21
|
+
The scheme will control how your application's options are loaded and in what order.
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
Ablerc.setup do
|
25
|
+
# The name of the file to be used for the configuration of this app
|
26
|
+
# Include a dot if you expect hidden file behavior.
|
27
|
+
rc_file_name = '.ablerc'
|
28
|
+
|
29
|
+
# Describes the order in which configuration files are loaded.
|
30
|
+
# Default is <tt>:global</tt>, <tt>:user</tt>, <tt>:local</tt> which
|
31
|
+
# will search for <tt>rc_file_name</tt> in these directories:
|
32
|
+
# /etc/.ablerc
|
33
|
+
# ~/.ablerc
|
34
|
+
# ./.ablerc
|
35
|
+
#
|
36
|
+
# Configuration options cascade and override previously loaded options.
|
37
|
+
scheme :global, :user, :local
|
38
|
+
|
39
|
+
# Describe the options available
|
40
|
+
#
|
41
|
+
# ==== Parameters
|
42
|
+
# * <tt>name</tt> - A valid name for the option
|
43
|
+
# * <tt>behaviors</tt> - Behaviors used to for this option
|
44
|
+
# * <tt>block</tt> - A proc that should be run against the option value.
|
45
|
+
# ==== Options
|
46
|
+
# * <tt>allow</tt> - The option value must be in this list
|
47
|
+
# * <tt>boolean</tt> - The option will accept <tt>true</tt>, <tt>false</tt>, <tt>0</tt>, <tt>1</tt>
|
48
|
+
option :username, :description => "Your github username", :disabled => true
|
49
|
+
option :color, :allow => [:red, :green, :blue], :default => :red
|
50
|
+
option :save_on_exit, :boolean
|
51
|
+
option :seven_digit_number do |number|
|
52
|
+
number =~ ^\d{7}$
|
53
|
+
end
|
54
|
+
option :memory_limit, :default => '10G', :description => 'If memory usage exceeds 10G the internet reboots'
|
55
|
+
end
|
56
|
+
```
|
57
|
+
|
58
|
+
Accessing Configuration Options
|
59
|
+
----------
|
60
|
+
Options defined in the rc file are accessed through the `#configuration` method. All uncommented key-pair values within the rc file are parsed and made available through `#configuration` (or the alias `#config`), regardless of if you're using
|
61
|
+
the options DSL to define specific options.
|
62
|
+
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
Ablerc.configuration.username
|
66
|
+
#=> "esmarkowski"
|
67
|
+
|
68
|
+
Ablerc.configuration
|
69
|
+
#=> {username: 'esmarkowski', color: 'red', save_on_exit: true, seven_digit_number: '1234567'}
|
70
|
+
```
|
71
|
+
|
72
|
+
Options DSL
|
73
|
+
----------
|
74
|
+
|
75
|
+
### option(:name, behaviors = {})
|
76
|
+
|
77
|
+
| Option Behaviors | Description |
|
78
|
+
| ------------ | ------------ |
|
79
|
+
| `:allow` | An array of valid values. |
|
80
|
+
| `:refuse` | An array of invalid values. |
|
81
|
+
| `:boolean` | Only allows option to accept true, false, 1 or 0 |
|
82
|
+
| `:default` | The default value of this option |
|
83
|
+
| `:description` | Printed above the option as a comment |
|
84
|
+
| `:disabled` | Controls if option is commented out in rc file |
|
85
|
+
|
86
|
+
|
87
|
+
Providing Stub Configuration Files
|
88
|
+
----------
|
89
|
+
If you're using the option DSL you can expose `Ablerc.stub.generate` via
|
90
|
+
a rake task. `Ablerc.stub.generate`
|
91
|
+
accepts an optional scheme argument if you wish to place the rc file in a specific context.
|
92
|
+
|
93
|
+
```ruby
|
94
|
+
namespace :your_app do
|
95
|
+
task :stub
|
96
|
+
Ablerc.stub.generate :local
|
97
|
+
end
|
98
|
+
end
|
99
|
+
```
|
100
|
+
|
101
|
+
Running this task will place your rc file in the local context (`./.ablerc`) and describe available options.
|
102
|
+
|
103
|
+
```conf
|
104
|
+
# Your github username.
|
105
|
+
#username = ''
|
106
|
+
|
107
|
+
# color accepts :red, :blue or :green
|
108
|
+
#color = 'red'
|
109
|
+
|
110
|
+
# save_on_exit accepts true, false, 1 or 0
|
111
|
+
#save_on_exit = false
|
112
|
+
|
113
|
+
#seven_digit_number = ''
|
114
|
+
|
115
|
+
# If memory usage exceeds 10G the internet reboots
|
116
|
+
memory_limit = 10G
|
117
|
+
```
|
118
|
+
|
119
|
+
License
|
120
|
+
-------
|
121
|
+
MIT License. Copyright 2012 The Able Few, LLC. http://theablefew.com
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/ablerc.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'ablerc/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "ablerc"
|
8
|
+
gem.version = Ablerc::VERSION
|
9
|
+
gem.authors = ["Spencer Markowski"]
|
10
|
+
gem.email = ["spencer@theablefew.com"]
|
11
|
+
gem.description = %q{Provides cascading configuration files and helpers for generating configuration stubs.}
|
12
|
+
gem.summary = %q{Quickly add "rc" capabilities into your ruby applications.}
|
13
|
+
gem.homepage = "http://github.com/theablefew/ablerc"
|
14
|
+
|
15
|
+
gem.add_dependency "hashie"
|
16
|
+
gem.add_dependency "rainbow"
|
17
|
+
gem.add_dependency "activesupport"
|
18
|
+
#gem.add_development_dependency ""
|
19
|
+
|
20
|
+
gem.files = `git ls-files`.split($/)
|
21
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
22
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
23
|
+
gem.require_paths = ["lib"]
|
24
|
+
end
|
data/lib/ablerc.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
require "ablerc/version"
|
2
|
+
require "active_support/core_ext"
|
3
|
+
require "rainbow"
|
4
|
+
|
5
|
+
module Ablerc
|
6
|
+
autoload :Option, 'ablerc/option'
|
7
|
+
autoload :DSL, 'ablerc/dsl'
|
8
|
+
autoload :Context, 'ablerc/context'
|
9
|
+
autoload :Configuration, 'ablerc/configuration'
|
10
|
+
autoload :StubGenerator, 'ablerc/stub_generator'
|
11
|
+
autoload :Errors, 'ablerc/errors'
|
12
|
+
|
13
|
+
|
14
|
+
ABLE_RC_FILE = 'able.rc'
|
15
|
+
|
16
|
+
|
17
|
+
mattr_accessor :scheme
|
18
|
+
self.scheme = []
|
19
|
+
|
20
|
+
|
21
|
+
mattr_accessor :options
|
22
|
+
self.options = []
|
23
|
+
|
24
|
+
|
25
|
+
mattr_accessor :rc_file_name
|
26
|
+
self.rc_file_name = ''
|
27
|
+
|
28
|
+
|
29
|
+
mattr_accessor :dsl
|
30
|
+
self.dsl = Ablerc::DSL.new
|
31
|
+
|
32
|
+
|
33
|
+
mattr_accessor :contexts
|
34
|
+
self.contexts = Ablerc::Context
|
35
|
+
|
36
|
+
|
37
|
+
mattr_accessor :stub_options
|
38
|
+
self.stub_options = {}
|
39
|
+
|
40
|
+
|
41
|
+
class << self
|
42
|
+
|
43
|
+
|
44
|
+
# Iniatializes Ablerc with values from DSL
|
45
|
+
def setup(&block)
|
46
|
+
Ablerc.dsl.instance_eval(&block)
|
47
|
+
scheme.each { |c| dsl.context(c, Ablerc::Context::DEFAULTS[c]) unless contexts.exists? c}
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
# Exposes option values from parsed rc files.
|
52
|
+
# Aliased as <tt>#config</tt>
|
53
|
+
def configuration
|
54
|
+
Ablerc::Configuration.instance
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
alias :config :configuration
|
59
|
+
|
60
|
+
|
61
|
+
# Prepares a stub rcfile with defined options
|
62
|
+
def stub
|
63
|
+
Ablerc::StubGenerator.new({:options => options}.merge(stub_options))
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
# Loads the rc files in the order and locations specified by scheme
|
68
|
+
def load_scheme
|
69
|
+
raise RcFileMissing, "You must provide a value to rc_file_name" if rc_file_name.blank?
|
70
|
+
self.scheme.each do |scheme|
|
71
|
+
configuration.load File.expand_path(File.join( contexts[scheme].path, rc_file_name))
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def load!(path)
|
76
|
+
load_able_rc! File.expand_path( File.join( path, ABLE_RC_FILE))
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
|
82
|
+
def gem_root
|
83
|
+
File.expand_path '../..', __FILE__
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
def load_able_rc!(path)
|
88
|
+
instance_eval(File.read( path ))
|
89
|
+
load_scheme
|
90
|
+
return configuration
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# Immediatly load options and rc file configurations
|
95
|
+
#load_able_rc!
|
96
|
+
|
97
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'hashie/mash'
|
2
|
+
require 'singleton'
|
3
|
+
|
4
|
+
module Ablerc
|
5
|
+
# Represents an rc file which consists
|
6
|
+
# of a series of key value pairs
|
7
|
+
class Configuration
|
8
|
+
include Singleton
|
9
|
+
attr_accessor :store
|
10
|
+
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def load(path); self.instance.load(path); end
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def read_values(&rc_file)
|
18
|
+
rc_file.call
|
19
|
+
yield(self)
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
@store ||= Hashie::Mash.new
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def method_missing(method, *args, &block)
|
29
|
+
store.send(method, *args, &block)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def load(path)
|
34
|
+
return unless File.exists? path
|
35
|
+
self.instance_eval do
|
36
|
+
File.read(File.expand_path(path)).each_line do |line|
|
37
|
+
next if line =~ /^[?\s]*\#/ || line.blank?
|
38
|
+
store.instance_eval("self."+line)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'hashie/mash'
|
2
|
+
module Ablerc
|
3
|
+
class Context
|
4
|
+
|
5
|
+
DEFAULTS = {global: {path: '/etc/'},
|
6
|
+
user: {path: '~/'},
|
7
|
+
local: {path: './'}}
|
8
|
+
|
9
|
+
|
10
|
+
attr_accessor :path, :name
|
11
|
+
|
12
|
+
|
13
|
+
def initialize(name, options={})
|
14
|
+
@name = name
|
15
|
+
@path = options.delete(:path)
|
16
|
+
Ablerc::Context << self
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
class << self
|
21
|
+
|
22
|
+
@@contexts = Hashie::Mash.new
|
23
|
+
|
24
|
+
|
25
|
+
def <<(context)
|
26
|
+
@@contexts.merge!(context.name => context)
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def paths
|
31
|
+
@@contexts.collect { |name, context| context.path }
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def list
|
36
|
+
@@contexts
|
37
|
+
end
|
38
|
+
|
39
|
+
def names
|
40
|
+
@@contexts.keys
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def exists?(context)
|
45
|
+
@@contexts.has_key? context
|
46
|
+
end
|
47
|
+
|
48
|
+
def method_missing(method_name, *args, &block)
|
49
|
+
@@contexts.send(method_name, *args, &block) || super
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/ablerc/dsl.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
module Ablerc
|
2
|
+
class DSL
|
3
|
+
|
4
|
+
|
5
|
+
# The name of the file to be used for the configuration of this app
|
6
|
+
# Include a dot if you expect hidden file behavior.
|
7
|
+
def rc_file_name(file_name)
|
8
|
+
Ablerc.rc_file_name = file_name
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
# Describes the order in which configuration files are loaded.
|
13
|
+
# Default is <tt>:global</tt>, <tt>:user</tt>, <tt>:local</tt> which
|
14
|
+
# will search for <tt>rc_file_name</tt> in these directories:
|
15
|
+
# /etc/.ablerc
|
16
|
+
# ~/.ablerc
|
17
|
+
# ./.ablerc
|
18
|
+
#
|
19
|
+
# Configuration options cascade and override previously loaded options.
|
20
|
+
# scheme :global, :user, :local
|
21
|
+
def scheme(*contexts)
|
22
|
+
Ablerc.scheme = contexts
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
# Describe the options available
|
27
|
+
#
|
28
|
+
# ==== Parameters
|
29
|
+
# * <tt>name</tt> - A valid name for the option
|
30
|
+
# * <tt>behaviors</tt> - Behaviors used to for this option
|
31
|
+
# * <tt>block</tt> - A proc that should be run against the option value.
|
32
|
+
# ==== Options
|
33
|
+
# * <tt>allow</tt> - The option value must be in this list
|
34
|
+
# * <tt>boolean</tt> - The option will accept <tt>true</tt>, <tt>false</tt>, <tt>0</tt>, <tt>1</tt>
|
35
|
+
def option(name, behaviors = {}, &block)
|
36
|
+
Ablerc.options << Ablerc::Option.new(name, behaviors, &block)
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def context(name, options)
|
41
|
+
Ablerc::Context.new(name, options)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Configures stub options for #generate
|
45
|
+
#
|
46
|
+
# ==== Options
|
47
|
+
# * <tt>header</tt> - Text to be included at the beginning of the rc file
|
48
|
+
# * <tt>footer</tt> - Text to be included at the end of the rc file
|
49
|
+
def stub(options)
|
50
|
+
Ablerc.stub_options = options
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
def method_missing(method_name, *args, &block)
|
55
|
+
raise "You tried to call the method #{method_name}. There is no such method."
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
def respond_to? *args; super; end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'hashie/dash'
|
2
|
+
module Ablerc
|
3
|
+
|
4
|
+
|
5
|
+
# An option is a declared attribute within an rc file,
|
6
|
+
# in other words, an uncommented key-value pair.
|
7
|
+
#
|
8
|
+
# Options define how an attribute behaves (via behavior
|
9
|
+
# parameters), which are used to validate, explain and
|
10
|
+
# control default values for the option.
|
11
|
+
class Option < Hashie::Dash
|
12
|
+
|
13
|
+
|
14
|
+
property :name, :required => true
|
15
|
+
attr_accessor :allows, :refuses, :boolean, :description, :default, :disabled
|
16
|
+
|
17
|
+
# Initialize the option
|
18
|
+
#
|
19
|
+
# ==== Parameters
|
20
|
+
# * <tt>name</tt> - A valid name for the option
|
21
|
+
# * <tt>behaviors</tt> - Behaviors used to for this option
|
22
|
+
# * <tt>block</tt> - A proc that should be run against the option value.
|
23
|
+
# ==== Options
|
24
|
+
# * <tt>allow</tt> - The option value must be in this list
|
25
|
+
# * <tt>boolean</tt> - The option will accept <tt>true</tt>, <tt>false</tt>, <tt>0</tt>, <tt>1</tt>
|
26
|
+
def initialize(name, behaviors = {}, &block)
|
27
|
+
self.name = name
|
28
|
+
extract_behaviors( behaviors )
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def to_stub
|
33
|
+
stub = "## #{name}\n"
|
34
|
+
stub << "# #{description}\n" unless description.nil?
|
35
|
+
stub << "#{entry_for_refuse_allow_behavior}\n" unless refuses.nil? and allows.nil?
|
36
|
+
stub << "#{entry_for_key_value}\n"
|
37
|
+
stub << "\n"
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def entry_for_key_value
|
43
|
+
line = ""
|
44
|
+
line << "# Default: #{default}\n" unless default.nil?
|
45
|
+
line << "#" if disabled
|
46
|
+
line << "#{name} = "
|
47
|
+
line << default unless default.nil?
|
48
|
+
line
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def entry_for_boolean
|
53
|
+
line = ""
|
54
|
+
line << "# Accepts boolean values of true, false, 0 or 1" unless boolean.nil?
|
55
|
+
line
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
def entry_for_refuse_allow_behavior
|
60
|
+
line = ""
|
61
|
+
line << "# Allows \n# #{allows.join(',')}" unless allows.nil?
|
62
|
+
line << "# Refuses \n# #{refuses.join(',')}" unless refuses.nil?
|
63
|
+
line
|
64
|
+
end
|
65
|
+
|
66
|
+
def extract_behaviors(behaviors)
|
67
|
+
behaviors.tap do |b|
|
68
|
+
self.allows = b.delete :allow
|
69
|
+
self.refuses = b.delete :refuses
|
70
|
+
self.boolean = b.delete :boolean
|
71
|
+
self.description = b.delete :description
|
72
|
+
self.default = b.delete :default
|
73
|
+
self.disabled = b.delete(:disabled) || true
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Ablerc
|
2
|
+
class StubGenerator
|
3
|
+
|
4
|
+
attr_accessor :options, :path, :header, :footer
|
5
|
+
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
self.header = options.delete :header
|
9
|
+
self.footer = options.delete :footer
|
10
|
+
self.options = options.delete :options
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def generate(context = nil)
|
15
|
+
begin
|
16
|
+
context ||= Ablerc.contexts.names.last.to_sym
|
17
|
+
path = File.expand_path(Ablerc.contexts.send(context.to_sym).path)
|
18
|
+
rescue
|
19
|
+
raise "Context does not exist"
|
20
|
+
end
|
21
|
+
|
22
|
+
puts "Generating Stub for #{context} in #{path + '/' + Ablerc.rc_file_name}".color :green
|
23
|
+
|
24
|
+
begin
|
25
|
+
File.open(path + '/' + Ablerc.rc_file_name, 'w') do |rc_file|
|
26
|
+
rc_file << header.to_s unless header.nil?
|
27
|
+
self.options.each do |option|
|
28
|
+
rc_file << option.to_stub
|
29
|
+
end
|
30
|
+
rc_file << footer.to_s unless footer.nil?
|
31
|
+
end
|
32
|
+
rescue e
|
33
|
+
puts "Error".color :red
|
34
|
+
puts e
|
35
|
+
end
|
36
|
+
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def write_description(description)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ablerc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Spencer Markowski
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-01-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: hashie
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rainbow
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: activesupport
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
description: Provides cascading configuration files and helpers for generating configuration
|
63
|
+
stubs.
|
64
|
+
email:
|
65
|
+
- spencer@theablefew.com
|
66
|
+
executables: []
|
67
|
+
extensions: []
|
68
|
+
extra_rdoc_files: []
|
69
|
+
files:
|
70
|
+
- .gitignore
|
71
|
+
- Gemfile
|
72
|
+
- LICENSE.txt
|
73
|
+
- README.md
|
74
|
+
- Rakefile
|
75
|
+
- ablerc.gemspec
|
76
|
+
- lib/ablerc.rb
|
77
|
+
- lib/ablerc/configuration.rb
|
78
|
+
- lib/ablerc/context.rb
|
79
|
+
- lib/ablerc/dsl.rb
|
80
|
+
- lib/ablerc/errors.rb
|
81
|
+
- lib/ablerc/option.rb
|
82
|
+
- lib/ablerc/stub_generator.rb
|
83
|
+
- lib/ablerc/version.rb
|
84
|
+
homepage: http://github.com/theablefew/ablerc
|
85
|
+
licenses: []
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options: []
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
requirements: []
|
103
|
+
rubyforge_project:
|
104
|
+
rubygems_version: 1.8.24
|
105
|
+
signing_key:
|
106
|
+
specification_version: 3
|
107
|
+
summary: Quickly add "rc" capabilities into your ruby applications.
|
108
|
+
test_files: []
|