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
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
require 'pdk'
|
|
2
|
-
|
|
3
|
-
module PDK
|
|
4
|
-
module Analytics
|
|
5
|
-
module Client
|
|
6
|
-
class Noop
|
|
7
|
-
attr_reader :logger
|
|
8
|
-
|
|
9
|
-
def initialize(opts)
|
|
10
|
-
@logger = opts[:logger]
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def screen_view(screen, **_kwargs)
|
|
14
|
-
logger.debug "Skipping submission of '#{screen}' screenview because analytics is disabled"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def event(category, action, **_kwargs)
|
|
18
|
-
logger.debug "Skipping submission of '#{category} #{action}' event because analytics is disabled"
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def finish; end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
1
|
+
require 'pdk'
|
|
2
|
+
|
|
3
|
+
module PDK
|
|
4
|
+
module Analytics
|
|
5
|
+
module Client
|
|
6
|
+
class Noop
|
|
7
|
+
attr_reader :logger
|
|
8
|
+
|
|
9
|
+
def initialize(opts)
|
|
10
|
+
@logger = opts[:logger]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def screen_view(screen, **_kwargs)
|
|
14
|
+
logger.debug "Skipping submission of '#{screen}' screenview because analytics is disabled"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def event(category, action, **_kwargs)
|
|
18
|
+
logger.debug "Skipping submission of '#{category} #{action}' event because analytics is disabled"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def finish; end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
data/lib/pdk/analytics/util.rb
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
require 'pdk'
|
|
2
|
-
|
|
3
|
-
module PDK
|
|
4
|
-
module Analytics
|
|
5
|
-
module Util
|
|
6
|
-
def self.fetch_os_async
|
|
7
|
-
require 'concurrent/configuration'
|
|
8
|
-
require 'concurrent/future'
|
|
9
|
-
|
|
10
|
-
Concurrent::Future.execute(executor: :io) do
|
|
11
|
-
require 'facter'
|
|
12
|
-
os = Facter.value('os')
|
|
13
|
-
|
|
14
|
-
os.nil? ? 'unknown' : "#{os['name']} #{os.fetch('release', {}).fetch('major', '')}".strip
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
1
|
+
require 'pdk'
|
|
2
|
+
|
|
3
|
+
module PDK
|
|
4
|
+
module Analytics
|
|
5
|
+
module Util
|
|
6
|
+
def self.fetch_os_async
|
|
7
|
+
require 'concurrent/configuration'
|
|
8
|
+
require 'concurrent/future'
|
|
9
|
+
|
|
10
|
+
Concurrent::Future.execute(executor: :io) do
|
|
11
|
+
require 'facter'
|
|
12
|
+
os = Facter.value('os')
|
|
13
|
+
|
|
14
|
+
os.nil? ? 'unknown' : "#{os['name']} #{os.fetch('release', {}).fetch('major', '')}".strip
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/pdk/analytics.rb
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
require 'pdk'
|
|
2
|
-
|
|
3
|
-
autoload :Logger, 'logger'
|
|
4
|
-
|
|
5
|
-
module PDK
|
|
6
|
-
module Analytics
|
|
7
|
-
autoload :Util, 'pdk/analytics/util'
|
|
8
|
-
|
|
9
|
-
module Client
|
|
10
|
-
autoload :Noop, 'pdk/analytics/client/noop'
|
|
11
|
-
autoload :GoogleAnalytics, 'pdk/analytics/client/google_analytics'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def self.build_client(opts = {})
|
|
15
|
-
opts[:logger] ||= ::Logger.new(STDERR)
|
|
16
|
-
opts[:client] ||= :noop
|
|
17
|
-
|
|
18
|
-
if opts[:disabled]
|
|
19
|
-
opts[:logger].debug 'Analytics opt-out is set, analytics will be disabled'
|
|
20
|
-
opts[:client] = :noop
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
client_const = opts[:client].to_s.split('_').map(&:capitalize).join
|
|
24
|
-
PDK::Analytics::Client.const_get(client_const).new(opts)
|
|
25
|
-
rescue StandardError => e
|
|
26
|
-
opts[:logger].debug "Failed to initialize analytics client, analytics will be disabled: #{e}"
|
|
27
|
-
PDK::Analytics::Client::Noop.new(opts)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
1
|
+
require 'pdk'
|
|
2
|
+
|
|
3
|
+
autoload :Logger, 'logger'
|
|
4
|
+
|
|
5
|
+
module PDK
|
|
6
|
+
module Analytics
|
|
7
|
+
autoload :Util, 'pdk/analytics/util'
|
|
8
|
+
|
|
9
|
+
module Client
|
|
10
|
+
autoload :Noop, 'pdk/analytics/client/noop'
|
|
11
|
+
autoload :GoogleAnalytics, 'pdk/analytics/client/google_analytics'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.build_client(opts = {})
|
|
15
|
+
opts[:logger] ||= ::Logger.new(STDERR)
|
|
16
|
+
opts[:client] ||= :noop
|
|
17
|
+
|
|
18
|
+
if opts[:disabled]
|
|
19
|
+
opts[:logger].debug 'Analytics opt-out is set, analytics will be disabled'
|
|
20
|
+
opts[:client] = :noop
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
client_const = opts[:client].to_s.split('_').map(&:capitalize).join
|
|
24
|
+
PDK::Analytics::Client.const_get(client_const).new(opts)
|
|
25
|
+
rescue StandardError => e
|
|
26
|
+
opts[:logger].debug "Failed to initialize analytics client, analytics will be disabled: #{e}"
|
|
27
|
+
PDK::Analytics::Client::Noop.new(opts)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
data/lib/pdk/answer_file.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
require 'pdk'
|
|
2
|
-
|
|
3
|
-
module PDK
|
|
4
|
-
class AnswerFile
|
|
5
|
-
# Determine the default path to the answer file.
|
|
6
|
-
#
|
|
7
|
-
# @return [String] The path on disk to the default answer file.
|
|
8
|
-
def self.default_answer_file_path
|
|
9
|
-
PDK::Util::Filesystem.expand_path(File.join(PDK::Util.cachedir, 'answers.json'))
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
1
|
+
require 'pdk'
|
|
2
|
+
|
|
3
|
+
module PDK
|
|
4
|
+
class AnswerFile
|
|
5
|
+
# Determine the default path to the answer file.
|
|
6
|
+
#
|
|
7
|
+
# @return [String] The path on disk to the default answer file.
|
|
8
|
+
def self.default_answer_file_path
|
|
9
|
+
PDK::Util::Filesystem.expand_path(File.join(PDK::Util.cachedir, 'answers.json'))
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
data/lib/pdk/bolt.rb
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
require 'pdk'
|
|
2
|
-
|
|
3
|
-
module PDK
|
|
4
|
-
module Bolt
|
|
5
|
-
# Returns true or false depending on if any of the common files and directories in
|
|
6
|
-
# a Bolt Project are found in the specified directory. If a directory is not specified,
|
|
7
|
-
# the current working directory is used.
|
|
8
|
-
#
|
|
9
|
-
# @see https://puppet.com/docs/bolt/latest/bolt_project_directories.html
|
|
10
|
-
#
|
|
11
|
-
# @return [boolean] True if any bolt specific files or directories are present
|
|
12
|
-
#
|
|
13
|
-
def bolt_project_root?(path = Dir.pwd)
|
|
14
|
-
return true if File.basename(path) == 'Boltdir' && PDK::Util::Filesystem.directory?(path)
|
|
15
|
-
PDK::Util::Filesystem.file?(File.join(path, 'bolt.yaml'))
|
|
16
|
-
end
|
|
17
|
-
module_function :bolt_project_root?
|
|
18
|
-
end
|
|
19
|
-
end
|
|
1
|
+
require 'pdk'
|
|
2
|
+
|
|
3
|
+
module PDK
|
|
4
|
+
module Bolt
|
|
5
|
+
# Returns true or false depending on if any of the common files and directories in
|
|
6
|
+
# a Bolt Project are found in the specified directory. If a directory is not specified,
|
|
7
|
+
# the current working directory is used.
|
|
8
|
+
#
|
|
9
|
+
# @see https://puppet.com/docs/bolt/latest/bolt_project_directories.html
|
|
10
|
+
#
|
|
11
|
+
# @return [boolean] True if any bolt specific files or directories are present
|
|
12
|
+
#
|
|
13
|
+
def bolt_project_root?(path = Dir.pwd)
|
|
14
|
+
return true if File.basename(path) == 'Boltdir' && PDK::Util::Filesystem.directory?(path)
|
|
15
|
+
PDK::Util::Filesystem.file?(File.join(path, 'bolt.yaml'))
|
|
16
|
+
end
|
|
17
|
+
module_function :bolt_project_root?
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/pdk/cli/build.rb
CHANGED
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
module PDK::CLI
|
|
2
|
-
@build_cmd = @base_cmd.define_command do
|
|
3
|
-
name 'build'
|
|
4
|
-
usage _('build [options]')
|
|
5
|
-
summary _('Builds a package from the module that can be published to the Puppet Forge.')
|
|
6
|
-
|
|
7
|
-
option nil, 'target-dir',
|
|
8
|
-
_('The target directory where you want PDK to write the package.'),
|
|
9
|
-
argument: :required, default: File.join(Dir.pwd, 'pkg')
|
|
10
|
-
|
|
11
|
-
option nil, 'force', _('Skips the prompts and builds the module package.')
|
|
12
|
-
|
|
13
|
-
run do |opts, _args, _cmd|
|
|
14
|
-
require 'pdk/module/build'
|
|
15
|
-
require 'pdk/module/metadata'
|
|
16
|
-
require 'pdk/cli/util'
|
|
17
|
-
|
|
18
|
-
# Make sure build is being run in a valid module directory with a metadata.json
|
|
19
|
-
PDK::CLI::Util.ensure_in_module!(
|
|
20
|
-
message: _('`pdk build` can only be run from inside a valid module with a metadata.json.'),
|
|
21
|
-
log_level: :info,
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
PDK::CLI::Util.analytics_screen_view('build', opts)
|
|
25
|
-
|
|
26
|
-
module_metadata = PDK::Module::Metadata.from_file('metadata.json')
|
|
27
|
-
|
|
28
|
-
# TODO: Ensure forge metadata has been set, or call out to interview
|
|
29
|
-
# to set it.
|
|
30
|
-
#
|
|
31
|
-
unless module_metadata.forge_ready?
|
|
32
|
-
if opts[:force]
|
|
33
|
-
PDK.logger.warn _(
|
|
34
|
-
'This module is missing the following fields in the metadata.json: %{fields}. ' \
|
|
35
|
-
'These missing fields may affect the visibility of the module on the Forge.',
|
|
36
|
-
) % {
|
|
37
|
-
fields: module_metadata.missing_fields.join(', '),
|
|
38
|
-
}
|
|
39
|
-
else
|
|
40
|
-
module_metadata.interview_for_forge!
|
|
41
|
-
module_metadata.write!('metadata.json')
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
builder = PDK::Module::Build.new(opts)
|
|
46
|
-
|
|
47
|
-
unless opts[:force]
|
|
48
|
-
if builder.package_already_exists?
|
|
49
|
-
PDK.logger.info _("The file '%{package}' already exists.") % { package: builder.package_file }
|
|
50
|
-
|
|
51
|
-
unless PDK::CLI::Util.prompt_for_yes(_('Overwrite?'), default: false)
|
|
52
|
-
PDK.logger.info _('Build cancelled; exiting.')
|
|
53
|
-
exit 0
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
unless builder.module_pdk_compatible?
|
|
58
|
-
PDK.logger.info _('This module is not compatible with PDK, so PDK can not validate or test this build. ' \
|
|
59
|
-
'Unvalidated modules may have errors when uploading to the Forge. ' \
|
|
60
|
-
'To make this module PDK compatible and use validate features, cancel the build and run `pdk convert`.')
|
|
61
|
-
|
|
62
|
-
unless PDK::CLI::Util.prompt_for_yes(_('Continue build without converting?'))
|
|
63
|
-
PDK.logger.info _('Build cancelled; exiting.')
|
|
64
|
-
exit 0
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
PDK.logger.info _('Building %{module_name} version %{module_version}') % {
|
|
70
|
-
module_name: module_metadata.data['name'],
|
|
71
|
-
module_version: module_metadata.data['version'],
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
builder.build
|
|
75
|
-
|
|
76
|
-
PDK.logger.info _('Build of %{package_name} has completed successfully. Built package can be found here: %{package_path}') % {
|
|
77
|
-
package_name: module_metadata.data['name'],
|
|
78
|
-
package_path: builder.package_file,
|
|
79
|
-
}
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
1
|
+
module PDK::CLI
|
|
2
|
+
@build_cmd = @base_cmd.define_command do
|
|
3
|
+
name 'build'
|
|
4
|
+
usage _('build [options]')
|
|
5
|
+
summary _('Builds a package from the module that can be published to the Puppet Forge.')
|
|
6
|
+
|
|
7
|
+
option nil, 'target-dir',
|
|
8
|
+
_('The target directory where you want PDK to write the package.'),
|
|
9
|
+
argument: :required, default: File.join(Dir.pwd, 'pkg')
|
|
10
|
+
|
|
11
|
+
option nil, 'force', _('Skips the prompts and builds the module package.')
|
|
12
|
+
|
|
13
|
+
run do |opts, _args, _cmd|
|
|
14
|
+
require 'pdk/module/build'
|
|
15
|
+
require 'pdk/module/metadata'
|
|
16
|
+
require 'pdk/cli/util'
|
|
17
|
+
|
|
18
|
+
# Make sure build is being run in a valid module directory with a metadata.json
|
|
19
|
+
PDK::CLI::Util.ensure_in_module!(
|
|
20
|
+
message: _('`pdk build` can only be run from inside a valid module with a metadata.json.'),
|
|
21
|
+
log_level: :info,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
PDK::CLI::Util.analytics_screen_view('build', opts)
|
|
25
|
+
|
|
26
|
+
module_metadata = PDK::Module::Metadata.from_file('metadata.json')
|
|
27
|
+
|
|
28
|
+
# TODO: Ensure forge metadata has been set, or call out to interview
|
|
29
|
+
# to set it.
|
|
30
|
+
#
|
|
31
|
+
unless module_metadata.forge_ready?
|
|
32
|
+
if opts[:force]
|
|
33
|
+
PDK.logger.warn _(
|
|
34
|
+
'This module is missing the following fields in the metadata.json: %{fields}. ' \
|
|
35
|
+
'These missing fields may affect the visibility of the module on the Forge.',
|
|
36
|
+
) % {
|
|
37
|
+
fields: module_metadata.missing_fields.join(', '),
|
|
38
|
+
}
|
|
39
|
+
else
|
|
40
|
+
module_metadata.interview_for_forge!
|
|
41
|
+
module_metadata.write!('metadata.json')
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
builder = PDK::Module::Build.new(opts)
|
|
46
|
+
|
|
47
|
+
unless opts[:force]
|
|
48
|
+
if builder.package_already_exists?
|
|
49
|
+
PDK.logger.info _("The file '%{package}' already exists.") % { package: builder.package_file }
|
|
50
|
+
|
|
51
|
+
unless PDK::CLI::Util.prompt_for_yes(_('Overwrite?'), default: false)
|
|
52
|
+
PDK.logger.info _('Build cancelled; exiting.')
|
|
53
|
+
exit 0
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
unless builder.module_pdk_compatible?
|
|
58
|
+
PDK.logger.info _('This module is not compatible with PDK, so PDK can not validate or test this build. ' \
|
|
59
|
+
'Unvalidated modules may have errors when uploading to the Forge. ' \
|
|
60
|
+
'To make this module PDK compatible and use validate features, cancel the build and run `pdk convert`.')
|
|
61
|
+
|
|
62
|
+
unless PDK::CLI::Util.prompt_for_yes(_('Continue build without converting?'))
|
|
63
|
+
PDK.logger.info _('Build cancelled; exiting.')
|
|
64
|
+
exit 0
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
PDK.logger.info _('Building %{module_name} version %{module_version}') % {
|
|
70
|
+
module_name: module_metadata.data['name'],
|
|
71
|
+
module_version: module_metadata.data['version'],
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
builder.build
|
|
75
|
+
|
|
76
|
+
PDK.logger.info _('Build of %{package_name} has completed successfully. Built package can be found here: %{package_path}') % {
|
|
77
|
+
package_name: module_metadata.data['name'],
|
|
78
|
+
package_path: builder.package_file,
|
|
79
|
+
}
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
data/lib/pdk/cli/bundle.rb
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
module PDK::CLI
|
|
2
|
-
@bundle_cmd = @base_cmd.define_command do
|
|
3
|
-
name 'bundle'
|
|
4
|
-
usage _('bundle [bundler_options]')
|
|
5
|
-
summary _('(Experimental) Command pass-through to bundler')
|
|
6
|
-
description _(<<-EOF
|
|
7
|
-
[experimental] For advanced users, pdk bundle runs arbitrary commands in the bundler environment that pdk manages.
|
|
8
|
-
Careless use of this command can lead to errors that pdk can't help recover from.
|
|
9
|
-
EOF
|
|
10
|
-
)
|
|
11
|
-
skip_option_parsing
|
|
12
|
-
|
|
13
|
-
run do |_opts, args, _cmd|
|
|
14
|
-
require 'pdk/cli/exec/interactive_command'
|
|
15
|
-
require 'pdk/util/bundler'
|
|
16
|
-
|
|
17
|
-
PDK::CLI::Util.ensure_in_module!(
|
|
18
|
-
message: _('`pdk bundle` can only be run from inside a valid module directory.'),
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
PDK::CLI::Util.validate_puppet_version_opts({})
|
|
22
|
-
|
|
23
|
-
screen_view_name = ['bundle']
|
|
24
|
-
screen_view_name << args[0] if args.size >= 1
|
|
25
|
-
screen_view_name << args[1] if args.size >= 2 && args[0] == 'exec'
|
|
26
|
-
|
|
27
|
-
PDK::CLI::Util.analytics_screen_view(screen_view_name.join('_'))
|
|
28
|
-
|
|
29
|
-
# Ensure that the correct Ruby is activated before running command.
|
|
30
|
-
puppet_env = PDK::CLI::Util.puppet_from_opts_or_env({})
|
|
31
|
-
PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
|
|
32
|
-
|
|
33
|
-
gemfile_env = PDK::Util::Bundler::BundleHelper.gemfile_env(puppet_env[:gemset])
|
|
34
|
-
|
|
35
|
-
require 'pdk/cli/exec'
|
|
36
|
-
require 'pdk/cli/exec/interactive_command'
|
|
37
|
-
|
|
38
|
-
command = PDK::CLI::Exec::InteractiveCommand.new(PDK::CLI::Exec.bundle_bin, *args).tap do |c|
|
|
39
|
-
c.context = :pwd
|
|
40
|
-
c.update_environment(gemfile_env)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
result = command.execute!
|
|
44
|
-
|
|
45
|
-
exit result[:exit_code]
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
1
|
+
module PDK::CLI
|
|
2
|
+
@bundle_cmd = @base_cmd.define_command do
|
|
3
|
+
name 'bundle'
|
|
4
|
+
usage _('bundle [bundler_options]')
|
|
5
|
+
summary _('(Experimental) Command pass-through to bundler')
|
|
6
|
+
description _(<<-EOF
|
|
7
|
+
[experimental] For advanced users, pdk bundle runs arbitrary commands in the bundler environment that pdk manages.
|
|
8
|
+
Careless use of this command can lead to errors that pdk can't help recover from.
|
|
9
|
+
EOF
|
|
10
|
+
)
|
|
11
|
+
skip_option_parsing
|
|
12
|
+
|
|
13
|
+
run do |_opts, args, _cmd|
|
|
14
|
+
require 'pdk/cli/exec/interactive_command'
|
|
15
|
+
require 'pdk/util/bundler'
|
|
16
|
+
|
|
17
|
+
PDK::CLI::Util.ensure_in_module!(
|
|
18
|
+
message: _('`pdk bundle` can only be run from inside a valid module directory.'),
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
PDK::CLI::Util.validate_puppet_version_opts({})
|
|
22
|
+
|
|
23
|
+
screen_view_name = ['bundle']
|
|
24
|
+
screen_view_name << args[0] if args.size >= 1
|
|
25
|
+
screen_view_name << args[1] if args.size >= 2 && args[0] == 'exec'
|
|
26
|
+
|
|
27
|
+
PDK::CLI::Util.analytics_screen_view(screen_view_name.join('_'))
|
|
28
|
+
|
|
29
|
+
# Ensure that the correct Ruby is activated before running command.
|
|
30
|
+
puppet_env = PDK::CLI::Util.puppet_from_opts_or_env({})
|
|
31
|
+
PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
|
|
32
|
+
|
|
33
|
+
gemfile_env = PDK::Util::Bundler::BundleHelper.gemfile_env(puppet_env[:gemset])
|
|
34
|
+
|
|
35
|
+
require 'pdk/cli/exec'
|
|
36
|
+
require 'pdk/cli/exec/interactive_command'
|
|
37
|
+
|
|
38
|
+
command = PDK::CLI::Exec::InteractiveCommand.new(PDK::CLI::Exec.bundle_bin, *args).tap do |c|
|
|
39
|
+
c.context = :pwd
|
|
40
|
+
c.update_environment(gemfile_env)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
result = command.execute!
|
|
44
|
+
|
|
45
|
+
exit result[:exit_code]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
data/lib/pdk/cli/config/get.rb
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
module PDK::CLI
|
|
2
|
-
@config_get_cmd = @config_cmd.define_command do
|
|
3
|
-
name 'get'
|
|
4
|
-
usage _('config get [name]')
|
|
5
|
-
summary _('(Deprecated) Retrieve the configuration for <name>. If not specified, retrieve all configuration settings')
|
|
6
|
-
|
|
7
|
-
run do |_opts, args, _cmd|
|
|
8
|
-
PDK.logger.warn _('The \'pdk config get\' command is deprecated, please use \'pdk get config\' instead.')
|
|
9
|
-
|
|
10
|
-
item_name = args[0]
|
|
11
|
-
resolved_config = PDK.config.resolve(item_name)
|
|
12
|
-
# If the user wanted to know a setting but it doesn't exist, raise an error
|
|
13
|
-
if resolved_config.empty? && !item_name.nil?
|
|
14
|
-
PDK.logger.error(_("Configuration item '%{name}' does not exist") % { name: item_name })
|
|
15
|
-
exit 1
|
|
16
|
-
end
|
|
17
|
-
# If the user requested a setting and it's the only one resolved, then just output the value
|
|
18
|
-
if resolved_config.count == 1 && resolved_config.keys[0] == item_name
|
|
19
|
-
puts _('%{value}') % { value: resolved_config.values[0] }
|
|
20
|
-
exit 0
|
|
21
|
-
end
|
|
22
|
-
# Otherwise just output everything
|
|
23
|
-
resolved_config.keys.sort.each { |key| puts _('%{name}=%{value}') % { name: key, value: resolved_config[key] } }
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
1
|
+
module PDK::CLI
|
|
2
|
+
@config_get_cmd = @config_cmd.define_command do
|
|
3
|
+
name 'get'
|
|
4
|
+
usage _('config get [name]')
|
|
5
|
+
summary _('(Deprecated) Retrieve the configuration for <name>. If not specified, retrieve all configuration settings')
|
|
6
|
+
|
|
7
|
+
run do |_opts, args, _cmd|
|
|
8
|
+
PDK.logger.warn _('The \'pdk config get\' command is deprecated, please use \'pdk get config\' instead.')
|
|
9
|
+
|
|
10
|
+
item_name = args[0]
|
|
11
|
+
resolved_config = PDK.config.resolve(item_name)
|
|
12
|
+
# If the user wanted to know a setting but it doesn't exist, raise an error
|
|
13
|
+
if resolved_config.empty? && !item_name.nil?
|
|
14
|
+
PDK.logger.error(_("Configuration item '%{name}' does not exist") % { name: item_name })
|
|
15
|
+
exit 1
|
|
16
|
+
end
|
|
17
|
+
# If the user requested a setting and it's the only one resolved, then just output the value
|
|
18
|
+
if resolved_config.count == 1 && resolved_config.keys[0] == item_name
|
|
19
|
+
puts _('%{value}') % { value: resolved_config.values[0] }
|
|
20
|
+
exit 0
|
|
21
|
+
end
|
|
22
|
+
# Otherwise just output everything
|
|
23
|
+
resolved_config.keys.sort.each { |key| puts _('%{name}=%{value}') % { name: key, value: resolved_config[key] } }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/pdk/cli/config.rb
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
module PDK::CLI
|
|
2
|
-
@config_cmd = @base_cmd.define_command do
|
|
3
|
-
name 'config'
|
|
4
|
-
usage _('config [subcommand] [options]')
|
|
5
|
-
summary _('(Deprecated) Configure the Puppet Development Kit.')
|
|
6
|
-
default_subcommand 'help'
|
|
7
|
-
|
|
8
|
-
run do |_opts, args, _cmd|
|
|
9
|
-
PDK.logger.warn _('The \'pdk config\' command is deprecated, please use \'pdk get config\' and \'pdk set config\' instead.')
|
|
10
|
-
|
|
11
|
-
if args == ['help']
|
|
12
|
-
PDK::CLI.run(%w[config --help])
|
|
13
|
-
exit 0
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
PDK::CLI.run(%w[config help]) if args.empty?
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
@config_cmd.add_command Cri::Command.new_basic_help
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
require 'pdk/cli/config/get'
|
|
1
|
+
module PDK::CLI
|
|
2
|
+
@config_cmd = @base_cmd.define_command do
|
|
3
|
+
name 'config'
|
|
4
|
+
usage _('config [subcommand] [options]')
|
|
5
|
+
summary _('(Deprecated) Configure the Puppet Development Kit.')
|
|
6
|
+
default_subcommand 'help'
|
|
7
|
+
|
|
8
|
+
run do |_opts, args, _cmd|
|
|
9
|
+
PDK.logger.warn _('The \'pdk config\' command is deprecated, please use \'pdk get config\' and \'pdk set config\' instead.')
|
|
10
|
+
|
|
11
|
+
if args == ['help']
|
|
12
|
+
PDK::CLI.run(%w[config --help])
|
|
13
|
+
exit 0
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
PDK::CLI.run(%w[config help]) if args.empty?
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
@config_cmd.add_command Cri::Command.new_basic_help
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
require 'pdk/cli/config/get'
|