metadata-json-lint
The metadata-json-lint tool validates and lints metadata.json
files in Puppet modules against style guidelines from the Puppet Forge module metadata recommendations.
Compatibility
metadata-json-lint is tested on Ruby 2.7 to 3.3. The the authoritative source,
check the required_ruby_version
attribute in the gemspec file.
Installation
via gem
command:
gem install metadata-json-lint
via Gemfile:
gem 'metadata-json-lint'
Usage
Testing with metadata-json-lint
On the command line, run metadata-json-lint
with the path of your metadata.json
file:
metadata-json-lint /path/to/metadata.json
Testing with metadata-json-lint as a Rake task
If you are already using puppet_spec_helper
, the 'validate' task already includes metadata-json-lint
.
You can also integrate metadata-json-lint
checks into your tests using the Rake task. Add require 'metadata-json-lint/rake_task'
to your Rakefile
, and then run:
rake metadata_lint
To set options for the Rake task, include them when you define the task:
require 'metadata_json_lint'
task :metadata_lint do
MetadataJsonLint.parse('metadata.json') do |options|
options.strict_license = false
end
end
Alternatively, set the option after requiring the Rake task:
require 'metadata-json-lint/rake_task'
MetadataJsonLint.options.strict_license = false
Options
-
--[no-]strict-dependencies
: Whether to fail if module version dependencies are open-ended. Defaults tofalse
. -
--[no-]strict-license
: Whether to fail on strict license check. Defaults totrue
. -
--[no-]fail-on-warnings
: Whether to fail on warnings. Defaults totrue
. -
--[no-]strict-puppet-version
: Whether to fail if Puppet version requirements are open-ended or no longer supported. Defaults tofalse
.
Contributors
A big thank you to the contributors.
Making a new release
How to make a new release?
- update the gemspec file with the desired version
$ git diff
diff --git a/metadata-json-lint.gemspec b/metadata-json-lint.gemspec
index c86668e..6a3ad38 100644
--- a/metadata-json-lint.gemspec
+++ b/metadata-json-lint.gemspec
@@ -2,7 +2,7 @@ require 'date'
Gem::Specification.new do |s|
s.name = 'metadata-json-lint'
- s.version = '2.4.0'
+ s.version = '2.5.0'
s.date = Date.today.to_s
s.summary = 'metadata-json-lint /path/to/metadata.json'
s.description = 'Utility to verify Puppet metadata.json files'
- export a GitHub access token as environment variable:
export CHANGELOG_GITHUB_TOKEN=*token*
- Install deps and generate the changelog
$ bundle install --path .vendor/ --jobs=$(nproc) --with release
$ bundle exec rake changelog
Found 25 tags
Fetching tags dates: 25/25
Sorting tags...
Received issues: 103
Pull Request count: 77
Filtered pull requests: 72
Filtered issues: 26
Fetching events for issues and PR: 98
Fetching closed dates for issues: 98/98
Fetching SHAs for tags: 25
Associating PRs with tags: 72/72
Generating entry...
Done!
Generated log placed in ~/metadata-json-lint/CHANGELOG.md
-
Check the diff for
CHANGELOG.md
. Does it contain a breaking change but the new version is only a minor bump? Does the new release only contains bug fixes? Adjust the version properly while honouring semantic versioning. If required, regenerate theCHANGELOG.md
. Afterwards submit it as a PR. -
If it gets approved, merge the PR, create a git tag on that and push it.