pdk 2.3.0 → 2.4.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.
Files changed (153) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1329 -1321
  3. data/LICENSE +201 -201
  4. data/README.md +163 -163
  5. data/exe/pdk +10 -10
  6. data/lib/pdk/analytics/client/google_analytics.rb +143 -143
  7. data/lib/pdk/analytics/client/noop.rb +25 -25
  8. data/lib/pdk/analytics/util.rb +19 -19
  9. data/lib/pdk/analytics.rb +30 -30
  10. data/lib/pdk/answer_file.rb +12 -12
  11. data/lib/pdk/bolt.rb +19 -19
  12. data/lib/pdk/cli/build.rb +82 -82
  13. data/lib/pdk/cli/bundle.rb +48 -48
  14. data/lib/pdk/cli/config/get.rb +26 -26
  15. data/lib/pdk/cli/config.rb +22 -22
  16. data/lib/pdk/cli/console.rb +148 -148
  17. data/lib/pdk/cli/convert.rb +52 -52
  18. data/lib/pdk/cli/env.rb +52 -52
  19. data/lib/pdk/cli/errors.rb +25 -25
  20. data/lib/pdk/cli/exec/command.rb +293 -293
  21. data/lib/pdk/cli/exec/interactive_command.rb +114 -114
  22. data/lib/pdk/cli/exec.rb +84 -84
  23. data/lib/pdk/cli/exec_group.rb +104 -104
  24. data/lib/pdk/cli/get/config.rb +24 -24
  25. data/lib/pdk/cli/get.rb +20 -20
  26. data/lib/pdk/cli/module/build.rb +12 -12
  27. data/lib/pdk/cli/module/generate.rb +47 -47
  28. data/lib/pdk/cli/module.rb +14 -14
  29. data/lib/pdk/cli/new/class.rb +32 -32
  30. data/lib/pdk/cli/new/defined_type.rb +32 -32
  31. data/lib/pdk/cli/new/fact.rb +29 -29
  32. data/lib/pdk/cli/new/function.rb +29 -29
  33. data/lib/pdk/cli/new/module.rb +53 -53
  34. data/lib/pdk/cli/new/provider.rb +29 -29
  35. data/lib/pdk/cli/new/task.rb +34 -34
  36. data/lib/pdk/cli/new/test.rb +52 -52
  37. data/lib/pdk/cli/new/transport.rb +27 -27
  38. data/lib/pdk/cli/new.rb +21 -21
  39. data/lib/pdk/cli/release/prep.rb +39 -39
  40. data/lib/pdk/cli/release/publish.rb +50 -50
  41. data/lib/pdk/cli/release.rb +194 -194
  42. data/lib/pdk/cli/remove/config.rb +80 -80
  43. data/lib/pdk/cli/remove.rb +20 -20
  44. data/lib/pdk/cli/set/config.rb +119 -119
  45. data/lib/pdk/cli/set.rb +20 -20
  46. data/lib/pdk/cli/test/unit.rb +90 -90
  47. data/lib/pdk/cli/test.rb +11 -11
  48. data/lib/pdk/cli/update.rb +64 -64
  49. data/lib/pdk/cli/util/command_redirector.rb +27 -27
  50. data/lib/pdk/cli/util/interview.rb +72 -72
  51. data/lib/pdk/cli/util/option_normalizer.rb +55 -55
  52. data/lib/pdk/cli/util/option_validator.rb +68 -68
  53. data/lib/pdk/cli/util/spinner.rb +13 -13
  54. data/lib/pdk/cli/util/update_manager_printer.rb +82 -82
  55. data/lib/pdk/cli/util.rb +305 -305
  56. data/lib/pdk/cli/validate.rb +116 -116
  57. data/lib/pdk/cli.rb +175 -175
  58. data/lib/pdk/config/analytics_schema.json +26 -26
  59. data/lib/pdk/config/errors.rb +5 -5
  60. data/lib/pdk/config/ini_file.rb +183 -183
  61. data/lib/pdk/config/ini_file_setting.rb +39 -39
  62. data/lib/pdk/config/json.rb +34 -34
  63. data/lib/pdk/config/json_schema_namespace.rb +142 -142
  64. data/lib/pdk/config/json_schema_setting.rb +53 -53
  65. data/lib/pdk/config/json_with_schema.rb +49 -49
  66. data/lib/pdk/config/namespace.rb +354 -354
  67. data/lib/pdk/config/setting.rb +135 -135
  68. data/lib/pdk/config/validator.rb +31 -31
  69. data/lib/pdk/config/yaml.rb +46 -46
  70. data/lib/pdk/config/yaml_with_schema.rb +59 -59
  71. data/lib/pdk/config.rb +390 -390
  72. data/lib/pdk/context/control_repo.rb +60 -60
  73. data/lib/pdk/context/module.rb +28 -28
  74. data/lib/pdk/context/none.rb +22 -22
  75. data/lib/pdk/context.rb +99 -99
  76. data/lib/pdk/control_repo.rb +90 -90
  77. data/lib/pdk/generate/defined_type.rb +43 -43
  78. data/lib/pdk/generate/fact.rb +25 -25
  79. data/lib/pdk/generate/function.rb +48 -48
  80. data/lib/pdk/generate/module.rb +352 -352
  81. data/lib/pdk/generate/provider.rb +28 -28
  82. data/lib/pdk/generate/puppet_class.rb +43 -43
  83. data/lib/pdk/generate/puppet_object.rb +232 -232
  84. data/lib/pdk/generate/task.rb +68 -68
  85. data/lib/pdk/generate/transport.rb +33 -33
  86. data/lib/pdk/generate.rb +24 -24
  87. data/lib/pdk/i18n.rb +4 -4
  88. data/lib/pdk/logger.rb +45 -45
  89. data/lib/pdk/module/build.rb +322 -322
  90. data/lib/pdk/module/convert.rb +296 -296
  91. data/lib/pdk/module/metadata.rb +202 -202
  92. data/lib/pdk/module/release.rb +260 -260
  93. data/lib/pdk/module/update.rb +131 -131
  94. data/lib/pdk/module/update_manager.rb +227 -227
  95. data/lib/pdk/module.rb +30 -30
  96. data/lib/pdk/report/event.rb +370 -370
  97. data/lib/pdk/report.rb +121 -121
  98. data/lib/pdk/template/fetcher/git.rb +85 -85
  99. data/lib/pdk/template/fetcher/local.rb +28 -28
  100. data/lib/pdk/template/fetcher.rb +98 -98
  101. data/lib/pdk/template/renderer/v1/legacy_template_dir.rb +116 -116
  102. data/lib/pdk/template/renderer/v1/renderer.rb +132 -132
  103. data/lib/pdk/template/renderer/v1/template_file.rb +102 -102
  104. data/lib/pdk/template/renderer/v1.rb +25 -25
  105. data/lib/pdk/template/renderer.rb +96 -96
  106. data/lib/pdk/template/template_dir.rb +67 -67
  107. data/lib/pdk/template.rb +59 -59
  108. data/lib/pdk/tests/unit.rb +252 -252
  109. data/lib/pdk/util/bundler.rb +259 -259
  110. data/lib/pdk/util/changelog_generator.rb +137 -137
  111. data/lib/pdk/util/env.rb +47 -47
  112. data/lib/pdk/util/filesystem.rb +138 -138
  113. data/lib/pdk/util/git.rb +179 -179
  114. data/lib/pdk/util/json_finder.rb +85 -85
  115. data/lib/pdk/util/puppet_strings.rb +125 -125
  116. data/lib/pdk/util/puppet_version.rb +266 -266
  117. data/lib/pdk/util/ruby_version.rb +179 -179
  118. data/lib/pdk/util/template_uri.rb +295 -295
  119. data/lib/pdk/util/vendored_file.rb +93 -93
  120. data/lib/pdk/util/version.rb +43 -43
  121. data/lib/pdk/util/windows/api_types.rb +82 -82
  122. data/lib/pdk/util/windows/file.rb +36 -36
  123. data/lib/pdk/util/windows/process.rb +79 -79
  124. data/lib/pdk/util/windows/string.rb +16 -16
  125. data/lib/pdk/util/windows.rb +15 -15
  126. data/lib/pdk/util.rb +278 -277
  127. data/lib/pdk/validate/control_repo/control_repo_validator_group.rb +23 -23
  128. data/lib/pdk/validate/control_repo/environment_conf_validator.rb +98 -98
  129. data/lib/pdk/validate/external_command_validator.rb +208 -208
  130. data/lib/pdk/validate/internal_ruby_validator.rb +100 -100
  131. data/lib/pdk/validate/invokable_validator.rb +228 -228
  132. data/lib/pdk/validate/metadata/metadata_json_lint_validator.rb +86 -86
  133. data/lib/pdk/validate/metadata/metadata_syntax_validator.rb +78 -78
  134. data/lib/pdk/validate/metadata/metadata_validator_group.rb +20 -20
  135. data/lib/pdk/validate/puppet/puppet_epp_validator.rb +133 -133
  136. data/lib/pdk/validate/puppet/puppet_lint_validator.rb +66 -66
  137. data/lib/pdk/validate/puppet/puppet_syntax_validator.rb +137 -137
  138. data/lib/pdk/validate/puppet/puppet_validator_group.rb +21 -21
  139. data/lib/pdk/validate/ruby/ruby_rubocop_validator.rb +80 -80
  140. data/lib/pdk/validate/ruby/ruby_validator_group.rb +19 -19
  141. data/lib/pdk/validate/tasks/tasks_metadata_lint_validator.rb +88 -88
  142. data/lib/pdk/validate/tasks/tasks_name_validator.rb +50 -50
  143. data/lib/pdk/validate/tasks/tasks_validator_group.rb +20 -20
  144. data/lib/pdk/validate/validator.rb +118 -118
  145. data/lib/pdk/validate/validator_group.rb +104 -104
  146. data/lib/pdk/validate/yaml/yaml_syntax_validator.rb +95 -95
  147. data/lib/pdk/validate/yaml/yaml_validator_group.rb +19 -19
  148. data/lib/pdk/validate.rb +94 -94
  149. data/lib/pdk/version.rb +4 -4
  150. data/lib/pdk.rb +76 -76
  151. data/locales/config.yaml +21 -21
  152. data/locales/pdk.pot +2094 -2094
  153. metadata +5 -6
@@ -1,183 +1,183 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- class Config
5
- # Represents a configuration file using the INI file format
6
- class IniFile < Namespace
7
- # Ini Files have very strict valdiation rules which are set in the IniFileSetting class
8
- # @see PDK::Config::Namespace.default_setting_class
9
- def default_setting_class
10
- PDK::Config::IniFileSetting
11
- end
12
-
13
- # Parses an IniFile document.
14
- #
15
- # @see PDK::Config::Namespace.parse_file
16
- def parse_file(filename)
17
- raise unless block_given?
18
- data = load_data(filename)
19
- return if data.nil? || data.empty?
20
-
21
- ini_file = IniFileImpl.parse(data)
22
- ini_file.to_hash.each do |name, value|
23
- begin
24
- new_setting = PDK::Config::IniFileSetting.new(name, self, value)
25
- rescue StandardError
26
- # We just ignore invalid initial settings
27
- new_setting = PDK::Config::IniFileSetting.new(name, self, nil)
28
- end
29
-
30
- yield name, new_setting
31
- end
32
- end
33
-
34
- # Serializes object data into an INI file string.
35
- #
36
- # @see PDK::Config::Namespace.serialize_data
37
- def serialize_data(data)
38
- default_lines = ''
39
- lines = ''
40
- data.each do |name, value|
41
- next if value.nil?
42
- if value.is_a?(Hash)
43
- # Hashes are an INI section
44
- lines += "\n[#{name}]\n"
45
- value.each do |child_name, child_value|
46
- next if child_value.nil?
47
- lines += "#{child_name} = #{munge_serialized_value(child_value)}\n"
48
- end
49
- else
50
- default_lines += "#{name} = #{munge_serialized_value(value)}\n"
51
- end
52
- end
53
-
54
- default_lines + lines
55
- end
56
-
57
- private
58
-
59
- def munge_serialized_value(value)
60
- value = value.to_s unless value.is_a?(String)
61
- # Add enclosing quotes if there's a space in the value
62
- value = '"' + value + '"' if value.include?(' ')
63
- value
64
- end
65
-
66
- # Adapted from https://raw.githubusercontent.com/puppetlabs/puppet/6c257fc7827989c2af2901f974666f0f23611153/lib/puppet/settings/ini_file.rb
67
- # rubocop:disable Style/RegexpLiteral
68
- # rubocop:disable Style/PerlBackrefs
69
- # rubocop:disable Style/RedundantSelf
70
- # rubocop:disable Style/StringLiterals
71
- class IniFileImpl
72
- DEFAULT_SECTION_NAME = 'default_section_name'.freeze
73
-
74
- def self.parse(config_fh)
75
- config = new([DefaultSection.new])
76
- config_fh.each_line do |line|
77
- case line.chomp
78
- when /^(\s*)\[([[:word:]]+)\](\s*)$/
79
- config.append(SectionLine.new($1, $2, $3))
80
- when /^(\s*)([[:word:]]+)(\s*=\s*)(.*?)(\s*)$/
81
- config.append(SettingLine.new($1, $2, $3, $4, $5))
82
- else
83
- config.append(Line.new(line))
84
- end
85
- end
86
-
87
- config
88
- end
89
-
90
- def initialize(lines = [])
91
- @lines = lines
92
- end
93
-
94
- def to_hash
95
- result = {}
96
-
97
- current_section_name = nil
98
- @lines.each do |line|
99
- if line.instance_of?(SectionLine)
100
- current_section_name = line.name
101
- result[current_section_name] = {}
102
- elsif line.instance_of?(SettingLine)
103
- if current_section_name.nil?
104
- result[line.name] = munge_value(line.value)
105
- else
106
- result[current_section_name][line.name] = munge_value(line.value)
107
- end
108
- end
109
- end
110
-
111
- result
112
- end
113
-
114
- def munge_value(value)
115
- value = value.to_s unless value.is_a?(String)
116
- # Strip enclosing quotes
117
- value = value.slice(1...-1) if value.start_with?('"') && value.end_with?('"')
118
- value
119
- end
120
-
121
- def append(line)
122
- line.previous = @lines.last
123
- @lines << line
124
- end
125
-
126
- module LineNumber
127
- attr_accessor :previous
128
-
129
- def line_number
130
- line = 0
131
- previous_line = previous
132
- while previous_line
133
- line += 1
134
- previous_line = previous_line.previous
135
- end
136
- line
137
- end
138
- end
139
-
140
- Line = Struct.new(:text) do
141
- include LineNumber
142
-
143
- def to_s
144
- text
145
- end
146
- end
147
-
148
- SettingLine = Struct.new(:prefix, :name, :infix, :value, :suffix) do
149
- include LineNumber
150
-
151
- def to_s
152
- "#{prefix}#{name}#{infix}#{value}#{suffix}"
153
- end
154
-
155
- def ==(other)
156
- super(other) && self.line_number == other.line_number
157
- end
158
- end
159
-
160
- SectionLine = Struct.new(:prefix, :name, :suffix) do
161
- include LineNumber
162
-
163
- def to_s
164
- "#{prefix}[#{name}]#{suffix}"
165
- end
166
- end
167
-
168
- class DefaultSection < SectionLine
169
- attr_accessor :write_sectionline
170
-
171
- def initialize
172
- @write_sectionline = false
173
- super("", DEFAULT_SECTION_NAME, "")
174
- end
175
- end
176
- end
177
- # rubocop:enable Style/StringLiterals
178
- # rubocop:enable Style/RedundantSelf
179
- # rubocop:enable Style/PerlBackrefs
180
- # rubocop:enable Style/RegexpLiteral
181
- end
182
- end
183
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ class Config
5
+ # Represents a configuration file using the INI file format
6
+ class IniFile < Namespace
7
+ # Ini Files have very strict valdiation rules which are set in the IniFileSetting class
8
+ # @see PDK::Config::Namespace.default_setting_class
9
+ def default_setting_class
10
+ PDK::Config::IniFileSetting
11
+ end
12
+
13
+ # Parses an IniFile document.
14
+ #
15
+ # @see PDK::Config::Namespace.parse_file
16
+ def parse_file(filename)
17
+ raise unless block_given?
18
+ data = load_data(filename)
19
+ return if data.nil? || data.empty?
20
+
21
+ ini_file = IniFileImpl.parse(data)
22
+ ini_file.to_hash.each do |name, value|
23
+ begin
24
+ new_setting = PDK::Config::IniFileSetting.new(name, self, value)
25
+ rescue StandardError
26
+ # We just ignore invalid initial settings
27
+ new_setting = PDK::Config::IniFileSetting.new(name, self, nil)
28
+ end
29
+
30
+ yield name, new_setting
31
+ end
32
+ end
33
+
34
+ # Serializes object data into an INI file string.
35
+ #
36
+ # @see PDK::Config::Namespace.serialize_data
37
+ def serialize_data(data)
38
+ default_lines = ''
39
+ lines = ''
40
+ data.each do |name, value|
41
+ next if value.nil?
42
+ if value.is_a?(Hash)
43
+ # Hashes are an INI section
44
+ lines += "\n[#{name}]\n"
45
+ value.each do |child_name, child_value|
46
+ next if child_value.nil?
47
+ lines += "#{child_name} = #{munge_serialized_value(child_value)}\n"
48
+ end
49
+ else
50
+ default_lines += "#{name} = #{munge_serialized_value(value)}\n"
51
+ end
52
+ end
53
+
54
+ default_lines + lines
55
+ end
56
+
57
+ private
58
+
59
+ def munge_serialized_value(value)
60
+ value = value.to_s unless value.is_a?(String)
61
+ # Add enclosing quotes if there's a space in the value
62
+ value = '"' + value + '"' if value.include?(' ')
63
+ value
64
+ end
65
+
66
+ # Adapted from https://raw.githubusercontent.com/puppetlabs/puppet/6c257fc7827989c2af2901f974666f0f23611153/lib/puppet/settings/ini_file.rb
67
+ # rubocop:disable Style/RegexpLiteral
68
+ # rubocop:disable Style/PerlBackrefs
69
+ # rubocop:disable Style/RedundantSelf
70
+ # rubocop:disable Style/StringLiterals
71
+ class IniFileImpl
72
+ DEFAULT_SECTION_NAME = 'default_section_name'.freeze
73
+
74
+ def self.parse(config_fh)
75
+ config = new([DefaultSection.new])
76
+ config_fh.each_line do |line|
77
+ case line.chomp
78
+ when /^(\s*)\[([[:word:]]+)\](\s*)$/
79
+ config.append(SectionLine.new($1, $2, $3))
80
+ when /^(\s*)([[:word:]]+)(\s*=\s*)(.*?)(\s*)$/
81
+ config.append(SettingLine.new($1, $2, $3, $4, $5))
82
+ else
83
+ config.append(Line.new(line))
84
+ end
85
+ end
86
+
87
+ config
88
+ end
89
+
90
+ def initialize(lines = [])
91
+ @lines = lines
92
+ end
93
+
94
+ def to_hash
95
+ result = {}
96
+
97
+ current_section_name = nil
98
+ @lines.each do |line|
99
+ if line.instance_of?(SectionLine)
100
+ current_section_name = line.name
101
+ result[current_section_name] = {}
102
+ elsif line.instance_of?(SettingLine)
103
+ if current_section_name.nil?
104
+ result[line.name] = munge_value(line.value)
105
+ else
106
+ result[current_section_name][line.name] = munge_value(line.value)
107
+ end
108
+ end
109
+ end
110
+
111
+ result
112
+ end
113
+
114
+ def munge_value(value)
115
+ value = value.to_s unless value.is_a?(String)
116
+ # Strip enclosing quotes
117
+ value = value.slice(1...-1) if value.start_with?('"') && value.end_with?('"')
118
+ value
119
+ end
120
+
121
+ def append(line)
122
+ line.previous = @lines.last
123
+ @lines << line
124
+ end
125
+
126
+ module LineNumber
127
+ attr_accessor :previous
128
+
129
+ def line_number
130
+ line = 0
131
+ previous_line = previous
132
+ while previous_line
133
+ line += 1
134
+ previous_line = previous_line.previous
135
+ end
136
+ line
137
+ end
138
+ end
139
+
140
+ Line = Struct.new(:text) do
141
+ include LineNumber
142
+
143
+ def to_s
144
+ text
145
+ end
146
+ end
147
+
148
+ SettingLine = Struct.new(:prefix, :name, :infix, :value, :suffix) do
149
+ include LineNumber
150
+
151
+ def to_s
152
+ "#{prefix}#{name}#{infix}#{value}#{suffix}"
153
+ end
154
+
155
+ def ==(other)
156
+ super(other) && self.line_number == other.line_number
157
+ end
158
+ end
159
+
160
+ SectionLine = Struct.new(:prefix, :name, :suffix) do
161
+ include LineNumber
162
+
163
+ def to_s
164
+ "#{prefix}[#{name}]#{suffix}"
165
+ end
166
+ end
167
+
168
+ class DefaultSection < SectionLine
169
+ attr_accessor :write_sectionline
170
+
171
+ def initialize
172
+ @write_sectionline = false
173
+ super("", DEFAULT_SECTION_NAME, "")
174
+ end
175
+ end
176
+ end
177
+ # rubocop:enable Style/StringLiterals
178
+ # rubocop:enable Style/RedundantSelf
179
+ # rubocop:enable Style/PerlBackrefs
180
+ # rubocop:enable Style/RegexpLiteral
181
+ end
182
+ end
183
+ end
@@ -1,39 +1,39 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- class Config
5
- class IniFileSetting < PDK::Config::Setting
6
- # Initialises the PDK::Config::JSONSchemaSetting object.
7
- #
8
- # @see PDK::Config::Setting.initialize
9
- def initialize(_name, namespace, initial_value = nil)
10
- raise 'The IniFileSetting object can only be created within the IniFile Namespace' unless namespace.is_a?(PDK::Config::IniFile)
11
- super
12
- validate!(initial_value) unless initial_value.nil?
13
- end
14
-
15
- # Verifies that the new setting value is valid in an Ini File
16
- #
17
- # @see PDK::Config::Setting.validate!
18
- def validate!(value)
19
- # We're very restrictive here. Realistically Ini files only have string types
20
- return if value.nil? || value.is_a?(String) || value.is_a?(Integer)
21
- # The only other valid-ish type is a Hash
22
- unless value.is_a?(Hash)
23
- raise ArgumentError, _('The setting %{key} may only be a String or Integer, not %{class}') % {
24
- key: qualified_name,
25
- class: value.class,
26
- }
27
- end
28
- # Any hashes can only have a single String/Integer value
29
- value.each do |child_name, child_value|
30
- next if child_value.nil? || child_value.is_a?(String) || child_value.is_a?(Integer)
31
- raise ArgumentError, _('The setting %{key} may only be a String or Integer, not %{class}') % {
32
- key: qualified_name + '.' + child_name,
33
- class: child_value.class,
34
- }
35
- end
36
- end
37
- end
38
- end
39
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ class Config
5
+ class IniFileSetting < PDK::Config::Setting
6
+ # Initialises the PDK::Config::JSONSchemaSetting object.
7
+ #
8
+ # @see PDK::Config::Setting.initialize
9
+ def initialize(_name, namespace, initial_value = nil)
10
+ raise 'The IniFileSetting object can only be created within the IniFile Namespace' unless namespace.is_a?(PDK::Config::IniFile)
11
+ super
12
+ validate!(initial_value) unless initial_value.nil?
13
+ end
14
+
15
+ # Verifies that the new setting value is valid in an Ini File
16
+ #
17
+ # @see PDK::Config::Setting.validate!
18
+ def validate!(value)
19
+ # We're very restrictive here. Realistically Ini files only have string types
20
+ return if value.nil? || value.is_a?(String) || value.is_a?(Integer)
21
+ # The only other valid-ish type is a Hash
22
+ unless value.is_a?(Hash)
23
+ raise ArgumentError, _('The setting %{key} may only be a String or Integer, not %{class}') % {
24
+ key: qualified_name,
25
+ class: value.class,
26
+ }
27
+ end
28
+ # Any hashes can only have a single String/Integer value
29
+ value.each do |child_name, child_value|
30
+ next if child_value.nil? || child_value.is_a?(String) || child_value.is_a?(Integer)
31
+ raise ArgumentError, _('The setting %{key} may only be a String or Integer, not %{class}') % {
32
+ key: qualified_name + '.' + child_name,
33
+ class: child_value.class,
34
+ }
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,34 +1,34 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- class Config
5
- class JSON < Namespace
6
- # Parses a JSON document.
7
- #
8
- # @see PDK::Config::Namespace.parse_file
9
- def parse_file(filename)
10
- raise unless block_given?
11
- data = load_data(filename)
12
- return if data.nil? || data.empty?
13
-
14
- require 'json'
15
-
16
- data = ::JSON.parse(data)
17
- return if data.nil? || data.empty?
18
-
19
- data.each { |k, v| yield k, PDK::Config::Setting.new(k, self, v) }
20
- rescue ::JSON::ParserError => e
21
- raise PDK::Config::LoadError, e.message
22
- end
23
-
24
- # Serializes object data into a JSON string.
25
- #
26
- # @see PDK::Config::Namespace.serialize_data
27
- def serialize_data(data)
28
- require 'json'
29
-
30
- ::JSON.pretty_generate(data)
31
- end
32
- end
33
- end
34
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ class Config
5
+ class JSON < Namespace
6
+ # Parses a JSON document.
7
+ #
8
+ # @see PDK::Config::Namespace.parse_file
9
+ def parse_file(filename)
10
+ raise unless block_given?
11
+ data = load_data(filename)
12
+ return if data.nil? || data.empty?
13
+
14
+ require 'json'
15
+
16
+ data = ::JSON.parse(data)
17
+ return if data.nil? || data.empty?
18
+
19
+ data.each { |k, v| yield k, PDK::Config::Setting.new(k, self, v) }
20
+ rescue ::JSON::ParserError => e
21
+ raise PDK::Config::LoadError, e.message
22
+ end
23
+
24
+ # Serializes object data into a JSON string.
25
+ #
26
+ # @see PDK::Config::Namespace.serialize_data
27
+ def serialize_data(data)
28
+ require 'json'
29
+
30
+ ::JSON.pretty_generate(data)
31
+ end
32
+ end
33
+ end
34
+ end