pdk 1.17.0 → 2.1.1
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 +4 -4
- data/CHANGELOG.md +148 -11
- data/README.md +1 -1
- data/lib/pdk.rb +1 -1
- data/lib/pdk/cli.rb +7 -1
- data/lib/pdk/cli/convert.rb +7 -9
- data/lib/pdk/cli/env.rb +52 -0
- data/lib/pdk/cli/exec/command.rb +11 -1
- data/lib/pdk/cli/new.rb +2 -0
- data/lib/pdk/cli/new/class.rb +2 -1
- data/lib/pdk/cli/new/defined_type.rb +2 -1
- data/lib/pdk/cli/new/fact.rb +29 -0
- data/lib/pdk/cli/new/function.rb +29 -0
- data/lib/pdk/cli/new/provider.rb +2 -1
- data/lib/pdk/cli/new/task.rb +2 -1
- data/lib/pdk/cli/new/test.rb +2 -1
- data/lib/pdk/cli/new/transport.rb +2 -1
- data/lib/pdk/cli/release.rb +1 -1
- data/lib/pdk/cli/release/publish.rb +11 -1
- data/lib/pdk/cli/remove.rb +20 -0
- data/lib/pdk/cli/remove/config.rb +80 -0
- data/lib/pdk/cli/set.rb +20 -0
- data/lib/pdk/cli/set/config.rb +119 -0
- data/lib/pdk/cli/update.rb +6 -8
- data/lib/pdk/cli/util.rb +1 -0
- data/lib/pdk/cli/util/option_validator.rb +6 -0
- data/lib/pdk/cli/util/update_manager_printer.rb +82 -0
- data/lib/pdk/config.rb +96 -13
- data/lib/pdk/context.rb +8 -5
- data/lib/pdk/generate/defined_type.rb +25 -32
- data/lib/pdk/generate/fact.rb +25 -0
- data/lib/pdk/generate/function.rb +48 -0
- data/lib/pdk/generate/module.rb +11 -10
- data/lib/pdk/generate/provider.rb +15 -64
- data/lib/pdk/generate/puppet_class.rb +25 -31
- data/lib/pdk/generate/puppet_object.rb +83 -187
- data/lib/pdk/generate/task.rb +28 -46
- data/lib/pdk/generate/transport.rb +20 -74
- data/lib/pdk/module.rb +1 -1
- data/lib/pdk/module/convert.rb +43 -23
- data/lib/pdk/module/metadata.rb +6 -2
- data/lib/pdk/module/release.rb +8 -2
- data/lib/pdk/module/update.rb +7 -11
- data/lib/pdk/module/update_manager.rb +7 -0
- data/lib/pdk/report.rb +3 -3
- data/lib/pdk/report/event.rb +8 -2
- data/lib/pdk/template.rb +59 -0
- data/lib/pdk/template/fetcher.rb +98 -0
- data/lib/pdk/template/fetcher/git.rb +85 -0
- data/lib/pdk/template/fetcher/local.rb +28 -0
- data/lib/pdk/template/renderer.rb +96 -0
- data/lib/pdk/template/renderer/v1.rb +25 -0
- data/lib/pdk/template/renderer/v1/legacy_template_dir.rb +116 -0
- data/lib/pdk/template/renderer/v1/renderer.rb +132 -0
- data/lib/pdk/template/renderer/v1/template_file.rb +102 -0
- data/lib/pdk/template/template_dir.rb +67 -0
- data/lib/pdk/tests/unit.rb +8 -1
- data/lib/pdk/util.rb +4 -35
- data/lib/pdk/util/bundler.rb +1 -1
- data/lib/pdk/util/changelog_generator.rb +20 -3
- data/lib/pdk/util/json_finder.rb +85 -0
- data/lib/pdk/util/puppet_strings.rb +3 -3
- data/lib/pdk/util/puppet_version.rb +2 -2
- data/lib/pdk/util/ruby_version.rb +5 -1
- data/lib/pdk/util/template_uri.rb +9 -11
- data/lib/pdk/util/vendored_file.rb +1 -2
- data/lib/pdk/validate.rb +17 -10
- data/lib/pdk/validate/control_repo/control_repo_validator_group.rb +23 -0
- data/lib/pdk/validate/control_repo/environment_conf_validator.rb +98 -0
- data/lib/pdk/validate/invokable_validator.rb +8 -4
- data/lib/pdk/validate/tasks/tasks_metadata_lint_validator.rb +1 -1
- data/lib/pdk/validate/validator.rb +7 -0
- data/lib/pdk/validate/validator_group.rb +1 -0
- data/lib/pdk/validate/yaml/yaml_syntax_validator.rb +2 -2
- data/lib/pdk/version.rb +1 -1
- data/locales/pdk.pot +356 -228
- metadata +65 -28
- data/lib/pdk/module/template_dir.rb +0 -115
- data/lib/pdk/module/template_dir/base.rb +0 -268
- data/lib/pdk/module/template_dir/git.rb +0 -91
- data/lib/pdk/module/template_dir/local.rb +0 -21
- data/lib/pdk/template_file.rb +0 -96
@@ -0,0 +1,85 @@
|
|
1
|
+
module PDK
|
2
|
+
module Util
|
3
|
+
# Processes a given string, looking for JSON objects and parsing them.
|
4
|
+
#
|
5
|
+
# @example A string with a JSON object and some junk characters
|
6
|
+
# PDK::Util::JSONFinder.new('foo{"bar":1}').objects
|
7
|
+
# => [{ 'bar' => 1 }]
|
8
|
+
#
|
9
|
+
# @example A string with mulitple JSON objects
|
10
|
+
# PDK::Util::JSONFinder.new('foo{"bar":1}baz{"gronk":2}').objects
|
11
|
+
# => [{ 'bar' => 1 }, { 'gronk' => 2 }]
|
12
|
+
class JSONFinder
|
13
|
+
# Creates a new instance of PDK::Util::JSONFinder.
|
14
|
+
#
|
15
|
+
# @param string [String] the string to find JSON objects inside of.
|
16
|
+
#
|
17
|
+
# @return [PDK::Util::JSONFinder] a new PDK::Util::JSONFinder object.
|
18
|
+
def initialize(string)
|
19
|
+
require 'strscan'
|
20
|
+
|
21
|
+
@scanner = StringScanner.new(string)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns the parsed JSON objects from the string.
|
25
|
+
#
|
26
|
+
# @return [Array[Hash]] the parsed JSON objects present in the string.
|
27
|
+
def objects
|
28
|
+
return @objects unless @objects.nil?
|
29
|
+
|
30
|
+
require 'json'
|
31
|
+
|
32
|
+
until @scanner.eos?
|
33
|
+
@scanner.getch until @scanner.peek(1) == '{' || @scanner.eos?
|
34
|
+
|
35
|
+
(@objects ||= []) << begin
|
36
|
+
JSON.parse(read_object(true) || '')
|
37
|
+
rescue JSON::ParserError
|
38
|
+
nil
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
return [] if @objects.nil?
|
43
|
+
@objects = @objects.compact
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
# Recursively process the string to extract a complete JSON object.
|
49
|
+
#
|
50
|
+
# @param new_object [Boolean] Set to true if processing a new object to
|
51
|
+
# capture the opening brace. Set to false if being called recursively
|
52
|
+
# where the opening brace has already been captured.
|
53
|
+
#
|
54
|
+
# @return [String] The matched substring containing a JSON object.
|
55
|
+
def read_object(new_object = false)
|
56
|
+
matched_text = new_object ? @scanner.getch : ''
|
57
|
+
|
58
|
+
until @scanner.eos?
|
59
|
+
text = @scanner.scan_until(%r{(?:(?<!\\)"|\{|\})})
|
60
|
+
unless text
|
61
|
+
@scanner.terminate
|
62
|
+
return nil
|
63
|
+
end
|
64
|
+
matched_text += text
|
65
|
+
|
66
|
+
case @scanner.matched
|
67
|
+
when '}'
|
68
|
+
break
|
69
|
+
when '"'
|
70
|
+
text = @scanner.scan_until(%r{(?<!\\)"})
|
71
|
+
unless text
|
72
|
+
@scanner.terminate
|
73
|
+
return nil
|
74
|
+
end
|
75
|
+
matched_text += text
|
76
|
+
else
|
77
|
+
matched_text += read_object
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
matched_text
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -92,12 +92,12 @@ module PDK
|
|
92
92
|
require 'pdk/generate'
|
93
93
|
|
94
94
|
generators = PDK::Generate.generators.select do |gen|
|
95
|
-
gen.
|
95
|
+
gen.const_defined?(:PUPPET_STRINGS_TYPE) && !gen::PUPPET_STRINGS_TYPE.nil?
|
96
96
|
end
|
97
97
|
|
98
98
|
known_objects = generate_hash
|
99
99
|
|
100
|
-
generators.map { |gen| [gen, known_objects[gen
|
100
|
+
generators.map { |gen| [gen, known_objects[gen::PUPPET_STRINGS_TYPE]] }.reject do |_, obj|
|
101
101
|
obj.nil? || obj.empty?
|
102
102
|
end
|
103
103
|
end
|
@@ -117,7 +117,7 @@ module PDK
|
|
117
117
|
require 'pdk/generate'
|
118
118
|
|
119
119
|
PDK::Generate.generators.find do |gen|
|
120
|
-
gen.
|
120
|
+
gen.const_defined?(:PUPPET_STRINGS_TYPE) && gen::PUPPET_STRINGS_TYPE == type
|
121
121
|
end
|
122
122
|
end
|
123
123
|
end
|
@@ -17,7 +17,7 @@ module PDK
|
|
17
17
|
|
18
18
|
PE_VERSIONS_URL = 'https://forgeapi.puppet.com/private/versions/pe'.freeze
|
19
19
|
DEFAULT_PUPPET_DEV_URL = 'https://github.com/puppetlabs/puppet'.freeze
|
20
|
-
DEFAULT_PUPPET_DEV_BRANCH = '
|
20
|
+
DEFAULT_PUPPET_DEV_BRANCH = 'main'.freeze
|
21
21
|
|
22
22
|
def puppet_dev_env
|
23
23
|
require 'pdk/util/ruby_version'
|
@@ -80,7 +80,7 @@ module PDK
|
|
80
80
|
end
|
81
81
|
|
82
82
|
# Reset local repo to latest
|
83
|
-
reset_result = PDK::Util::Git.git('-C', puppet_dev_path, 'reset', '--hard',
|
83
|
+
reset_result = PDK::Util::Git.git('-C', puppet_dev_path, 'reset', '--hard', "origin/#{DEFAULT_PUPPET_DEV_BRANCH}")
|
84
84
|
|
85
85
|
@puppet_dev_fetched = true
|
86
86
|
return if reset_result[:exit_code].zero?
|
@@ -60,7 +60,11 @@ module PDK
|
|
60
60
|
#
|
61
61
|
# PDK::Util::PuppetVersion.find_gem_for('5.5.10')[:ruby_version]
|
62
62
|
#
|
63
|
-
|
63
|
+
# For using the latest puppet gem:
|
64
|
+
# PDK::Util::PuppetVersion.latest_available[:ruby_version]
|
65
|
+
#
|
66
|
+
# Temporarily lock to Ruby 2.5.x as default until 2.7.x ecosystem is sorted
|
67
|
+
versions.keys.detect { |v| v =~ %r{^2\.5} }
|
64
68
|
else
|
65
69
|
# TODO: may not be a safe assumption that highest available version should be default
|
66
70
|
# WARNING Do NOT use PDK::Util::PuppetVersion.*** methods as it can recurse into this
|
@@ -26,13 +26,13 @@ module PDK
|
|
26
26
|
#
|
27
27
|
# file:///c:/foo (git clone location)
|
28
28
|
# c:/foo (shell paths)
|
29
|
-
# file:///c:/foo#
|
30
|
-
# c:/foo#
|
29
|
+
# file:///c:/foo#main (only for metadata)
|
30
|
+
# c:/foo#main (only for metadata)
|
31
31
|
#
|
32
32
|
# non output formats:
|
33
33
|
#
|
34
34
|
# /c:/foo (internal use only)
|
35
|
-
# /c:/foo#
|
35
|
+
# /c:/foo#main (internal use only)
|
36
36
|
#
|
37
37
|
def initialize(opts_or_uri)
|
38
38
|
require 'addressable'
|
@@ -192,7 +192,6 @@ module PDK
|
|
192
192
|
# directory, and :allow_fallback contains a Boolean that specifies if
|
193
193
|
# the lookup process should proceed to the next template directory if
|
194
194
|
# the template file is not in this template directory.
|
195
|
-
#
|
196
195
|
def self.templates(opts)
|
197
196
|
require 'pdk/answer_file'
|
198
197
|
require 'pdk/util'
|
@@ -242,11 +241,11 @@ module PDK
|
|
242
241
|
require 'pdk/util'
|
243
242
|
require 'pdk/version'
|
244
243
|
|
245
|
-
return '
|
244
|
+
return 'main' if PDK::Util.development_mode?
|
246
245
|
return PDK::TEMPLATE_REF if uri.nil?
|
247
246
|
|
248
247
|
uri = new(uri) unless uri.is_a?(self)
|
249
|
-
uri.default? ? PDK::TEMPLATE_REF : '
|
248
|
+
uri.default? ? PDK::TEMPLATE_REF : 'main'
|
250
249
|
end
|
251
250
|
|
252
251
|
# @returns Addressable::URI
|
@@ -261,21 +260,20 @@ module PDK
|
|
261
260
|
found_template[:uri]
|
262
261
|
end
|
263
262
|
|
264
|
-
def self.valid_template?(template)
|
263
|
+
def self.valid_template?(template, context = PDK.context)
|
265
264
|
require 'addressable'
|
266
265
|
|
267
266
|
return false if template.nil? || !template.is_a?(Hash)
|
268
267
|
return false if template[:uri].nil? || !template[:uri].is_a?(Addressable::URI)
|
269
268
|
|
270
269
|
return true if PDK::Util::Git.repo?(bare_uri(template[:uri]))
|
271
|
-
|
272
270
|
path = human_readable(template[:uri].path)
|
273
271
|
if PDK::Util::Filesystem.directory?(path)
|
274
272
|
# We know that it's not a git repository, but it's a valid path on disk
|
275
273
|
begin
|
276
|
-
PDK::
|
277
|
-
return
|
278
|
-
rescue
|
274
|
+
renderer = PDK::Template::Renderer.instance(path, template[:uri], context)
|
275
|
+
return !renderer.nil?
|
276
|
+
rescue StandardError
|
279
277
|
nil
|
280
278
|
end
|
281
279
|
end
|
@@ -55,8 +55,7 @@ module PDK
|
|
55
55
|
uri = URI.parse(url)
|
56
56
|
http = Net::HTTP.new(uri.host, uri.port)
|
57
57
|
http.use_ssl = true
|
58
|
-
# TODO: Get rid of this
|
59
|
-
# https://github.com/glennsarti/dev-tools/blob/master/RubyCerts.ps1
|
58
|
+
# TODO: Get rid of this
|
60
59
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if Gem.win_platform?
|
61
60
|
request = Net::HTTP::Get.new(uri.request_uri)
|
62
61
|
response = http.request(request)
|
data/lib/pdk/validate.rb
CHANGED
@@ -8,15 +8,22 @@ module PDK
|
|
8
8
|
autoload :Validator, 'pdk/validate/validator'
|
9
9
|
autoload :ValidatorGroup, 'pdk/validate/validator_group'
|
10
10
|
|
11
|
+
module ControlRepo
|
12
|
+
autoload :ControlRepoValidatorGroup, 'pdk/validate/control_repo/control_repo_validator_group'
|
13
|
+
autoload :EnvironmentConfValidator, 'pdk/validate/control_repo/environment_conf_validator'
|
14
|
+
end
|
15
|
+
|
11
16
|
module Metadata
|
12
17
|
autoload :MetadataJSONLintValidator, 'pdk/validate/metadata/metadata_json_lint_validator'
|
13
18
|
autoload :MetadataSyntaxValidator, 'pdk/validate/metadata/metadata_syntax_validator'
|
14
19
|
autoload :MetadataValidatorGroup, 'pdk/validate/metadata/metadata_validator_group'
|
15
20
|
end
|
16
21
|
|
17
|
-
module
|
18
|
-
autoload :
|
19
|
-
autoload :
|
22
|
+
module Puppet
|
23
|
+
autoload :PuppetEPPValidator, 'pdk/validate/puppet/puppet_epp_validator'
|
24
|
+
autoload :PuppetLintValidator, 'pdk/validate/puppet/puppet_lint_validator'
|
25
|
+
autoload :PuppetSyntaxValidator, 'pdk/validate/puppet/puppet_syntax_validator'
|
26
|
+
autoload :PuppetValidatorGroup, 'pdk/validate/puppet/puppet_validator_group'
|
20
27
|
end
|
21
28
|
|
22
29
|
module Ruby
|
@@ -25,16 +32,14 @@ module PDK
|
|
25
32
|
end
|
26
33
|
|
27
34
|
module Tasks
|
28
|
-
autoload :TasksNameValidator, 'pdk/validate/tasks/tasks_name_validator'
|
29
35
|
autoload :TasksMetadataLintValidator, 'pdk/validate/tasks/tasks_metadata_lint_validator'
|
36
|
+
autoload :TasksNameValidator, 'pdk/validate/tasks/tasks_name_validator'
|
30
37
|
autoload :TasksValidatorGroup, 'pdk/validate/tasks/tasks_validator_group'
|
31
38
|
end
|
32
39
|
|
33
|
-
module
|
34
|
-
autoload :
|
35
|
-
autoload :
|
36
|
-
autoload :PuppetSyntaxValidator, 'pdk/validate/puppet/puppet_syntax_validator'
|
37
|
-
autoload :PuppetValidatorGroup, 'pdk/validate/puppet/puppet_validator_group'
|
40
|
+
module YAML
|
41
|
+
autoload :YAMLSyntaxValidator, 'pdk/validate/yaml/yaml_syntax_validator'
|
42
|
+
autoload :YAMLValidatorGroup, 'pdk/validate/yaml/yaml_validator_group'
|
38
43
|
end
|
39
44
|
|
40
45
|
def self.validators
|
@@ -47,8 +52,9 @@ module PDK
|
|
47
52
|
|
48
53
|
# @api private
|
49
54
|
def self.validator_hash
|
50
|
-
# TODO: This isn't the most performant... But with only
|
55
|
+
# TODO: This isn't the most performant... But with only 6 items, it's fine
|
51
56
|
@validator_hash ||= [
|
57
|
+
ControlRepo::ControlRepoValidatorGroup,
|
52
58
|
Metadata::MetadataValidatorGroup,
|
53
59
|
Puppet::PuppetValidatorGroup,
|
54
60
|
Ruby::RubyValidatorGroup,
|
@@ -60,6 +66,7 @@ module PDK
|
|
60
66
|
def self.invoke_validators_by_name(context, names, parallel = false, options = {})
|
61
67
|
instances = names.select { |name| validator_names.include?(name) }
|
62
68
|
.map { |name| validator_hash[name].new(context, options) }
|
69
|
+
.select { |instance| instance.valid_in_context? }
|
63
70
|
.each { |instance| instance.prepare_invoke! }
|
64
71
|
report = PDK::Report.new
|
65
72
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'pdk'
|
2
|
+
|
3
|
+
module PDK
|
4
|
+
module Validate
|
5
|
+
module ControlRepo
|
6
|
+
class ControlRepoValidatorGroup < ValidatorGroup
|
7
|
+
def name
|
8
|
+
'control-repo'
|
9
|
+
end
|
10
|
+
|
11
|
+
def valid_in_context?
|
12
|
+
context.is_a?(PDK::Context::ControlRepo)
|
13
|
+
end
|
14
|
+
|
15
|
+
def validators
|
16
|
+
[
|
17
|
+
EnvironmentConfValidator,
|
18
|
+
].freeze
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'pdk'
|
2
|
+
|
3
|
+
module PDK
|
4
|
+
module Validate
|
5
|
+
module ControlRepo
|
6
|
+
class EnvironmentConfValidator < InternalRubyValidator
|
7
|
+
ALLOWED_SETTINGS = %w[modulepath manifest config_version environment_timeout].freeze
|
8
|
+
|
9
|
+
def name
|
10
|
+
'environment-conf'
|
11
|
+
end
|
12
|
+
|
13
|
+
def valid_in_context?
|
14
|
+
context.is_a?(PDK::Context::ControlRepo)
|
15
|
+
end
|
16
|
+
|
17
|
+
def pattern
|
18
|
+
['environment.conf']
|
19
|
+
end
|
20
|
+
|
21
|
+
def spinner_text
|
22
|
+
_('Checking Puppet Environment settings (%{patterns}).') % {
|
23
|
+
patterns: pattern.join(' '),
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def validate_target(report, target)
|
28
|
+
unless PDK::Util::Filesystem.readable?(target)
|
29
|
+
report.add_event(
|
30
|
+
file: target,
|
31
|
+
source: name,
|
32
|
+
state: :failure,
|
33
|
+
severity: 'error',
|
34
|
+
message: _('Could not be read.'),
|
35
|
+
)
|
36
|
+
return 1
|
37
|
+
end
|
38
|
+
|
39
|
+
is_valid = true
|
40
|
+
begin
|
41
|
+
env_conf = PDK::ControlRepo.environment_conf_as_config(target)
|
42
|
+
|
43
|
+
env_conf.resolve.each do |setting_name, setting_value|
|
44
|
+
# Remove the 'environment.' setting_name prefix
|
45
|
+
setting_name = setting_name.slice(12..-1)
|
46
|
+
next if ALLOWED_SETTINGS.include?(setting_name)
|
47
|
+
# A hash indicates that the ini file has a section in it.
|
48
|
+
message = if setting_value.is_a?(Hash)
|
49
|
+
_("Invalid section '%{name}'") % { name: setting_name }
|
50
|
+
else
|
51
|
+
_("Invalid setting '%{name}'") % { name: setting_name }
|
52
|
+
end
|
53
|
+
|
54
|
+
report.add_event(
|
55
|
+
file: target,
|
56
|
+
source: name,
|
57
|
+
state: :failure,
|
58
|
+
severity: 'error',
|
59
|
+
message: message,
|
60
|
+
)
|
61
|
+
is_valid = false
|
62
|
+
end
|
63
|
+
|
64
|
+
timeout = env_conf.fetch('environment_timeout', nil)
|
65
|
+
unless timeout.nil? || timeout == '0' || timeout == 'unlimited'
|
66
|
+
report.add_event(
|
67
|
+
file: target,
|
68
|
+
source: name,
|
69
|
+
state: :failure,
|
70
|
+
severity: 'error',
|
71
|
+
message: _("environment_timeout is set to '%{timeout}' but should be 0, 'unlimited' or not set.") % { timeout: timeout },
|
72
|
+
)
|
73
|
+
is_valid = false
|
74
|
+
end
|
75
|
+
|
76
|
+
return 1 unless is_valid
|
77
|
+
report.add_event(
|
78
|
+
file: target,
|
79
|
+
source: name,
|
80
|
+
state: :passed,
|
81
|
+
severity: 'ok',
|
82
|
+
)
|
83
|
+
return 0
|
84
|
+
rescue StandardError => e
|
85
|
+
report.add_event(
|
86
|
+
file: target,
|
87
|
+
source: name,
|
88
|
+
state: :failure,
|
89
|
+
severity: 'error',
|
90
|
+
message: e.message,
|
91
|
+
)
|
92
|
+
return 1
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -19,9 +19,8 @@ module PDK
|
|
19
19
|
:once
|
20
20
|
end
|
21
21
|
|
22
|
-
# Whether this Validator can be invoked in this context. By default any
|
23
|
-
# @
|
24
|
-
# @abstract
|
22
|
+
# Whether this Validator can be invoked in this context. By default any InvokableValidator can work in any Context, except ::None
|
23
|
+
# @see PDK::Validate::Validator
|
25
24
|
def valid_in_context?
|
26
25
|
!context.is_a?(PDK::Context::None)
|
27
26
|
end
|
@@ -87,7 +86,12 @@ module PDK
|
|
87
86
|
ignore_list = ignore_pathspec
|
88
87
|
target_list = target_list.reject { |file| ignore_list.match(file) }
|
89
88
|
|
90
|
-
|
89
|
+
if target_list.flatten.empty?
|
90
|
+
PDK.logger.info(_('Validator \'%{validator}\' skipped for \'%{target}\'. No files matching \'%{pattern}\' found to validate.') % { validator: name, target: target, pattern: pattern })
|
91
|
+
|
92
|
+
skipped << target
|
93
|
+
end
|
94
|
+
|
91
95
|
target_list
|
92
96
|
elsif PDK::Util::Filesystem.file?(target)
|
93
97
|
if Array(pattern).include? target
|
@@ -49,7 +49,7 @@ module PDK
|
|
49
49
|
# Need to set the JSON Parser and State Generator to the Native one to be
|
50
50
|
# compatible with the multi_json adapter.
|
51
51
|
JSON.parser = JSON::Ext::Parser if defined?(JSON::Ext::Parser)
|
52
|
-
JSON.generator = JSON::Ext::Generator
|
52
|
+
JSON.generator = JSON::Ext::Generator if defined?(JSON::Ext::Generator)
|
53
53
|
|
54
54
|
begin
|
55
55
|
errors = JSON::Validator.fully_validate(schema_file, PDK::Util::Filesystem.read_file(target)) || []
|
@@ -40,6 +40,13 @@ module PDK
|
|
40
40
|
@prepared = false
|
41
41
|
end
|
42
42
|
|
43
|
+
# Whether this Validator can be invoked in this context. By default any Validator can work in any Context
|
44
|
+
# @return [Boolean]
|
45
|
+
# @abstract
|
46
|
+
def valid_in_context?
|
47
|
+
true
|
48
|
+
end
|
49
|
+
|
43
50
|
# Returns the text used for the spinner to display to the user while invoking
|
44
51
|
#
|
45
52
|
# @return [String]
|