pdk 1.18.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7096c03ba45a582325f9d2d466da61571697d474ae04387511d18579e886ee65
4
- data.tar.gz: 3df00dfaec659bcd94bf66970feb400990be1b84327ec9fbfd76ea0c0ddbff0b
3
+ metadata.gz: 7b0614fb53065a8c2545ffe2bf3839b9d30aaef65d3b9827635ceb5f24d0181e
4
+ data.tar.gz: b582b1d8c5622fd2bbbe7facc1676a2c4d2d4c50729b2156667a96eb6bcc73e4
5
5
  SHA512:
6
- metadata.gz: ec2e4ee1a30f249b481c3282eecf5af1f6bfbe8497afde98b3f2c271beac0ab0b0d92ab78129e4cf564a7b48368f3cadfd9800d1cb5fb66b36816d93dea84882
7
- data.tar.gz: 396091be92ce00e9b5816171e0782276e53de8b513ce9e50f14a1fe7b264042f2d4149182ba37cd7b7adaef7bb941ae395ffe703c721bd05f1fbdf778dd1f841
6
+ metadata.gz: a09558ee0700783e650c8506ee291c768b89567f7c063763652a449c50544e9f31b95173918f8c553bd120742232d542b897c8eaccd23e8153702b7c75609582
7
+ data.tar.gz: e93a741e535ffe7bd3f9929cc7464891d0a9bbb04d13e5c4e9faf3ff2fd03434a2e127d7a62be06ad64479994198b0427e172ab9df496d48ce79b8f189079a2f
data/CHANGELOG.md CHANGED
@@ -4,7 +4,36 @@ All changes to this repo will be documented in this file.
4
4
  See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) for a high-level summary.
5
5
 
6
6
 
7
- ## [v1.18.1](https://github.com/puppetlabs/pdk/tree/v1.18.1) (2020-07-16)
7
+ ## [v2.0.0](https://github.com/puppetlabs/pdk/tree/v2.0.0) (2021-02-24)
8
+
9
+ [Full Changelog](https://github.com/puppetlabs/pdk/compare/v1.18.1...v2.0.0)
10
+
11
+ **Implemented enhancements:**
12
+
13
+ - Provide more context when forge upload fails [\#905](https://github.com/puppetlabs/pdk/issues/905)
14
+ - \(IAC-1438\) - Removal of Inappropriate Terminology [\#945](https://github.com/puppetlabs/pdk/pull/945) ([david22swan](https://github.com/david22swan))
15
+ - Remove pre-condition checks for RSAPI objects [\#943](https://github.com/puppetlabs/pdk/pull/943) ([DavidS](https://github.com/DavidS))
16
+ - Update lower puppet requirements bound when creating new modules [\#942](https://github.com/puppetlabs/pdk/pull/942) ([DavidS](https://github.com/DavidS))
17
+ - Allow Facter4 to be co-installed with PDK [\#941](https://github.com/puppetlabs/pdk/pull/941) ([GabrielNagy](https://github.com/GabrielNagy))
18
+ - Add ability to generate functions [\#932](https://github.com/puppetlabs/pdk/pull/932) ([logicminds](https://github.com/logicminds))
19
+ - \(GH-905\) Ensure release failure includes error message [\#929](https://github.com/puppetlabs/pdk/pull/929) ([michaeltlombardi](https://github.com/michaeltlombardi))
20
+ - Adds AIX support when creating a new module [\#927](https://github.com/puppetlabs/pdk/pull/927) ([logicminds](https://github.com/logicminds))
21
+ - Add ability to generate new facts [\#921](https://github.com/puppetlabs/pdk/pull/921) ([logicminds](https://github.com/logicminds))
22
+ - Add forge token env [\#913](https://github.com/puppetlabs/pdk/pull/913) ([scotje](https://github.com/scotje))
23
+ - \(FORGE-339\) Omit .DS\_Store files from module builds [\#910](https://github.com/puppetlabs/pdk/pull/910) ([binford2k](https://github.com/binford2k))
24
+ - \(\#876\) Refactor text report output when validators are skipped [\#904](https://github.com/puppetlabs/pdk/pull/904) ([scotje](https://github.com/scotje))
25
+
26
+ **Fixed bugs:**
27
+
28
+ - puppet 7 dependency problems [\#931](https://github.com/puppetlabs/pdk/issues/931)
29
+ - PDK download fails with 404 for macOS [\#928](https://github.com/puppetlabs/pdk/issues/928)
30
+ - PDK does not support ruby 2.7 [\#914](https://github.com/puppetlabs/pdk/issues/914)
31
+ - The `pdk release prep` command cannot find the github\_changelog\_generator gem [\#902](https://github.com/puppetlabs/pdk/issues/902)
32
+ - \(PDK-1655\) pdk test unit fails when compiling spec tests on puppet 6.17 due to removal of default\_env [\#890](https://github.com/puppetlabs/pdk/issues/890)
33
+ - Unit tests fail with can't modify frozen String \(RuntimeError\) [\#886](https://github.com/puppetlabs/pdk/issues/886)
34
+ - `pdk validate` is missing a newline at the end, resulting in the shell prompt being printed on the same line [\#876](https://github.com/puppetlabs/pdk/issues/876)
35
+
36
+ ## [v1.18.1](https://github.com/puppetlabs/pdk/tree/v1.18.1) (2020-07-17)
8
37
 
9
38
  [Full Changelog](https://github.com/puppetlabs/pdk/compare/v1.18.0...v1.18.1)
10
39
 
@@ -54,6 +83,7 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
54
83
  - \(PDK-1615\) Add Ini File configuration support [\#856](https://github.com/puppetlabs/pdk/pull/856) ([glennsarti](https://github.com/glennsarti))
55
84
  - \(PDK-1612\) Add PDK::Context and context detection [\#853](https://github.com/puppetlabs/pdk/pull/853) ([glennsarti](https://github.com/glennsarti))
56
85
  - \(PDK-1607\)\(PDK-1608\) Implement system-level settings for PDK configuration [\#841](https://github.com/puppetlabs/pdk/pull/841) ([glennsarti](https://github.com/glennsarti))
86
+ - \(PDK-1557\) Detect Control Repositories [\#826](https://github.com/puppetlabs/pdk/pull/826) ([glennsarti](https://github.com/glennsarti))
57
87
 
58
88
  **Fixed bugs:**
59
89
 
@@ -77,8 +107,8 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
77
107
  - \(PDK-1545\) Include template-ref in module generation output [\#840](https://github.com/puppetlabs/pdk/pull/840) ([rodjek](https://github.com/rodjek))
78
108
  - \(PDK-1587\) Reject paths with non-ASCII characters when building [\#832](https://github.com/puppetlabs/pdk/pull/832) ([rodjek](https://github.com/rodjek))
79
109
  - \(PDK-1588\) Increase granularity of `pdk bundle` analytics [\#827](https://github.com/puppetlabs/pdk/pull/827) ([rodjek](https://github.com/rodjek))
80
- - \(PDK-1557\) Detect Control Repositories [\#826](https://github.com/puppetlabs/pdk/pull/826) ([glennsarti](https://github.com/glennsarti))
81
110
  - \(PDK-1556\) Use the module root when generating objects [\#824](https://github.com/puppetlabs/pdk/pull/824) ([glennsarti](https://github.com/glennsarti))
111
+ - \(PDK-1487\) Add --default-template flag to pdk convert [\#814](https://github.com/puppetlabs/pdk/pull/814) ([rodjek](https://github.com/rodjek))
82
112
 
83
113
  **Fixed bugs:**
84
114
 
@@ -100,7 +130,6 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
100
130
  **Implemented enhancements:**
101
131
 
102
132
  - \(PDK-1488\) Inform user if updating a pinned module [\#816](https://github.com/puppetlabs/pdk/pull/816) ([rodjek](https://github.com/rodjek))
103
- - \(PDK-1487\) Add --default-template flag to pdk convert [\#814](https://github.com/puppetlabs/pdk/pull/814) ([rodjek](https://github.com/rodjek))
104
133
  - \(GH-808\) Implement pdk release prep and publish subcommands [\#813](https://github.com/puppetlabs/pdk/pull/813) ([glennsarti](https://github.com/glennsarti))
105
134
  - \(GH-808\) Implement pdk release subcommand [\#809](https://github.com/puppetlabs/pdk/pull/809) ([glennsarti](https://github.com/glennsarti))
106
135
  - \(PDK-1364\) Allow non-git template directories to be used [\#803](https://github.com/puppetlabs/pdk/pull/803) ([glennsarti](https://github.com/glennsarti))
@@ -244,7 +273,6 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
244
273
  - \(maint\) Update beaker in package tests [\#695](https://github.com/puppetlabs/pdk/pull/695) ([rodjek](https://github.com/rodjek))
245
274
  - Revert "Merge pull request \#666 from DavidS/fm-8081-pdk-new-transport" [\#693](https://github.com/puppetlabs/pdk/pull/693) ([DavidS](https://github.com/DavidS))
246
275
  - \(maint\) Message and string fixes [\#676](https://github.com/puppetlabs/pdk/pull/676) ([DavidS](https://github.com/DavidS))
247
- - \(PDK-1333\) command\_spec rake task [\#644](https://github.com/puppetlabs/pdk/pull/644) ([rodjek](https://github.com/rodjek))
248
276
 
249
277
  ## [v1.11.1](https://github.com/puppetlabs/pdk/tree/v1.11.1) (2019-07-01)
250
278
 
@@ -309,7 +337,7 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
309
337
  - \(PDK-1335\) Add development note when on Windows [\#649](https://github.com/puppetlabs/pdk/pull/649) ([glennsarti](https://github.com/glennsarti))
310
338
  - \(maint\) Allow developers to add additional gems [\#648](https://github.com/puppetlabs/pdk/pull/648) ([glennsarti](https://github.com/glennsarti))
311
339
  - \(PDK-1167\) Validator should honor case sensitive of the file system [\#646](https://github.com/puppetlabs/pdk/pull/646) ([glennsarti](https://github.com/glennsarti))
312
- - \(PDK-1193\) Saves packaged template-url in metadata as a keyword [\#639](https://github.com/puppetlabs/pdk/pull/639) ([bmjen](https://github.com/bmjen))
340
+ - \(PDK-1333\) command\_spec rake task [\#644](https://github.com/puppetlabs/pdk/pull/644) ([rodjek](https://github.com/rodjek))
313
341
 
314
342
  ## [v1.10.0](https://github.com/puppetlabs/pdk/tree/v1.10.0) (2019-04-02)
315
343
 
@@ -321,6 +349,10 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
321
349
  - \(PDK-1308\) Ensure PDK-written non-templated files have trailing newline [\#640](https://github.com/puppetlabs/pdk/pull/640) ([scotje](https://github.com/scotje))
322
350
  - \(PDK-718\) Add --template-ref argument for upstream template repo tags [\#434](https://github.com/puppetlabs/pdk/pull/434) ([hunner](https://github.com/hunner))
323
351
 
352
+ **Fixed bugs:**
353
+
354
+ - \(PDK-1266\) Clear modulepath value when validating manifest syntax [\#629](https://github.com/puppetlabs/pdk/pull/629) ([rodjek](https://github.com/rodjek))
355
+
324
356
  **Closed issues:**
325
357
 
326
358
  - `pdk update` is not idempotent for deletion of CI config files [\#593](https://github.com/puppetlabs/pdk/issues/593)
@@ -333,6 +365,7 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
333
365
  - \(PDK-1324\) Release 1.10.0 [\#650](https://github.com/puppetlabs/pdk/pull/650) ([rodjek](https://github.com/rodjek))
334
366
  - \(maint\) Fix package specs for template-ref changes [\#647](https://github.com/puppetlabs/pdk/pull/647) ([rodjek](https://github.com/rodjek))
335
367
  - \(maint\) Enforce LF line endings in Rubocop [\#645](https://github.com/puppetlabs/pdk/pull/645) ([glennsarti](https://github.com/glennsarti))
368
+ - \(PDK-1193\) Saves packaged template-url in metadata as a keyword [\#639](https://github.com/puppetlabs/pdk/pull/639) ([bmjen](https://github.com/bmjen))
336
369
  - \(FM-7579, PDK-1236\) bump the version of CRI used [\#638](https://github.com/puppetlabs/pdk/pull/638) ([tphoney](https://github.com/tphoney))
337
370
  - \(PDK-1294\) Update version post-release [\#637](https://github.com/puppetlabs/pdk/pull/637) ([bmjen](https://github.com/bmjen))
338
371
  - \(PDK-1298\) acceptance:local test suite optimisation [\#633](https://github.com/puppetlabs/pdk/pull/633) ([rodjek](https://github.com/rodjek))
@@ -344,16 +377,15 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
344
377
  **Fixed bugs:**
345
378
 
346
379
  - \(IMAGES-1037\) Make sure our paths are used [\#630](https://github.com/puppetlabs/pdk/pull/630) ([mihaibuzgau](https://github.com/mihaibuzgau))
347
- - \(PDK-1266\) Clear modulepath value when validating manifest syntax [\#629](https://github.com/puppetlabs/pdk/pull/629) ([rodjek](https://github.com/rodjek))
348
- - \(PDK-1272\) Convert user/module module names to user-module [\#626](https://github.com/puppetlabs/pdk/pull/626) ([rodjek](https://github.com/rodjek))
349
380
  - \(PDK-1276\) Skip non-file YAML validator targets [\#625](https://github.com/puppetlabs/pdk/pull/625) ([rodjek](https://github.com/rodjek))
350
- - \(PDK-1273\) Whitelist Ruby symbols in YAML validator [\#624](https://github.com/puppetlabs/pdk/pull/624) ([rodjek](https://github.com/rodjek))
381
+ - \(PDK-1273\) Allowlist Ruby symbols in YAML validator [\#624](https://github.com/puppetlabs/pdk/pull/624) ([rodjek](https://github.com/rodjek))
351
382
 
352
383
  **Merged pull requests:**
353
384
 
354
385
  - \(PDK-1289\) Release 1.9.1 [\#632](https://github.com/puppetlabs/pdk/pull/632) ([bmjen](https://github.com/bmjen))
355
386
  - \(maint\) Pin parallel gem to 1.13.0 [\#631](https://github.com/puppetlabs/pdk/pull/631) ([rodjek](https://github.com/rodjek))
356
387
  - \(PDK-1260\) Bump to 1.10.0.pre for new dev work [\#621](https://github.com/puppetlabs/pdk/pull/621) ([bmjen](https://github.com/bmjen))
388
+ - \(maint\) Fix package tests to remove hardcoding [\#613](https://github.com/puppetlabs/pdk/pull/613) ([bmjen](https://github.com/bmjen))
357
389
 
358
390
  ## [v1.9.0](https://github.com/puppetlabs/pdk/tree/v1.9.0) (2019-01-29)
359
391
 
@@ -365,6 +397,7 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
365
397
 
366
398
  **Fixed bugs:**
367
399
 
400
+ - \(PDK-1272\) Convert user/module module names to user-module [\#626](https://github.com/puppetlabs/pdk/pull/626) ([rodjek](https://github.com/rodjek))
368
401
  - \(PDK-914\) Adjust default\_template\_url validation to accept local dirs [\#606](https://github.com/puppetlabs/pdk/pull/606) ([rodjek](https://github.com/rodjek))
369
402
  - \(PDK-1204\) pdk bundle execs in the context of the pwd [\#603](https://github.com/puppetlabs/pdk/pull/603) ([rodjek](https://github.com/rodjek))
370
403
 
@@ -380,7 +413,6 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
380
413
  - \(maint\) Update hitimes pin to 1.3.0 for r2.1 compat [\#617](https://github.com/puppetlabs/pdk/pull/617) ([bmjen](https://github.com/bmjen))
381
414
  - Release 1.9.0 [\#616](https://github.com/puppetlabs/pdk/pull/616) ([bmjen](https://github.com/bmjen))
382
415
  - \(MAINT\) Configure Slack notifications for Travis [\#614](https://github.com/puppetlabs/pdk/pull/614) ([scotje](https://github.com/scotje))
383
- - \(maint\) Fix package tests to remove hardcoding [\#613](https://github.com/puppetlabs/pdk/pull/613) ([bmjen](https://github.com/bmjen))
384
416
  - \(MAINT\) Fix package acceptance tests to pass with any Ruby 2.4.x [\#611](https://github.com/puppetlabs/pdk/pull/611) ([scotje](https://github.com/scotje))
385
417
  - \(MAINT\) Bump default packaged ruby version to 2.4.5 [\#608](https://github.com/puppetlabs/pdk/pull/608) ([scotje](https://github.com/scotje))
386
418
  - \(PDK-1202\) Pass TemplateDir object through to TemplateFile [\#605](https://github.com/puppetlabs/pdk/pull/605) ([rodjek](https://github.com/rodjek))
@@ -999,6 +1031,7 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
999
1031
  - Validate fails on existing module [\#158](https://github.com/puppetlabs/pdk/issues/158)
1000
1032
  - \(\#158\) \(\#166\) Resolve issue loading bundler from gem installs [\#170](https://github.com/puppetlabs/pdk/pull/170) ([scotje](https://github.com/scotje))
1001
1033
  - \(SDK-319\) force usage of our ruby [\#168](https://github.com/puppetlabs/pdk/pull/168) ([DavidS](https://github.com/DavidS))
1034
+ - \(FIXUP\) Add missing newlines in new module interview prompts [\#161](https://github.com/puppetlabs/pdk/pull/161) ([scotje](https://github.com/scotje))
1002
1035
 
1003
1036
  **Closed issues:**
1004
1037
 
@@ -1031,7 +1064,6 @@ See the [release notes](https://puppet.com/docs/pdk/latest/release_notes.html) f
1031
1064
  **Fixed bugs:**
1032
1065
 
1033
1066
  - Can't create module if new module fails to get login [\#157](https://github.com/puppetlabs/pdk/issues/157)
1034
- - \(FIXUP\) Add missing newlines in new module interview prompts [\#161](https://github.com/puppetlabs/pdk/pull/161) ([scotje](https://github.com/scotje))
1035
1067
  - Use default username when Etc.getlogin fails [\#160](https://github.com/puppetlabs/pdk/pull/160) ([austb](https://github.com/austb))
1036
1068
 
1037
1069
  **Merged pull requests:**
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # pdk [![Build Status](https://travis-ci.org/puppetlabs/pdk.svg?branch=master)](https://travis-ci.org/puppetlabs/pdk) [![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/x70e2fqllbaootpd?svg=true)](https://ci.appveyor.com/project/puppetlabs/pdk) [![Coverage Status](https://coveralls.io/repos/github/puppetlabs/pdk/badge.svg?branch=master)](https://coveralls.io/github/puppetlabs/pdk?branch=master)
1
+ # pdk [![Build Status](https://travis-ci.org/puppetlabs/pdk.svg?branch=main)](https://travis-ci.org/puppetlabs/pdk) [![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/x70e2fqllbaootpd?svg=true)](https://ci.appveyor.com/project/puppetlabs/pdk) [![Coverage Status](https://coveralls.io/repos/github/puppetlabs/pdk/badge.svg?branch=main)](https://coveralls.io/github/puppetlabs/pdk?branch=main)
2
2
 
3
3
  * [Installation](#installation)
4
4
  * [Basic usage](#basic-usage)
data/lib/pdk/cli.rb CHANGED
@@ -5,7 +5,10 @@ require 'pdk/cli/errors'
5
5
 
6
6
  module TTY
7
7
  autoload :Prompt, 'tty/prompt'
8
- autoload :TestPrompt, 'tty/test_prompt'
8
+
9
+ class Prompt
10
+ autoload :Test, 'tty/prompt/test'
11
+ end
9
12
  end
10
13
 
11
14
  class Cri::Command::CriExitException
data/lib/pdk/cli/new.rb CHANGED
@@ -17,3 +17,5 @@ require 'pdk/cli/new/provider'
17
17
  require 'pdk/cli/new/task'
18
18
  require 'pdk/cli/new/test'
19
19
  require 'pdk/cli/new/transport'
20
+ require 'pdk/cli/new/fact'
21
+ require 'pdk/cli/new/function'
@@ -0,0 +1,29 @@
1
+ module PDK::CLI
2
+ @new_fact_cmd = @new_cmd.define_command do
3
+ name 'fact'
4
+ usage _('fact [options] <name>')
5
+ summary _('Create a new custom fact named <name> using given options')
6
+
7
+ run do |opts, args, _cmd|
8
+ PDK::CLI::Util.ensure_in_module!
9
+
10
+ fact_name = args[0]
11
+
12
+ if fact_name.nil? || fact_name.empty?
13
+ puts command.help
14
+ exit 1
15
+ end
16
+
17
+ unless Util::OptionValidator.valid_fact_name?(fact_name)
18
+ raise PDK::CLI::ExitWithError, _("'%{name}' is not a valid fact name") % { name: fact_name }
19
+ end
20
+
21
+ PDK::CLI::Util.analytics_screen_view('new_fact', opts)
22
+
23
+ require 'pdk/generate/fact'
24
+
25
+ updates = PDK::Generate::Fact.new(PDK.context, fact_name, opts).run
26
+ PDK::CLI::Util::UpdateManagerPrinter.print_summary(updates, tense: :past)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ module PDK::CLI
2
+ @new_function_cmd = @new_cmd.define_command do
3
+ name 'function'
4
+ usage _('function [options] <name>')
5
+ summary _('Create a new function named <name> using given options')
6
+ option :t, :type, _('The function type, (native or v4)'), argument: :required, default: 'native'
7
+
8
+ run do |opts, args, _cmd|
9
+ PDK::CLI::Util.ensure_in_module!
10
+
11
+ function_name = args[0]
12
+
13
+ if function_name.nil? || function_name.empty?
14
+ puts command.help
15
+ exit 1
16
+ end
17
+
18
+ unless Util::OptionValidator.valid_function_name?(function_name)
19
+ raise PDK::CLI::ExitWithError, _("'%{name}' is not a valid function name") % { name: function_name }
20
+ end
21
+
22
+ PDK::CLI::Util.analytics_screen_view('new_function', opts)
23
+
24
+ require 'pdk/generate/function'
25
+ updates = PDK::Generate::Function.new(PDK.context, function_name, opts).run
26
+ PDK::CLI::Util::UpdateManagerPrinter.print_summary(updates, tense: :past)
27
+ end
28
+ end
29
+ end
@@ -11,7 +11,7 @@ module PDK::CLI
11
11
  option nil, :'forge-upload-url', _('Set forge upload url path.'),
12
12
  argument: :required, default: 'https://forgeapi.puppetlabs.com/v3/releases'
13
13
 
14
- option nil, :'forge-token', _('Set Forge API token.'), argument: :required, default: nil
14
+ option nil, :'forge-token', _('Set Forge API token (you may also set via environment variable PDK_FORGE_TOKEN)'), argument: :required
15
15
 
16
16
  run do |opts, _args, cmd|
17
17
  # Make sure build is being run in a valid module directory with a metadata.json
@@ -27,6 +27,16 @@ module PDK::CLI
27
27
  opts[:'skip-build'] = true
28
28
  opts[:'skip-versionset'] = true
29
29
  opts[:force] = true unless PDK::CLI::Util.interactive?
30
+ opts[:'forge-token'] ||= PDK::Util::Env['PDK_FORGE_TOKEN']
31
+
32
+ if opts[:'forge-token'].nil? || opts[:'forge-token'].empty?
33
+ PDK.logger.error _(
34
+ 'You must supply a Forge API token either via `--forge-token` option ' \
35
+ 'or PDK_FORGE_TOKEN environment variable.',
36
+ )
37
+
38
+ exit 1
39
+ end
30
40
 
31
41
  Release.prepare_publish_interview(TTY::Prompt.new(help_color: :cyan), opts) unless opts[:force]
32
42
 
@@ -8,6 +8,11 @@ module PDK
8
8
  (list =~ %r{^[\w\-]+(?:,[\w\-]+)+$}) ? true : false
9
9
  end
10
10
 
11
+ # @return [Boolean] true if the fact name is valid
12
+ def self.valid_fact_name?(name)
13
+ name.length > 1
14
+ end
15
+
11
16
  def self.enum(val, valid_entries, _options = {})
12
17
  vals = val.is_a?(Array) ? val : [val]
13
18
  invalid_entries = vals.reject { |e| valid_entries.include?(e) }
@@ -41,6 +46,7 @@ module PDK
41
46
 
42
47
  !(string =~ %r{\A([a-z][a-z0-9_]*)(::[a-z][a-z0-9_]*)*\Z}).nil?
43
48
  end
49
+ singleton_class.send(:alias_method, :valid_function_name?, :valid_namespace?)
44
50
 
45
51
  singleton_class.send(:alias_method, :valid_class_name?, :valid_namespace?)
46
52
  singleton_class.send(:alias_method, :valid_defined_type_name?, :valid_namespace?)
data/lib/pdk/generate.rb CHANGED
@@ -7,7 +7,6 @@ module PDK
7
7
  autoload :Provider, 'pdk/generate/provider'
8
8
  autoload :PuppetClass, 'pdk/generate/puppet_class'
9
9
  autoload :PuppetObject, 'pdk/generate/puppet_object'
10
- autoload :ResourceAPIObject, 'pdk/generate/resource_api_object'
11
10
  autoload :Task, 'pdk/generate/task'
12
11
  autoload :Transport, 'pdk/generate/transport'
13
12
 
@@ -0,0 +1,25 @@
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ module Generate
5
+ class Fact < PuppetObject
6
+ def friendly_name
7
+ 'Custom Fact'.freeze
8
+ end
9
+
10
+ def template_files
11
+ files = {
12
+ 'fact_spec.erb' => File.join('spec', 'unit', 'facter', object_name) + '_spec.rb',
13
+ }
14
+ return files if spec_only?
15
+ files.merge(
16
+ 'fact.erb' => File.join('lib', 'facter', object_name) + '.rb',
17
+ )
18
+ end
19
+
20
+ def template_data
21
+ { name: object_name }
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,48 @@
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ module Generate
5
+ class Function < PuppetObject
6
+ def initialize(*_args)
7
+ super
8
+ object_name_parts = @object_name.split('::')
9
+
10
+ @object_name = if object_name_parts.first == module_name
11
+ object_name
12
+ else
13
+ [module_name, object_name].join('::')
14
+ end
15
+ end
16
+
17
+ def friendly_name
18
+ 'Function'.freeze
19
+ end
20
+
21
+ def template_files
22
+ # Calculate the function tests name
23
+ func_name_parts = object_name.split('::')
24
+ # Drop the module name if the object name contains multiple parts
25
+ func_name_parts.delete_at(0) if func_name_parts.length > 1
26
+ files = {
27
+ File.join('functions', 'function_spec.erb') => File.join('spec', 'functions', *func_name_parts) + '_spec.rb',
28
+ }
29
+ return files if spec_only?
30
+ func_name_parts = object_name.split('::')[1..-1]
31
+ template_file = File.join('functions', "#{options[:type]}_function.erb")
32
+
33
+ files[template_file] = if options[:type].eql?('v4')
34
+ File.join('lib', 'puppet', 'functions', module_name, *func_name_parts) + '.rb'
35
+ else
36
+ File.join('functions', *func_name_parts) + '.pp'
37
+ end
38
+ files
39
+ end
40
+
41
+ def template_data
42
+ func_name = object_name.split('::').last
43
+ namespace = object_name.split('::')[0...-1].join('::')
44
+ { name: object_name, func_name: func_name, namespace: namespace }
45
+ end
46
+ end
47
+ end
48
+ end
@@ -2,7 +2,7 @@ require 'pdk'
2
2
 
3
3
  module PDK
4
4
  module Generate
5
- class Provider < ResourceAPIObject
5
+ class Provider < PuppetObject
6
6
  def friendly_name
7
7
  'Resource API Provider'.freeze
8
8
  end
@@ -2,7 +2,7 @@ require 'pdk'
2
2
 
3
3
  module PDK
4
4
  module Generate
5
- class Transport < ResourceAPIObject
5
+ class Transport < PuppetObject
6
6
  def friendly_name
7
7
  'Resource API Transport'.freeze
8
8
  end
data/lib/pdk/module.rb CHANGED
@@ -15,6 +15,7 @@ module PDK
15
15
  '/REVISION',
16
16
  '/spec/fixtures/modules/',
17
17
  '/vendor/',
18
+ '.DS_Store',
18
19
  ].freeze
19
20
 
20
21
  def default_ignored_pathspec(ignore_dotfiles = true)
@@ -27,7 +27,7 @@ module PDK
27
27
  'Debian based Linux' => [
28
28
  {
29
29
  'operatingsystem' => 'Debian',
30
- 'operatingsystemrelease' => ['9'],
30
+ 'operatingsystemrelease' => ['10'],
31
31
  },
32
32
  {
33
33
  'operatingsystem' => 'Ubuntu',
@@ -54,6 +54,10 @@ module PDK
54
54
  'operatingsystem' => 'windows',
55
55
  'operatingsystemrelease' => %w[2019 10],
56
56
  },
57
+ 'AIX' => {
58
+ 'operatingsystem' => 'AIX',
59
+ 'operatingsystemrelease' => %w[6.1 7.1 7.2],
60
+ },
57
61
  }.freeze
58
62
 
59
63
  DEFAULT_OPERATING_SYSTEMS = [
@@ -77,7 +81,7 @@ module PDK
77
81
  OPERATING_SYSTEMS[os_name]
78
82
  }.flatten,
79
83
  'requirements' => [
80
- { 'name' => 'puppet', 'version_requirement' => '>= 4.10.0 < 7.0.0' },
84
+ { 'name' => 'puppet', 'version_requirement' => '>= 6.21.0 < 8.0.0' },
81
85
  ],
82
86
  }.freeze
83
87
 
@@ -163,7 +163,7 @@ module PDK
163
163
  http.request(request)
164
164
  end
165
165
 
166
- raise PDK::CLI::ExitWithError, _('Error uploading to Puppet Forge: %{result}') % { result: response } unless response.is_a?(Net::HTTPSuccess)
166
+ raise PDK::CLI::ExitWithError, _('Error uploading to Puppet Forge: %{result}') % { result: response.body } unless response.is_a?(Net::HTTPSuccess)
167
167
  PDK.logger.info _('Publish to Forge was successful')
168
168
  end
169
169
 
@@ -85,7 +85,7 @@ module PDK
85
85
  private
86
86
 
87
87
  def latest_template?
88
- [PDK::TEMPLATE_REF, 'master'].include?(template_uri.uri_fragment)
88
+ [PDK::TEMPLATE_REF, 'master', 'main'].include?(template_uri.uri_fragment)
89
89
  end
90
90
 
91
91
  def current_template_version
data/lib/pdk/report.rb CHANGED
@@ -104,7 +104,7 @@ module PDK
104
104
  if event.rspec_puppet_coverage?
105
105
  coverage_report = event.to_text
106
106
  else
107
- report << event.to_text unless event.pass?
107
+ report << event.to_text unless event.pass? || event.skipped?
108
108
  end
109
109
  end
110
110
  end
@@ -113,8 +113,8 @@ module PDK
113
113
 
114
114
  if target.is_a?(String)
115
115
  PDK::Util::Filesystem.write_file(target, report.join("\n"))
116
- else
117
- target << report.join("\n")
116
+ elsif !report.empty?
117
+ target << report.join("\n") << "\n"
118
118
  end
119
119
  end
120
120
  end
@@ -111,8 +111,8 @@ module PDK
111
111
  location = nil if location.empty?
112
112
 
113
113
  # TODO: maybe add trace
114
- header = [severity, source, location, message].compact.join(': ')
115
114
  if source == 'rspec'
115
+ header = [severity, source, location, message].compact.join(': ')
116
116
  result = [header, " #{test}"]
117
117
  context = context_lines
118
118
  unless context.nil?
@@ -123,7 +123,13 @@ module PDK
123
123
 
124
124
  result.compact.join("\n")
125
125
  else
126
- header
126
+ output = ['pdk']
127
+ output << "(#{severity.upcase}):" unless severity.nil?
128
+ output << "#{source}:" unless source.nil?
129
+ output << message unless message.nil?
130
+ output << "(#{location})" unless location.nil?
131
+
132
+ output.join(' ')
127
133
  end
128
134
  end
129
135
 
@@ -139,7 +139,7 @@ module PDK
139
139
 
140
140
  example_results = {
141
141
  # Only possibilities are passed, failed, pending:
142
- # https://github.com/rspec/rspec-core/blob/master/lib/rspec/core/example.rb#L548
142
+ # https://github.com/rspec/rspec-core/blob/main/lib/rspec/core/example.rb#L548
143
143
  'passed' => [],
144
144
  'failed' => [],
145
145
  'pending' => [],
@@ -183,6 +183,8 @@ module PDK
183
183
  end
184
184
 
185
185
  def self.merge_json_results(json_data)
186
+ require 'set'
187
+
186
188
  merged_json_result = {}
187
189
 
188
190
  # Merge messages
@@ -44,7 +44,7 @@ module PDK
44
44
  # If there are missing dependencies after updating the lockfile, let `bundle install`
45
45
  # go out and get them. If the specified puppet gem version points to a remote location
46
46
  # or local filepath, then run bundle install as well.
47
- if !bundle.installed? || (gem_overrides[:puppet] && gem_overrides[:puppet].start_with?('file://', 'git://', 'https://'))
47
+ if !bundle.installed?(gem_overrides) || (gem_overrides[:puppet] && gem_overrides[:puppet].start_with?('file://', 'git://', 'https://'))
48
48
  bundle.install!(gem_overrides)
49
49
  end
50
50
 
@@ -9,11 +9,15 @@ module PDK
9
9
 
10
10
  # Raises if the github_changelog_generator is not available
11
11
  def self.github_changelog_generator_available!
12
- require 'bundler'
13
- return if ::Bundler.rubygems.find_name(GEM).any?
12
+ check_command = PDK::CLI::Exec::InteractiveCommand.new(PDK::CLI::Exec.bundle_bin, 'show', 'github_changelog_generator')
13
+ check_command.context = :module
14
+
15
+ result = check_command.execute!
16
+
17
+ return if result[:exit_code].zero?
14
18
 
15
19
  raise PDK::CLI::ExitWithError, _(
16
- 'Unable to generate the changelog as the %{gem} gem is not installed',
20
+ 'Unable to generate the changelog as the %{gem} gem is not included in this module\'s Gemfile',
17
21
  ) % { gem: GEM }
18
22
  end
19
23
 
@@ -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 = 'master'.freeze
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', 'origin/master')
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
- PDK::Util::PuppetVersion.latest_available[:ruby_version]
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#master (only for metadata)
30
- # c:/foo#master (only for metadata)
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#master (internal use only)
35
+ # /c:/foo#main (internal use only)
36
36
  #
37
37
  def initialize(opts_or_uri)
38
38
  require 'addressable'
@@ -241,11 +241,11 @@ module PDK
241
241
  require 'pdk/util'
242
242
  require 'pdk/version'
243
243
 
244
- return 'master' if PDK::Util.development_mode?
244
+ return 'main' if PDK::Util.development_mode?
245
245
  return PDK::TEMPLATE_REF if uri.nil?
246
246
 
247
247
  uri = new(uri) unless uri.is_a?(self)
248
- uri.default? ? PDK::TEMPLATE_REF : 'master'
248
+ uri.default? ? PDK::TEMPLATE_REF : 'main'
249
249
  end
250
250
 
251
251
  # @returns Addressable::URI
@@ -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, possible workaround:
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)
@@ -86,7 +86,12 @@ module PDK
86
86
  ignore_list = ignore_pathspec
87
87
  target_list = target_list.reject { |file| ignore_list.match(file) }
88
88
 
89
- skipped << target if target_list.flatten.empty?
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
+
90
95
  target_list
91
96
  elsif PDK::Util::Filesystem.file?(target)
92
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)) || []
@@ -4,7 +4,7 @@ module PDK
4
4
  module Validate
5
5
  module YAML
6
6
  class YAMLSyntaxValidator < InternalRubyValidator
7
- YAML_WHITELISTED_CLASSES = [Symbol].freeze
7
+ YAML_ALLOWLISTED_CLASSES = [Symbol].freeze
8
8
 
9
9
  def ignore_dotfiles
10
10
  false
@@ -53,7 +53,7 @@ module PDK
53
53
  end
54
54
 
55
55
  begin
56
- ::YAML.safe_load(PDK::Util::Filesystem.read_file(target), YAML_WHITELISTED_CLASSES, [], true)
56
+ ::YAML.safe_load(PDK::Util::Filesystem.read_file(target), YAML_ALLOWLISTED_CLASSES, [], true)
57
57
 
58
58
  report.add_event(
59
59
  file: target,
data/lib/pdk/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module PDK
2
- VERSION = '1.18.1'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  TEMPLATE_REF = VERSION
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-17 00:00:00.000000000 Z
11
+ date: 2021-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -182,14 +182,14 @@ dependencies:
182
182
  requirements:
183
183
  - - "~>"
184
184
  - !ruby/object:Gem::Version
185
- version: '0.13'
185
+ version: '0.22'
186
186
  type: :runtime
187
187
  prerelease: false
188
188
  version_requirements: !ruby/object:Gem::Requirement
189
189
  requirements:
190
190
  - - "~>"
191
191
  - !ruby/object:Gem::Version
192
- version: '0.13'
192
+ version: '0.22'
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: tty-spinner
195
195
  requirement: !ruby/object:Gem::Requirement
@@ -236,16 +236,22 @@ dependencies:
236
236
  name: facter
237
237
  requirement: !ruby/object:Gem::Requirement
238
238
  requirements:
239
- - - "~>"
239
+ - - ">="
240
240
  - !ruby/object:Gem::Version
241
241
  version: 2.5.1
242
+ - - "<"
243
+ - !ruby/object:Gem::Version
244
+ version: 5.0.0
242
245
  type: :runtime
243
246
  prerelease: false
244
247
  version_requirements: !ruby/object:Gem::Requirement
245
248
  requirements:
246
- - - "~>"
249
+ - - ">="
247
250
  - !ruby/object:Gem::Version
248
251
  version: 2.5.1
252
+ - - "<"
253
+ - !ruby/object:Gem::Version
254
+ version: 5.0.0
249
255
  - !ruby/object:Gem::Dependency
250
256
  name: httpclient
251
257
  requirement: !ruby/object:Gem::Requirement
@@ -313,6 +319,8 @@ files:
313
319
  - lib/pdk/cli/new.rb
314
320
  - lib/pdk/cli/new/class.rb
315
321
  - lib/pdk/cli/new/defined_type.rb
322
+ - lib/pdk/cli/new/fact.rb
323
+ - lib/pdk/cli/new/function.rb
316
324
  - lib/pdk/cli/new/module.rb
317
325
  - lib/pdk/cli/new/provider.rb
318
326
  - lib/pdk/cli/new/task.rb
@@ -357,11 +365,12 @@ files:
357
365
  - lib/pdk/control_repo.rb
358
366
  - lib/pdk/generate.rb
359
367
  - lib/pdk/generate/defined_type.rb
368
+ - lib/pdk/generate/fact.rb
369
+ - lib/pdk/generate/function.rb
360
370
  - lib/pdk/generate/module.rb
361
371
  - lib/pdk/generate/provider.rb
362
372
  - lib/pdk/generate/puppet_class.rb
363
373
  - lib/pdk/generate/puppet_object.rb
364
- - lib/pdk/generate/resource_api_object.rb
365
374
  - lib/pdk/generate/task.rb
366
375
  - lib/pdk/generate/transport.rb
367
376
  - lib/pdk/i18n.rb
@@ -440,14 +449,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
440
449
  requirements:
441
450
  - - ">="
442
451
  - !ruby/object:Gem::Version
443
- version: 2.1.9
452
+ version: 2.4.0
444
453
  required_rubygems_version: !ruby/object:Gem::Requirement
445
454
  requirements:
446
455
  - - ">="
447
456
  - !ruby/object:Gem::Version
448
457
  version: '0'
449
458
  requirements: []
450
- rubygems_version: 3.0.3
459
+ rubyforge_project:
460
+ rubygems_version: 2.7.6.2
451
461
  signing_key:
452
462
  specification_version: 4
453
463
  summary: A key part of the Puppet Development Kit, the shortest path to better modules
@@ -1,55 +0,0 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- module Generate
5
- # An abstract class for generated objects that require the Puppet Resource API Gem
6
- #
7
- # @abstract
8
- class ResourceAPIObject < PuppetObject
9
- #:nocov: This is tested in spec/acceptance/new_transport_spec.rb
10
- # @see PDK::Generate::PuppetObject.check_preconditions
11
- def check_preconditions
12
- super
13
- # Note that these preconditions are only applicable to the current (V1) template rendering layout and will need to be changed
14
- # when additional template renderers are introduced.
15
- #
16
- # These preconditions can be removed once the pdk-templates are carrying the puppet-resource_api gem by default, and have switched
17
- # the default mock_with value.
18
- sync_path = PDK::Util.find_upwards('.sync.yml')
19
- if sync_path.nil?
20
- raise_precondition_error(_('.sync.yml not found'))
21
- end
22
- sync = YAML.load_file(sync_path)
23
- if !sync.is_a? Hash
24
- raise_precondition_error(_('.sync.yml contents is not a Hash'))
25
- elsif !sync.key? 'Gemfile'
26
- raise_precondition_error(_('Gemfile configuration not found'))
27
- elsif !sync['Gemfile'].key? 'optional'
28
- raise_precondition_error(_('Gemfile.optional configuration not found'))
29
- elsif !sync['Gemfile']['optional'].key? ':development'
30
- raise_precondition_error(_('Gemfile.optional.:development configuration not found'))
31
- elsif sync['Gemfile']['optional'][':development'].none? { |g| g['gem'] == 'puppet-resource_api' }
32
- raise_precondition_error(_('puppet-resource_api not found in the Gemfile config'))
33
- elsif !sync.key? 'spec/spec_helper.rb'
34
- raise_precondition_error(_('spec/spec_helper.rb configuration not found'))
35
- elsif !sync['spec/spec_helper.rb'].key? 'mock_with'
36
- raise_precondition_error(_('spec/spec_helper.rb.mock_with configuration not found'))
37
- elsif !sync['spec/spec_helper.rb']['mock_with'] == ':rspec'
38
- raise_precondition_error(_('spec/spec_helper.rb.mock_with not set to \':rspec\''))
39
- end
40
- end
41
-
42
- # Helper method to raise an error if the Resource API is not available
43
- #
44
- # @api private
45
- def raise_precondition_error(error)
46
- raise PDK::CLI::ExitWithError, _('%{error}: Creating a %{thing_name} needs some local configuration in your module.' \
47
- ' Please follow the docs at https://puppet.com/docs/puppet/latest/create_types_and_providers_resource_api.html') % {
48
- thing_name: friendly_name,
49
- error: error,
50
- }
51
- end
52
- #:nocov:
53
- end
54
- end
55
- end