yaml_extend 1.2.0 → 1.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 053aef54e93b410f7b2eb373834abff17b4f1a2627d292f2eacb479fb78d4d9b
4
- data.tar.gz: 70dd53ab46254a6dfed23530c74e3668d14a81844792ac980d4c03b0fb141d24
3
+ metadata.gz: e62864fb3a63fe8c957b6fc2a2432eeb67da44c5ff278aa00a4a9935c37fd7fd
4
+ data.tar.gz: 8156d6c5bd7d13d6753fbaecd86eb07f5e59791f7fa4bb790c0e3b1232408a6f
5
5
  SHA512:
6
- metadata.gz: 390f032971732ece98f75c58bf471da9ce8085918cbedcf40fd840087a30e45da8a0db7df2fc06030d965ac9b0dae170f2745cdcacb09cf30b2acbcfe9d4118a
7
- data.tar.gz: de9bfd1e7e9e2bf45f6783f387284720fdc54db997a6ba9f0eacf4b03a57f6fd2deb9c3596b868e81695da39873c277beefaee3d99ad7b31ffee103d4e208cfd
6
+ metadata.gz: 54a2f706e91c582c96a03c41567395a783bda1690adaff69866777f5dc77cb70da340055ff27b9a9219bf2cb361c54b52c49c297327d48b315d085d9b1eda900
7
+ data.tar.gz: c955e1c7c7055fb626fa13b8f77f916107ad67478a76758b3c9251dc0245ed84bed77c431ccce690014a4da6e54d872b0420f788f32b8fde334e127859f1e80e
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # yaml_extend
2
- ![Gem](https://img.shields.io/gem/v/yaml_extend?color=default&style=plastic&logo=ruby&logoColor=red)
3
- ![Gem](https://img.shields.io/gem/dt/yaml_extend?color=blue&style=plastic)
2
+ [![Gem](https://img.shields.io/gem/v/yaml_extend?color=default&style=plastic&logo=ruby&logoColor=red)](https://rubygems.org/gems/yaml_extend)
3
+ ![downloads](https://img.shields.io/gem/dt/yaml_extend?color=blue&style=plastic)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-gold.svg?style=plastic&logo=mit)](LICENSE)
5
5
 
6
6
  > Extends YAML to support file based inheritance.
@@ -9,22 +9,19 @@ That can be very handy to build a configuration hierarchy.
9
9
 
10
10
  Basic support for ERB (embedded ruby) is included and automatically applied when config files are named `*.erb` or `*.erb.*`.
11
11
 
12
- ## Installation
12
+ If you are just doing administration without knowing ruby, you can also just use the command line tool that is included to use this librarys features. Ensure, that [ruby](https://www.ruby-lang.org/) is installed on your system, before following further instructions.
13
13
 
14
- Add this line to your application's Gemfile:
14
+ ### Contents
15
+ * [Common information](#common-information)
16
+ * [Installation](#installation)
17
+ * [Usage](#usage)
18
+ * [Command line](#command-line)
19
+ * [Documentation](#documentation)
20
+ * [Contributing](#contributing)
15
21
 
16
- ```ruby
17
- gem 'yaml_extend'
18
- ```
19
22
 
20
- And then execute:
21
23
 
22
- $ bundle install
23
-
24
- Or install it yourself as:
25
-
26
- $ gem install yaml_extend
27
-
24
+ <a name="common-information"></a>
28
25
  ## Common information
29
26
 
30
27
  It is possible to build inheritance trees like:
@@ -52,6 +49,32 @@ The files to inherit from are specified by the key 'extends:' in the YAML file.
52
49
  That key can be customized if you prefer another one.
53
50
  See the examples below.
54
51
 
52
+
53
+
54
+
55
+ <a name="installation"></a>
56
+ ## Installation
57
+ ### Ruby
58
+ Add this line to your application's Gemfile:
59
+
60
+ ```ruby
61
+ gem 'yaml_extend'
62
+ ```
63
+
64
+ And then execute:
65
+
66
+ $ bundle install
67
+
68
+ ### Command line
69
+ If you just want to use the command line then run
70
+
71
+ $ gem install yaml_extend
72
+
73
+
74
+
75
+
76
+
77
+ <a name="usage"></a>
55
78
  ## Usage
56
79
  yaml_extend adds the method YAML.ext_load_file to YAML.
57
80
 
@@ -155,6 +178,29 @@ foo: 'bar'
155
178
  config = YAML.ext_load_file 'custom2.yml', ['options','extend_file']
156
179
  ```
157
180
 
181
+
182
+
183
+ <a name="command-line"></a>
184
+ ## Command line
185
+
186
+ `yaml_extend` is also available on the command line after installation.
187
+
188
+ To parse and merge a prepared YAML file, just run
189
+
190
+ ```
191
+ yaml_extend path/to/my/yaml_file.yml
192
+ ```
193
+
194
+ Usually you might want to put the result into resulting YAML file. So just use the basic command line features to do so:
195
+
196
+
197
+ ```
198
+ yaml_extend path/to/my/yaml_file.yml > combined_yaml.yml
199
+ ```
200
+
201
+
202
+
203
+ <a name="documentation"></a>
158
204
  ## Documentation
159
205
  ```ruby
160
206
  YAML.ext_load_file(yaml_path, inheritance_key='extends', options = {})
@@ -177,7 +223,9 @@ YAML.ext_load_file(yaml_path, inheritance_key='extends', options = {})
177
223
 
178
224
  See also rubydoc at [https://www.rubydoc.info/gems/yaml_extend](https://www.rubydoc.info/gems/yaml_extend)
179
225
 
180
- ## Contributing
181
226
 
227
+
228
+ <a name="documentation"></a>
229
+ ## Contributing
182
230
  Bug reports and pull requests are welcome on GitHub at https://github.com/magynhard/yaml_extend. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
183
231
 
data/bin/yaml_extend ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'yaml_extend'
4
+
5
+ arg = ARGV[0]
6
+
7
+ if %w[help -h --help].include?(arg) || arg.nil? || arg == ''
8
+ puts <<-TEXT
9
+
10
+ yaml_extend #{YamlExtend::VERSION}
11
+ https://github.com/magynhard/yaml_extend
12
+
13
+ yaml_extend -h --help # show this info
14
+ yaml_extend <file> # parse and output given file
15
+
16
+ TEXT
17
+ else
18
+ puts YAML.ext_load_file(arg).to_yaml
19
+ end
@@ -0,0 +1,2 @@
1
+ @ECHO OFF
2
+ @"%~dp0ruby.exe" "%~dpn0" %*
@@ -1,3 +1,3 @@
1
1
  module YamlExtend
2
- VERSION = '1.2.0'.freeze
2
+ VERSION = '1.3.0'.freeze
3
3
  end
data/lib/yaml_extend.rb CHANGED
@@ -15,15 +15,15 @@ module YAML
15
15
  @@ext_load_key = nil
16
16
 
17
17
  DEEP_MERGE_OPTIONS = [
18
- :preserve_unmergeables,
19
- :knockout_prefix,
20
- :overwrite_arrays,
21
- :sort_merged_arrays,
22
- :unpack_arrays,
23
- :merge_hash_arrays,
24
- :extend_existing_arrays,
25
- :merge_nil_values,
26
- :merge_debug,
18
+ :preserve_unmergeables,
19
+ :knockout_prefix,
20
+ :overwrite_arrays,
21
+ :sort_merged_arrays,
22
+ :unpack_arrays,
23
+ :merge_hash_arrays,
24
+ :extend_existing_arrays,
25
+ :merge_nil_values,
26
+ :merge_debug,
27
27
  ]
28
28
 
29
29
  #
@@ -86,19 +86,19 @@ module YAML
86
86
  yaml_path = yaml_path.to_s
87
87
  # backward compatibility to 1.0.1
88
88
  if options == true || options == false
89
- options = {extend_existing_arrays: options}
89
+ options = { extend_existing_arrays: options }
90
90
  end
91
91
  default_options = {
92
- preserve_inheritance_key: false,
93
- preserve_unmergeables: false,
94
- knockout_prefix: nil,
95
- overwrite_arrays: false,
96
- sort_merged_arrays: false,
97
- unpack_arrays: nil,
98
- merge_hash_arrays: false,
99
- extend_existing_arrays: true,
100
- merge_nil_values: false,
101
- merge_debug: false,
92
+ preserve_inheritance_key: false,
93
+ preserve_unmergeables: false,
94
+ knockout_prefix: nil,
95
+ overwrite_arrays: false,
96
+ sort_merged_arrays: false,
97
+ unpack_arrays: nil,
98
+ merge_hash_arrays: false,
99
+ extend_existing_arrays: true,
100
+ merge_nil_values: false,
101
+ merge_debug: false,
102
102
  }
103
103
  options = default_options.merge options
104
104
  private_class_method
@@ -111,9 +111,17 @@ module YAML
111
111
 
112
112
  super_config =
113
113
  if yaml_path.match(/(\.erb\.|\.erb$)/)
114
- YAML.unsafe_load(ERB.new(File.read(yaml_path)).result)
114
+ if YAML.respond_to? :unsafe_load # backward compatibility for Ruby 3.1 / Psych 4
115
+ YAML.unsafe_load(ERB.new(File.read(yaml_path)).result)
116
+ else
117
+ YAML.load(ERB.new(File.read(yaml_path)).result)
118
+ end
115
119
  else
116
- YAML.unsafe_load_file(File.open(yaml_path))
120
+ if YAML.respond_to? :unsafe_load_file # backward compatibility for Ruby 3.1 / Psych 4
121
+ YAML.unsafe_load_file(File.open(yaml_path))
122
+ else
123
+ YAML.load_file(File.open(yaml_path))
124
+ end
117
125
  end
118
126
 
119
127
  super_inheritance_files = yaml_value_by_key inheritance_key, super_config
@@ -149,7 +157,8 @@ module YAML
149
157
  # [2] is the external caller of YAML.ext_load_file
150
158
  base_path = if defined?(caller_locations)
151
159
  File.dirname(caller_locations[2].path)
152
- else # Fallback for ruby < 2.1.10
160
+ else
161
+ # Fallback for ruby < 2.1.10
153
162
  File.dirname(caller[2])
154
163
  end
155
164
  return base_path + '/' + file_path if File.exist? base_path + '/' + file_path # relative path from yaml file
@@ -165,7 +174,7 @@ module YAML
165
174
  def self.absolute_path?(path)
166
175
  private_class_method
167
176
  path.start_with?('/') || # unix like
168
- (path.length >= 3 && path[1] == ':') # ms windows
177
+ (path.length >= 3 && path[1] == ':') # ms windows
169
178
  end
170
179
 
171
180
  # Return the value of the corresponding key
@@ -187,7 +196,7 @@ module YAML
187
196
 
188
197
  def self.valid_key_type?(key)
189
198
  key.is_a?(Array) || key.is_a?(String) ||
190
- raise(InvalidKeyTypeError, "Invalid key of type '#{key.class.name}'. Valid types are String and Array.")
199
+ raise(InvalidKeyTypeError, "Invalid key of type '#{key.class.name}'. Valid types are String and Array.")
191
200
  end
192
201
 
193
202
  def self.delete_yaml_key(key, config)
data/yaml_extend.gemspec CHANGED
@@ -6,6 +6,7 @@ require 'yaml_extend/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "yaml_extend"
8
8
  spec.version = YamlExtend::VERSION
9
+ spec.executables = %w[yaml_extend]
9
10
  spec.authors = ["Matthäus Beyrle"]
10
11
  spec.email = ["yaml_extend.gemspec@mail.magynhard.de"]
11
12
 
@@ -25,7 +26,7 @@ Gem::Specification.new do |spec|
25
26
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
26
27
  f.match(%r{^(test|spec|features)/})
27
28
  end
28
- spec.bindir = 'exe'
29
+
29
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
31
  spec.require_paths = ['lib']
31
32
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml_extend
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthäus Beyrle
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-19 00:00:00.000000000 Z
11
+ date: 2023-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deep_merge
@@ -83,6 +83,8 @@ files:
83
83
  - Rakefile
84
84
  - bin/console
85
85
  - bin/setup
86
+ - bin/yaml_extend
87
+ - bin/yaml_extend.bat
86
88
  - lib/custom_errors/invalid_key_type_error.rb
87
89
  - lib/yaml_extend.rb
88
90
  - lib/yaml_extend/version.rb
@@ -107,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
109
  - !ruby/object:Gem::Version
108
110
  version: '0'
109
111
  requirements: []
110
- rubygems_version: 3.3.7
112
+ rubygems_version: 3.1.4
111
113
  signing_key:
112
114
  specification_version: 4
113
115
  summary: Extends YAML to support file based inheritance