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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1329 -1321
- data/LICENSE +201 -201
- data/README.md +163 -163
- data/exe/pdk +10 -10
- data/lib/pdk/analytics/client/google_analytics.rb +143 -143
- data/lib/pdk/analytics/client/noop.rb +25 -25
- data/lib/pdk/analytics/util.rb +19 -19
- data/lib/pdk/analytics.rb +30 -30
- data/lib/pdk/answer_file.rb +12 -12
- data/lib/pdk/bolt.rb +19 -19
- data/lib/pdk/cli/build.rb +82 -82
- data/lib/pdk/cli/bundle.rb +48 -48
- data/lib/pdk/cli/config/get.rb +26 -26
- data/lib/pdk/cli/config.rb +22 -22
- data/lib/pdk/cli/console.rb +148 -148
- data/lib/pdk/cli/convert.rb +52 -52
- data/lib/pdk/cli/env.rb +52 -52
- data/lib/pdk/cli/errors.rb +25 -25
- data/lib/pdk/cli/exec/command.rb +293 -293
- data/lib/pdk/cli/exec/interactive_command.rb +114 -114
- data/lib/pdk/cli/exec.rb +84 -84
- data/lib/pdk/cli/exec_group.rb +104 -104
- data/lib/pdk/cli/get/config.rb +24 -24
- data/lib/pdk/cli/get.rb +20 -20
- data/lib/pdk/cli/module/build.rb +12 -12
- data/lib/pdk/cli/module/generate.rb +47 -47
- data/lib/pdk/cli/module.rb +14 -14
- data/lib/pdk/cli/new/class.rb +32 -32
- data/lib/pdk/cli/new/defined_type.rb +32 -32
- data/lib/pdk/cli/new/fact.rb +29 -29
- data/lib/pdk/cli/new/function.rb +29 -29
- data/lib/pdk/cli/new/module.rb +53 -53
- data/lib/pdk/cli/new/provider.rb +29 -29
- data/lib/pdk/cli/new/task.rb +34 -34
- data/lib/pdk/cli/new/test.rb +52 -52
- data/lib/pdk/cli/new/transport.rb +27 -27
- data/lib/pdk/cli/new.rb +21 -21
- data/lib/pdk/cli/release/prep.rb +39 -39
- data/lib/pdk/cli/release/publish.rb +50 -50
- data/lib/pdk/cli/release.rb +194 -194
- data/lib/pdk/cli/remove/config.rb +80 -80
- data/lib/pdk/cli/remove.rb +20 -20
- data/lib/pdk/cli/set/config.rb +119 -119
- data/lib/pdk/cli/set.rb +20 -20
- data/lib/pdk/cli/test/unit.rb +90 -90
- data/lib/pdk/cli/test.rb +11 -11
- data/lib/pdk/cli/update.rb +64 -64
- data/lib/pdk/cli/util/command_redirector.rb +27 -27
- data/lib/pdk/cli/util/interview.rb +72 -72
- data/lib/pdk/cli/util/option_normalizer.rb +55 -55
- data/lib/pdk/cli/util/option_validator.rb +68 -68
- data/lib/pdk/cli/util/spinner.rb +13 -13
- data/lib/pdk/cli/util/update_manager_printer.rb +82 -82
- data/lib/pdk/cli/util.rb +305 -305
- data/lib/pdk/cli/validate.rb +116 -116
- data/lib/pdk/cli.rb +175 -175
- data/lib/pdk/config/analytics_schema.json +26 -26
- data/lib/pdk/config/errors.rb +5 -5
- data/lib/pdk/config/ini_file.rb +183 -183
- data/lib/pdk/config/ini_file_setting.rb +39 -39
- data/lib/pdk/config/json.rb +34 -34
- data/lib/pdk/config/json_schema_namespace.rb +142 -142
- data/lib/pdk/config/json_schema_setting.rb +53 -53
- data/lib/pdk/config/json_with_schema.rb +49 -49
- data/lib/pdk/config/namespace.rb +354 -354
- data/lib/pdk/config/setting.rb +135 -135
- data/lib/pdk/config/validator.rb +31 -31
- data/lib/pdk/config/yaml.rb +46 -46
- data/lib/pdk/config/yaml_with_schema.rb +59 -59
- data/lib/pdk/config.rb +390 -390
- data/lib/pdk/context/control_repo.rb +60 -60
- data/lib/pdk/context/module.rb +28 -28
- data/lib/pdk/context/none.rb +22 -22
- data/lib/pdk/context.rb +99 -99
- data/lib/pdk/control_repo.rb +90 -90
- data/lib/pdk/generate/defined_type.rb +43 -43
- data/lib/pdk/generate/fact.rb +25 -25
- data/lib/pdk/generate/function.rb +48 -48
- data/lib/pdk/generate/module.rb +352 -352
- data/lib/pdk/generate/provider.rb +28 -28
- data/lib/pdk/generate/puppet_class.rb +43 -43
- data/lib/pdk/generate/puppet_object.rb +232 -232
- data/lib/pdk/generate/task.rb +68 -68
- data/lib/pdk/generate/transport.rb +33 -33
- data/lib/pdk/generate.rb +24 -24
- data/lib/pdk/i18n.rb +4 -4
- data/lib/pdk/logger.rb +45 -45
- data/lib/pdk/module/build.rb +322 -322
- data/lib/pdk/module/convert.rb +296 -296
- data/lib/pdk/module/metadata.rb +202 -202
- data/lib/pdk/module/release.rb +260 -260
- data/lib/pdk/module/update.rb +131 -131
- data/lib/pdk/module/update_manager.rb +227 -227
- data/lib/pdk/module.rb +30 -30
- data/lib/pdk/report/event.rb +370 -370
- data/lib/pdk/report.rb +121 -121
- data/lib/pdk/template/fetcher/git.rb +85 -85
- data/lib/pdk/template/fetcher/local.rb +28 -28
- data/lib/pdk/template/fetcher.rb +98 -98
- data/lib/pdk/template/renderer/v1/legacy_template_dir.rb +116 -116
- data/lib/pdk/template/renderer/v1/renderer.rb +132 -132
- data/lib/pdk/template/renderer/v1/template_file.rb +102 -102
- data/lib/pdk/template/renderer/v1.rb +25 -25
- data/lib/pdk/template/renderer.rb +96 -96
- data/lib/pdk/template/template_dir.rb +67 -67
- data/lib/pdk/template.rb +59 -59
- data/lib/pdk/tests/unit.rb +252 -252
- data/lib/pdk/util/bundler.rb +259 -259
- data/lib/pdk/util/changelog_generator.rb +137 -137
- data/lib/pdk/util/env.rb +47 -47
- data/lib/pdk/util/filesystem.rb +138 -138
- data/lib/pdk/util/git.rb +179 -179
- data/lib/pdk/util/json_finder.rb +85 -85
- data/lib/pdk/util/puppet_strings.rb +125 -125
- data/lib/pdk/util/puppet_version.rb +266 -266
- data/lib/pdk/util/ruby_version.rb +179 -179
- data/lib/pdk/util/template_uri.rb +295 -295
- data/lib/pdk/util/vendored_file.rb +93 -93
- data/lib/pdk/util/version.rb +43 -43
- data/lib/pdk/util/windows/api_types.rb +82 -82
- data/lib/pdk/util/windows/file.rb +36 -36
- data/lib/pdk/util/windows/process.rb +79 -79
- data/lib/pdk/util/windows/string.rb +16 -16
- data/lib/pdk/util/windows.rb +15 -15
- data/lib/pdk/util.rb +278 -277
- data/lib/pdk/validate/control_repo/control_repo_validator_group.rb +23 -23
- data/lib/pdk/validate/control_repo/environment_conf_validator.rb +98 -98
- data/lib/pdk/validate/external_command_validator.rb +208 -208
- data/lib/pdk/validate/internal_ruby_validator.rb +100 -100
- data/lib/pdk/validate/invokable_validator.rb +228 -228
- data/lib/pdk/validate/metadata/metadata_json_lint_validator.rb +86 -86
- data/lib/pdk/validate/metadata/metadata_syntax_validator.rb +78 -78
- data/lib/pdk/validate/metadata/metadata_validator_group.rb +20 -20
- data/lib/pdk/validate/puppet/puppet_epp_validator.rb +133 -133
- data/lib/pdk/validate/puppet/puppet_lint_validator.rb +66 -66
- data/lib/pdk/validate/puppet/puppet_syntax_validator.rb +137 -137
- data/lib/pdk/validate/puppet/puppet_validator_group.rb +21 -21
- data/lib/pdk/validate/ruby/ruby_rubocop_validator.rb +80 -80
- data/lib/pdk/validate/ruby/ruby_validator_group.rb +19 -19
- data/lib/pdk/validate/tasks/tasks_metadata_lint_validator.rb +88 -88
- data/lib/pdk/validate/tasks/tasks_name_validator.rb +50 -50
- data/lib/pdk/validate/tasks/tasks_validator_group.rb +20 -20
- data/lib/pdk/validate/validator.rb +118 -118
- data/lib/pdk/validate/validator_group.rb +104 -104
- data/lib/pdk/validate/yaml/yaml_syntax_validator.rb +95 -95
- data/lib/pdk/validate/yaml/yaml_validator_group.rb +19 -19
- data/lib/pdk/validate.rb +94 -94
- data/lib/pdk/version.rb +4 -4
- data/lib/pdk.rb +76 -76
- data/locales/config.yaml +21 -21
- data/locales/pdk.pot +2094 -2094
- metadata +5 -6
data/lib/pdk/generate/task.rb
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
require 'pdk'
|
|
2
|
-
|
|
3
|
-
module PDK
|
|
4
|
-
module Generate
|
|
5
|
-
class Task < PuppetObject
|
|
6
|
-
def friendly_name
|
|
7
|
-
'Task'
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def template_files
|
|
11
|
-
return {} if spec_only?
|
|
12
|
-
{
|
|
13
|
-
'task.erb' => File.join('tasks', task_name + '.sh'),
|
|
14
|
-
}
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def template_data
|
|
18
|
-
{
|
|
19
|
-
name: object_name,
|
|
20
|
-
}
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Checks that the task has not already been defined with a different
|
|
24
|
-
# extension.
|
|
25
|
-
#
|
|
26
|
-
# @raise [PDK::CLI::ExitWithError] if files with the same name as the
|
|
27
|
-
# task exist in the <module>/tasks/ directory
|
|
28
|
-
def check_preconditions
|
|
29
|
-
super
|
|
30
|
-
|
|
31
|
-
error = _("A task named '%{name}' already exists in this module; defined in %{file}")
|
|
32
|
-
allowed_extensions = %w[.md .conf]
|
|
33
|
-
|
|
34
|
-
PDK::Util::Filesystem.glob(File.join(context.root_path, 'tasks', task_name + '.*')).each do |file|
|
|
35
|
-
next if allowed_extensions.include?(File.extname(file))
|
|
36
|
-
|
|
37
|
-
raise PDK::CLI::ExitWithError, error % { name: task_name, file: file }
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def non_template_files
|
|
42
|
-
task_metadata_file = File.join('tasks', task_name + '.json')
|
|
43
|
-
{ task_metadata_file => JSON.pretty_generate(task_metadata) }
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
private
|
|
47
|
-
|
|
48
|
-
# Calculates the file name of the task files ('init' if the task has the
|
|
49
|
-
# same name as the module, otherwise use the specified task name).
|
|
50
|
-
#
|
|
51
|
-
# @return [String] the base name of the file(s) for the task.
|
|
52
|
-
#
|
|
53
|
-
# @api private
|
|
54
|
-
def task_name
|
|
55
|
-
(object_name == module_name) ? 'init' : object_name
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def task_metadata
|
|
59
|
-
{
|
|
60
|
-
puppet_task_version: 1,
|
|
61
|
-
supports_noop: false,
|
|
62
|
-
description: options.fetch(:description, 'A short description of this task'),
|
|
63
|
-
parameters: {},
|
|
64
|
-
}
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
1
|
+
require 'pdk'
|
|
2
|
+
|
|
3
|
+
module PDK
|
|
4
|
+
module Generate
|
|
5
|
+
class Task < PuppetObject
|
|
6
|
+
def friendly_name
|
|
7
|
+
'Task'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def template_files
|
|
11
|
+
return {} if spec_only?
|
|
12
|
+
{
|
|
13
|
+
'task.erb' => File.join('tasks', task_name + '.sh'),
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def template_data
|
|
18
|
+
{
|
|
19
|
+
name: object_name,
|
|
20
|
+
}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Checks that the task has not already been defined with a different
|
|
24
|
+
# extension.
|
|
25
|
+
#
|
|
26
|
+
# @raise [PDK::CLI::ExitWithError] if files with the same name as the
|
|
27
|
+
# task exist in the <module>/tasks/ directory
|
|
28
|
+
def check_preconditions
|
|
29
|
+
super
|
|
30
|
+
|
|
31
|
+
error = _("A task named '%{name}' already exists in this module; defined in %{file}")
|
|
32
|
+
allowed_extensions = %w[.md .conf]
|
|
33
|
+
|
|
34
|
+
PDK::Util::Filesystem.glob(File.join(context.root_path, 'tasks', task_name + '.*')).each do |file|
|
|
35
|
+
next if allowed_extensions.include?(File.extname(file))
|
|
36
|
+
|
|
37
|
+
raise PDK::CLI::ExitWithError, error % { name: task_name, file: file }
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def non_template_files
|
|
42
|
+
task_metadata_file = File.join('tasks', task_name + '.json')
|
|
43
|
+
{ task_metadata_file => JSON.pretty_generate(task_metadata) }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
# Calculates the file name of the task files ('init' if the task has the
|
|
49
|
+
# same name as the module, otherwise use the specified task name).
|
|
50
|
+
#
|
|
51
|
+
# @return [String] the base name of the file(s) for the task.
|
|
52
|
+
#
|
|
53
|
+
# @api private
|
|
54
|
+
def task_name
|
|
55
|
+
(object_name == module_name) ? 'init' : object_name
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def task_metadata
|
|
59
|
+
{
|
|
60
|
+
puppet_task_version: 1,
|
|
61
|
+
supports_noop: false,
|
|
62
|
+
description: options.fetch(:description, 'A short description of this task'),
|
|
63
|
+
parameters: {},
|
|
64
|
+
}
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
require 'pdk'
|
|
2
|
-
|
|
3
|
-
module PDK
|
|
4
|
-
module Generate
|
|
5
|
-
class Transport < PuppetObject
|
|
6
|
-
def friendly_name
|
|
7
|
-
'Resource API Transport'.freeze
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def template_files
|
|
11
|
-
# Note : Due to how the V1 templates work, the names of the source template files may be mismatched to
|
|
12
|
-
# their destination, e.g. transport_type.erb is really a transport schema
|
|
13
|
-
files = {
|
|
14
|
-
'transport_spec.erb' => File.join('spec', 'unit', 'puppet', 'transport', object_name) + '_spec.rb',
|
|
15
|
-
'transport_type_spec.erb' => File.join('spec', 'unit', 'puppet', 'transport', 'schema', object_name) + '_spec.rb',
|
|
16
|
-
}
|
|
17
|
-
return files if spec_only?
|
|
18
|
-
files.merge(
|
|
19
|
-
'transport.erb' => File.join('lib', 'puppet', 'transport', object_name) + '.rb',
|
|
20
|
-
'transport_device.erb' => File.join('lib', 'puppet', 'util', 'network_device', object_name, 'device.rb'),
|
|
21
|
-
'transport_type.erb' => File.join('lib', 'puppet', 'transport', 'schema', object_name) + '.rb',
|
|
22
|
-
)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def template_data
|
|
26
|
-
{
|
|
27
|
-
name: object_name,
|
|
28
|
-
transport_class: class_name_from_object_name(object_name),
|
|
29
|
-
}
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
1
|
+
require 'pdk'
|
|
2
|
+
|
|
3
|
+
module PDK
|
|
4
|
+
module Generate
|
|
5
|
+
class Transport < PuppetObject
|
|
6
|
+
def friendly_name
|
|
7
|
+
'Resource API Transport'.freeze
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def template_files
|
|
11
|
+
# Note : Due to how the V1 templates work, the names of the source template files may be mismatched to
|
|
12
|
+
# their destination, e.g. transport_type.erb is really a transport schema
|
|
13
|
+
files = {
|
|
14
|
+
'transport_spec.erb' => File.join('spec', 'unit', 'puppet', 'transport', object_name) + '_spec.rb',
|
|
15
|
+
'transport_type_spec.erb' => File.join('spec', 'unit', 'puppet', 'transport', 'schema', object_name) + '_spec.rb',
|
|
16
|
+
}
|
|
17
|
+
return files if spec_only?
|
|
18
|
+
files.merge(
|
|
19
|
+
'transport.erb' => File.join('lib', 'puppet', 'transport', object_name) + '.rb',
|
|
20
|
+
'transport_device.erb' => File.join('lib', 'puppet', 'util', 'network_device', object_name, 'device.rb'),
|
|
21
|
+
'transport_type.erb' => File.join('lib', 'puppet', 'transport', 'schema', object_name) + '.rb',
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def template_data
|
|
26
|
+
{
|
|
27
|
+
name: object_name,
|
|
28
|
+
transport_class: class_name_from_object_name(object_name),
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/lib/pdk/generate.rb
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
require 'pdk'
|
|
2
|
-
|
|
3
|
-
module PDK
|
|
4
|
-
module Generate
|
|
5
|
-
autoload :DefinedType, 'pdk/generate/defined_type'
|
|
6
|
-
autoload :Module, 'pdk/generate/module'
|
|
7
|
-
autoload :Provider, 'pdk/generate/provider'
|
|
8
|
-
autoload :PuppetClass, 'pdk/generate/puppet_class'
|
|
9
|
-
autoload :PuppetObject, 'pdk/generate/puppet_object'
|
|
10
|
-
autoload :Task, 'pdk/generate/task'
|
|
11
|
-
autoload :Transport, 'pdk/generate/transport'
|
|
12
|
-
|
|
13
|
-
def generators
|
|
14
|
-
@generators ||= [
|
|
15
|
-
PDK::Generate::DefinedType,
|
|
16
|
-
PDK::Generate::Provider,
|
|
17
|
-
PDK::Generate::PuppetClass,
|
|
18
|
-
PDK::Generate::Task,
|
|
19
|
-
PDK::Generate::Transport,
|
|
20
|
-
].freeze
|
|
21
|
-
end
|
|
22
|
-
module_function :generators
|
|
23
|
-
end
|
|
24
|
-
end
|
|
1
|
+
require 'pdk'
|
|
2
|
+
|
|
3
|
+
module PDK
|
|
4
|
+
module Generate
|
|
5
|
+
autoload :DefinedType, 'pdk/generate/defined_type'
|
|
6
|
+
autoload :Module, 'pdk/generate/module'
|
|
7
|
+
autoload :Provider, 'pdk/generate/provider'
|
|
8
|
+
autoload :PuppetClass, 'pdk/generate/puppet_class'
|
|
9
|
+
autoload :PuppetObject, 'pdk/generate/puppet_object'
|
|
10
|
+
autoload :Task, 'pdk/generate/task'
|
|
11
|
+
autoload :Transport, 'pdk/generate/transport'
|
|
12
|
+
|
|
13
|
+
def generators
|
|
14
|
+
@generators ||= [
|
|
15
|
+
PDK::Generate::DefinedType,
|
|
16
|
+
PDK::Generate::Provider,
|
|
17
|
+
PDK::Generate::PuppetClass,
|
|
18
|
+
PDK::Generate::Task,
|
|
19
|
+
PDK::Generate::Transport,
|
|
20
|
+
].freeze
|
|
21
|
+
end
|
|
22
|
+
module_function :generators
|
|
23
|
+
end
|
|
24
|
+
end
|
data/lib/pdk/i18n.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require 'gettext-setup'
|
|
2
|
-
|
|
3
|
-
GettextSetup.initialize(File.absolute_path('../../locales', File.dirname(__FILE__)))
|
|
4
|
-
GettextSetup.negotiate_locale!(GettextSetup.candidate_locales)
|
|
1
|
+
require 'gettext-setup'
|
|
2
|
+
|
|
3
|
+
GettextSetup.initialize(File.absolute_path('../../locales', File.dirname(__FILE__)))
|
|
4
|
+
GettextSetup.negotiate_locale!(GettextSetup.candidate_locales)
|
data/lib/pdk/logger.rb
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
require 'logger'
|
|
2
|
-
require 'pdk'
|
|
3
|
-
|
|
4
|
-
module PDK
|
|
5
|
-
class Logger < ::Logger
|
|
6
|
-
WRAP_COLUMN_LIMIT = 78
|
|
7
|
-
|
|
8
|
-
def initialize
|
|
9
|
-
super(STDERR)
|
|
10
|
-
@sent_messages = {}
|
|
11
|
-
|
|
12
|
-
# TODO: Decide on output format.
|
|
13
|
-
self.formatter = proc do |severity, _datetime, _progname, msg|
|
|
14
|
-
prefix = "pdk (#{severity}): "
|
|
15
|
-
if msg.is_a?(Hash)
|
|
16
|
-
if msg.fetch(:wrap, false)
|
|
17
|
-
wrap_pattern = %r{(.{1,#{WRAP_COLUMN_LIMIT - prefix.length}})(\s+|\Z)}
|
|
18
|
-
"#{prefix}#{msg[:text].gsub(wrap_pattern, "\\1\n#{' ' * prefix.length}")}\n"
|
|
19
|
-
else
|
|
20
|
-
"#{prefix}#{msg[:text]}\n"
|
|
21
|
-
end
|
|
22
|
-
else
|
|
23
|
-
"#{prefix}#{msg}\n"
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
self.level = ::Logger::INFO
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def warn_once(*args)
|
|
31
|
-
hash = args.inspect.hash
|
|
32
|
-
return if (@sent_messages[::Logger::WARN] ||= {}).key?(hash)
|
|
33
|
-
@sent_messages[::Logger::WARN][hash] = true
|
|
34
|
-
warn(*args)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def enable_debug_output
|
|
38
|
-
self.level = ::Logger::DEBUG
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def debug?
|
|
42
|
-
level == ::Logger::DEBUG
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
1
|
+
require 'logger'
|
|
2
|
+
require 'pdk'
|
|
3
|
+
|
|
4
|
+
module PDK
|
|
5
|
+
class Logger < ::Logger
|
|
6
|
+
WRAP_COLUMN_LIMIT = 78
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
super(STDERR)
|
|
10
|
+
@sent_messages = {}
|
|
11
|
+
|
|
12
|
+
# TODO: Decide on output format.
|
|
13
|
+
self.formatter = proc do |severity, _datetime, _progname, msg|
|
|
14
|
+
prefix = "pdk (#{severity}): "
|
|
15
|
+
if msg.is_a?(Hash)
|
|
16
|
+
if msg.fetch(:wrap, false)
|
|
17
|
+
wrap_pattern = %r{(.{1,#{WRAP_COLUMN_LIMIT - prefix.length}})(\s+|\Z)}
|
|
18
|
+
"#{prefix}#{msg[:text].gsub(wrap_pattern, "\\1\n#{' ' * prefix.length}")}\n"
|
|
19
|
+
else
|
|
20
|
+
"#{prefix}#{msg[:text]}\n"
|
|
21
|
+
end
|
|
22
|
+
else
|
|
23
|
+
"#{prefix}#{msg}\n"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
self.level = ::Logger::INFO
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def warn_once(*args)
|
|
31
|
+
hash = args.inspect.hash
|
|
32
|
+
return if (@sent_messages[::Logger::WARN] ||= {}).key?(hash)
|
|
33
|
+
@sent_messages[::Logger::WARN][hash] = true
|
|
34
|
+
warn(*args)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def enable_debug_output
|
|
38
|
+
self.level = ::Logger::DEBUG
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def debug?
|
|
42
|
+
level == ::Logger::DEBUG
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|