config_files 0.0.4

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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/config_files.rb +61 -0
  3. data/lib/meta.rb +12 -0
  4. metadata +45 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ba83f6bade45d06bfa8a9ea74ba48915cfa9c908790f635aea7c53e5e12ffb2d
4
+ data.tar.gz: 969daeff600eb0fd4e6e084e33b3d83159e9aded3cae3df02f46528c073182dd
5
+ SHA512:
6
+ metadata.gz: 70ad5d3313cb4a8a623bf07a0a113ab945b0ef729393d474cb076a392c5d5dbcdb5e87cc7c8dc4da0118a7f64afa31e4a5c8987f08185982590127fb94e9b731
7
+ data.tar.gz: 15b8aa187cdcd0ce70123ad2c98eb8a7f30652fac7455ea8a7792b570847f7b3923668b415dca9a9f6fbc9db89e008299e22dd7ca694a4d18fdd6fcf29f8548d
@@ -0,0 +1,61 @@
1
+ require 'meta'
2
+ require 'yaml'
3
+ module ConfigFiles
4
+
5
+ class << self
6
+ def included(base)
7
+ base.class_eval do
8
+ extend ClassMethods
9
+ end
10
+ end
11
+ end
12
+
13
+ module ClassMethods
14
+ include Meta
15
+ attr_accessor :directories
16
+
17
+ def yaml_extension
18
+ '.yml'
19
+ end
20
+
21
+ def config_key
22
+ :etc
23
+ end
24
+
25
+ def config_directories(*arr)
26
+ self.directories||={ :etc => ['etc', '/etc'] }
27
+ arr.each do |directory_list|
28
+ directory_list.each do |key, value|
29
+ self.directories[key]=value.map { |dir| File.expand_path(dir) }
30
+ meta_def("#{key}_dir") { @directories[key] }
31
+ end
32
+ end
33
+ end
34
+
35
+ def static_config_files(*arr)
36
+ arr.each do |file|
37
+ content=YAML.load_file(config_file(file))
38
+ meta_def(file) { content }
39
+ end
40
+ end
41
+
42
+ def dynamic_config_files(*arr)
43
+ arr.each do |file|
44
+ meta_def(file) { YAML.load_file(config_file(file)) }
45
+ end
46
+ end
47
+
48
+ alias_method :config_files, :dynamic_config_files
49
+
50
+ private
51
+ def first_directory(file, key=config_key)
52
+ self.directories[key].find { |directory|
53
+ File.exists?(File.join(directory, "#{file}#{yaml_extension}"))
54
+ } || (raise Errno::ENOENT, "No #{file}#{yaml_extension} in #{self.directories[key]}")
55
+ end
56
+
57
+ def config_file(file, key=config_key)
58
+ File.join(first_directory(file, key), "#{file}#{yaml_extension}")
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,12 @@
1
+ # @author Paul McKibbin based on meta definitions by _why_the_lucky_stiff_
2
+ module Meta
3
+ def meta_self
4
+ class << self
5
+ self
6
+ end
7
+ end
8
+
9
+ def meta_def name, &blk
10
+ meta_self.instance_eval { define_method name, &blk }
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: config_files
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Paul McKibbin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-04-08 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A configuration tool for using multiple configuration files with multiple
14
+ formats by presenting them as a hash.
15
+ email: pmckibbin@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/config_files.rb
21
+ - lib/meta.rb
22
+ homepage: https://github.com/blackrat/config_files
23
+ licenses: []
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.6.14
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Configuration File Manager
45
+ test_files: []