Commit 26051e77 authored by Matthieu FAURE's avatar Matthieu FAURE

CHORE Module creation with PDK

parent c069a778
*.rb eol=lf
*.erb eol=lf
*.pp eol=lf
*.sh eol=lf
*.epp eol=lf
.git/
.*.sw[op]
.metadata
.yardoc
.yardwarns
*.iml
/.bundle/
/.idea/
/.vagrant/
/coverage/
/bin/
/doc/
/Gemfile.local
/Gemfile.lock
/junit/
/log/
/pkg/
/spec/fixtures/manifests/
/spec/fixtures/modules/
/tmp/
/vendor/
/convert_report.txt
/update_report.txt
.DS_Store
.project
.envrc
/inventory.yaml
---
stages:
- syntax
- unit
cache:
paths:
- vendor/bundle
before_script:
- bundle -v
- rm Gemfile.lock || true
- gem update --system $RUBYGEMS_VERSION
- gem --version
- bundle -v
- bundle install --without system_tests --path vendor/bundle --jobs $(nproc)
syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop-Ruby 2.5.3-Puppet ~> 6:
stage: syntax
image: ruby:2.5.3
script:
- bundle exec rake syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop
variables:
PUPPET_GEM_VERSION: '~> 6'
parallel_spec-Ruby 2.5.3-Puppet ~> 6:
stage: unit
image: ruby:2.5.3
script:
- bundle exec rake parallel_spec
variables:
PUPPET_GEM_VERSION: '~> 6'
parallel_spec-Ruby 2.4.5-Puppet ~> 5:
stage: unit
image: ruby:2.4.5
script:
- bundle exec rake parallel_spec
variables:
PUPPET_GEM_VERSION: '~> 5'
.git/
.*.sw[op]
.metadata
.yardoc
.yardwarns
*.iml
/.bundle/
/.idea/
/.vagrant/
/coverage/
/bin/
/doc/
/Gemfile.local
/Gemfile.lock
/junit/
/log/
/pkg/
/spec/fixtures/manifests/
/spec/fixtures/modules/
/tmp/
/vendor/
/convert_report.txt
/update_report.txt
.DS_Store
.project
.envrc
/inventory.yaml
/appveyor.yml
/.fixtures.yml
/Gemfile
/.gitattributes
/.gitignore
/.gitlab-ci.yml
/.pdkignore
/Rakefile
/rakelib/
/.rspec
/.rubocop.yml
/.travis.yml
/.yardopts
/spec/
/.vscode/
--color
--format documentation
---
require:
- rubocop-rspec
- rubocop-i18n
AllCops:
DisplayCopNames: true
TargetRubyVersion: '2.1'
Include:
- "./**/*.rb"
Exclude:
- bin/*
- ".vendor/**/*"
- "**/Gemfile"
- "**/Rakefile"
- pkg/**/*
- spec/fixtures/**/*
- vendor/**/*
- "**/Puppetfile"
- "**/Vagrantfile"
- "**/Guardfile"
Metrics/LineLength:
Description: People have wide screens, use them.
Max: 200
GetText:
Enabled: false
GetText/DecorateString:
Description: We don't want to decorate test output.
Exclude:
- spec/**/*
RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests.
A necessary evil in acceptance testing.
Exclude:
- spec/acceptance/**/*.rb
RSpec/HookArgument:
Description: Prefer explicit :each argument, matching existing module's style
EnforcedStyle: each
Style/BlockDelimiters:
Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
be consistent then.
EnforcedStyle: braces_for_chaining
Style/ClassAndModuleChildren:
Description: Compact style reduces the required amount of indentation.
EnforcedStyle: compact
Style/EmptyElse:
Description: Enforce against empty else clauses, but allow `nil` for clarity.
EnforcedStyle: empty
Style/FormatString:
Description: Following the main puppet project's style, prefer the % format format.
EnforcedStyle: percent
Style/FormatStringToken:
Description: Following the main puppet project's style, prefer the simpler template
tokens over annotated ones.
EnforcedStyle: template
Style/Lambda:
Description: Prefer the keyword for easier discoverability.
EnforcedStyle: literal
Style/RegexpLiteral:
Description: Community preference. See https://github.com/voxpupuli/modulesync_config/issues/168
EnforcedStyle: percent_r
Style/TernaryParentheses:
Description: Checks for use of parentheses around ternary conditions. Enforce parentheses
on complex expressions for better readability, but seriously consider breaking
it up.
EnforcedStyle: require_parentheses_when_complex
Style/TrailingCommaInArguments:
Description: Prefer always trailing comma on multiline argument lists. This makes
diffs, and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/TrailingCommaInLiteral:
Description: Prefer always trailing comma on multiline literals. This makes diffs,
and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/SymbolArray:
Description: Using percent style obscures symbolic intent of array's contents.
EnforcedStyle: brackets
RSpec/MessageSpies:
EnforcedStyle: receive
Style/Documentation:
Exclude:
- lib/puppet/parser/functions/**/*
- spec/**/*
Style/WordArray:
EnforcedStyle: brackets
Style/CollectionMethods:
Enabled: true
Style/MethodCalledOnDoEndBlock:
Enabled: true
Style/StringMethods:
Enabled: true
Layout/EndOfLine:
Enabled: false
Layout/IndentHeredoc:
Enabled: false
Metrics/AbcSize:
Enabled: false
Metrics/BlockLength:
Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
Metrics/MethodLength:
Enabled: false
Metrics/ModuleLength:
Enabled: false
Metrics/ParameterLists:
Enabled: false
Metrics/PerceivedComplexity:
Enabled: false
RSpec/DescribeClass:
Enabled: false
RSpec/ExampleLength:
Enabled: false
RSpec/MessageExpectation:
Enabled: false
RSpec/MultipleExpectations:
Enabled: false
RSpec/NestedGroups:
Enabled: false
Style/AsciiComments:
Enabled: false
Style/IfUnlessModifier:
Enabled: false
Style/SymbolProc:
Enabled: false
# Changelog
All notable changes to this project will be documented in this file.
## Release 0.1.0
**Features**
**Bugfixes**
**Known Issues**
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
def location_for(place_or_version, fake_version = nil)
git_url_regex = %r{\A(?<url>(https?|git)[:@][^#]*)(#(?<branch>.*))?}
file_url_regex = %r{\Afile:\/\/(?<path>.*)}
if place_or_version && (git_url = place_or_version.match(git_url_regex))
[fake_version, { git: git_url[:url], branch: git_url[:branch], require: false }].compact
elsif place_or_version && (file_url = place_or_version.match(file_url_regex))
['>= 0', { path: File.expand_path(file_url[:path]), require: false }]
else
[place_or_version, { require: false }]
end
end
ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
minor_version = ruby_version_segments[0..1].join('.')
group :development do
gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0')
gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9')
gem "json", '= 2.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-posix-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", '~> 0.3', require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", '~> 0.3', require: false, platforms: [:mswin, :mingw, :x64_mingw]
end
puppet_version = ENV['PUPPET_GEM_VERSION']
facter_version = ENV['FACTER_GEM_VERSION']
hiera_version = ENV['HIERA_GEM_VERSION']
gems = {}
gems['puppet'] = location_for(puppet_version)
# If facter or hiera versions have been specified via the environment
# variables
gems['facter'] = location_for(facter_version) if facter_version
gems['hiera'] = location_for(hiera_version) if hiera_version
if Gem.win_platform? && puppet_version =~ %r{^(file:///|git://)}
# If we're using a Puppet gem on Windows which handles its own win32-xxx gem
# dependencies (>= 3.5.0), set the maximum versions (see PUP-6445).
gems['win32-dir'] = ['<= 0.4.9', require: false]
gems['win32-eventlog'] = ['<= 0.6.5', require: false]
gems['win32-process'] = ['<= 0.7.5', require: false]
gems['win32-security'] = ['<= 0.2.5', require: false]
gems['win32-service'] = ['0.8.8', require: false]
end
gems.each do |gem_name, gem_params|
gem gem_name, *gem_params
end
# Evaluate Gemfile.local and ~/.gemfile if they exist
extra_gemfiles = [
"#{__FILE__}.local",
File.join(Dir.home, '.gemfile'),
]
extra_gemfiles.each do |gemfile|
if File.file?(gemfile) && File.readable?(gemfile)
eval(File.read(gemfile), binding)
end
end
# vim: syntax=ruby
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (2.3.6)
activesupport (5.2.3)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
ansi (1.5.0)
ast (2.4.0)
aws-eventstream (1.0.3)
aws-partitions (1.207.0)
aws-sdk-core (3.65.1)
aws-eventstream (~> 1.0, >= 1.0.2)
aws-partitions (~> 1.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-ec2 (1.106.0)
aws-sdk-core (~> 3, >= 3.61.1)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.1.0)
aws-eventstream (~> 1.0, >= 1.0.2)
bindata (2.4.4)
bolt (1.29.0)
CFPropertyList (~> 2.2)
addressable (~> 2.5)
aws-sdk-ec2 (~> 1)
concurrent-ruby (~> 1.0)
docker-api (~> 1.34)
hiera-eyaml (~> 3)
logging (~> 2.2)
minitar (~> 0.6)
net-scp (~> 1.2)
net-ssh (>= 4.0)
orchestrator_client (~> 0.4)
puppet (>= 6.4.0, < 7)
puppet-resource_api (>= 1.8.1)
r10k (~> 3.1)
ruby_smb (~> 1.0)
terminal-table (~> 1.8)
winrm (~> 2.0)
winrm-fs (~> 1.3)
builder (3.2.3)
childprocess (0.7.1)
ffi (~> 1.0, >= 1.0.11)
codecov (0.1.14)
json
simplecov
url
coderay (1.1.2)
colored (1.2)
concurrent-ruby (1.1.5)
connection_pool (2.2.2)
cri (2.15.6)
deep_merge (1.2.1)
dependency_checker (0.2.0)
parallel
puppet_forge (~> 2.2)
rake (~> 12.3)
semantic_puppet (~> 1.0)
diff-lcs (1.3)
docile (1.3.2)
docker-api (1.34.2)
excon (>= 0.47.0)
multi_json
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
equatable (0.6.1)
erubis (2.7.0)
excon (0.66.0)
facter (2.5.6)
facterdb (0.8.2)
facter
jgrep
faraday (0.13.1)
multipart-post (>= 1.2, < 3)
faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0)
fast_gettext (1.1.2)
ffi (1.9.25)
gettext (3.2.9)
locale (>= 2.0.5)
text (>= 1.3.0)
gettext-setup (0.31)
fast_gettext (~> 1.1.0)
gettext (>= 3.0.2)
locale
gssapi (1.3.0)
ffi (>= 1.0.1)
gyoku (1.3.1)
builder (>= 2.1.2)
hiera (3.5.0)
hiera-eyaml (3.0.0)
highline (~> 1.6.19)
optimist
highline (1.6.21)
hirb (0.7.3)
hitimes (1.3.0)
hocon (1.2.5)
http-accept (1.7.0)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (1.6.0)
concurrent-ruby (~> 1.0)
jgrep (1.5.0)
jmespath (1.4.0)
json (2.1.0)
json-schema (2.8.0)
addressable (>= 2.4)
json_pure (2.1.0)
little-plugger (1.1.4)
locale (2.1.2)
log4r (1.1.10)
logging (2.2.2)
little-plugger (~> 1.1)
multi_json (~> 1.10)
metaclass (0.0.4)
metadata-json-lint (2.2.0)
json-schema (~> 2.8)
spdx-licenses (~> 1.0)
method_source (0.8.2)
mime-types (3.2.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2019.0331)
minitar (0.6.1)
minitest (5.11.3)
mocha (1.1.0)
metaclass (~> 0.0.1)
multi_json (1.13.1)
multipart-post (2.1.1)
necromancer (0.5.0)
net-http-persistent (3.1.0)
connection_pool (~> 2.2)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
net-ssh (5.2.0)
net-telnet (0.1.1)
netrc (0.11.0)
nori (2.6.0)
optimist (3.0.0)
orchestrator_client (0.4.2)
faraday
net-http-persistent
parallel (1.17.0)
parallel_tests (2.14.2)
parallel
parser (2.5.1.2)
ast (~> 2.4.0)
pastel (0.7.3)
equatable (~> 0.6)
tty-color (~> 0.5)
pathspec (0.2.1)
pdk (1.13.0)
bundler (>= 1.15.0, < 3.0.0)
childprocess (~> 0.7.1)
concurrent-ruby (~> 1.1.5)
cri (~> 2.10)
deep_merge (~> 1.1)
diff-lcs (= 1.3)
facter (~> 2.5.1)
ffi (~> 1.9.0)
gettext-setup (~> 0.24)
hitimes (= 1.3.0)
httpclient (~> 2.8.3)
json-schema (= 2.8.0)
json_pure (~> 2.1.0)
minitar (~> 0.6.1)
pathspec (~> 0.2.1)
tty-prompt (~> 0.13)
tty-spinner (~> 0.5)
tty-which (~> 0.3)
powerpack (0.1.2)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
public_suffix (3.1.1)
puppet (6.8.1)
facter (> 2.0.1, < 4)
fast_gettext (~> 1.1)
hiera (>= 3.2.1, < 4)
httpclient (~> 2.8)
locale (~> 2.1)
multi_json (~> 1.10)
puppet-resource_api (~> 1.5)
semantic_puppet (~> 1.0)
puppet-blacksmith (4.1.2)
rest-client (~> 2.0)
puppet-lint (2.3.6)
puppet-module-posix-default-r2.5 (0.4.2)
puppet-module-posix-dev-r2.5 (0.4.2)
activesupport (>= 5.0.0, < 6.0.0)
codecov (~> 0.1.10)
dependency_checker (~> 0.2)
facterdb (~> 0.8.1)
gettext-setup (~> 0.26)
metadata-json-lint (>= 2.0.2, < 3.0.0)
mocha (>= 1.0.0, < 1.2.0)
parallel_tests (>= 2.14.1, < 2.14.3)
parser (~> 2.5.1.2)
pry (~> 0.10.4)
puppet-blacksmith (>= 3.4.0)
puppet-lint (>= 2.3.0, < 3.0.0)
puppet-resource_api (~> 1.6)
puppet-strings (~> 2.0)
puppet-syntax (>= 2.4.1, < 3.0.0)
puppet_litmus (>= 0.4.0, < 1.0.0)
puppet_pot_generator (~> 1.0)
puppetlabs_spec_helper (>= 2.9.0, < 3.0.0)
rainbow (~> 2.0)
rspec-puppet (>= 2.3.2, < 3.0.0)
rspec-puppet-facts (~> 1.9.5)
rspec_junit_formatter (~> 0.2)
rubocop (~> 0.49.0)
rubocop-i18n (~> 1.2.0)
rubocop-rspec (~> 1.16.0)
serverspec (~> 2.41)
simplecov (>= 0.14.1, < 1.0.0)
simplecov-console (~> 0.4.2)
specinfra (= 2.77.1)
puppet-resource_api (1.8.6)
hocon (>= 1.0)
puppet-strings (2.3.0)
rgen
yard (~> 0.9.5)
puppet-syntax (2.5.0)
rake
puppet_forge (2.3.0)
faraday (>= 0.9.0, < 0.14.0)
faraday_middleware (>= 0.9.0, < 0.13.0)
gettext-setup (~> 0.11)
minitar
semantic_puppet (~> 1.0)
puppet_litmus (0.8.2)
bolt (>= 1.13.1, < 1.29.1)
pdk (>= 1.10.0, < 2.0.0)
tty-spinner (>= 0.5.0, < 1.0.0)
puppet_pot_generator (1.0.1)
puppet
puppetlabs_spec_helper (2.14.1)
mocha (~> 1.0)
pathspec (~> 0.2.1)
puppet-lint (~> 2.0)
puppet-syntax (~> 2.0)
rspec-puppet (~> 2.0)
r10k (3.3.1)
colored (= 1.2)
cri (= 2.15.6)
gettext-setup (~> 0.24)
log4r (= 1.1.10)
multi_json (~> 1.10)
puppet_forge (~> 2.3.0)
rainbow (2.2.2)
rake
rake (12.3.3)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rgen (0.8.2)
rspec (3.8.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-core (3.8.2)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.4)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-its (1.3.0)
rspec-core (>= 3.0.0)
rspec-expectations (>= 3.0.0)
rspec-mocks (3.8.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-puppet (2.7.5)
rspec
rspec-puppet-facts (1.9.5)
facter
facterdb (>= 0.5.0)
json
puppet
rspec-support (3.8.2)
rspec_junit_formatter (0.4.1)
rspec-core (>= 2, < 4, != 2.12.0)
rubocop (0.49.1)
parallel (~> 1.10)
parser (>= 2.3.3.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
rubocop-i18n (1.2.0)
rubocop (~> 0.49.0)
rubocop-rspec (1.16.0)
rubocop (>= 0.49.0)
ruby-progressbar (1.10.1)
ruby_smb (1.1.0)
bindata
rubyntlm
windows_error
rubyntlm (0.6.2)
rubyzip (1.2.3)
semantic_puppet (1.0.2)
serverspec (2.41.5)
multi_json
rspec (~> 3.0)
rspec-its
specinfra (~> 2.72)
sfl (2.3)
simplecov (0.17.0)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-console (0.4.2)
ansi
hirb
simplecov
simplecov-html (0.10.2)
slop (3.6.0)
spdx-licenses (1.2.0)
specinfra (2.77.1)
net-scp
net-ssh (>= 2.7)
net-telnet (= 0.1.1)
sfl
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
text (1.3.1)
thread_safe (0.3.6)
tty-color (0.5.0)
tty-cursor (0.7.0)
tty-prompt (0.19.0)
necromancer (~> 0.5.0)
pastel (~> 0.7.0)
tty-reader (~> 0.6.0)
tty-reader (0.6.0)
tty-cursor (~> 0.7)
tty-screen (~> 0.7)
wisper (~> 2.0.0)
tty-screen (0.7.0)
tty-spinner (0.9.1)
tty-cursor (~> 0.7)
tty-which (0.4.1)
tzinfo (1.2.5)
thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.6)
unicode-display_width (1.6.0)
url (0.3.2)
windows_error (0.1.2)
winrm (2.3.2)
builder (>= 2.1.2)
erubis (~> 2.7)
gssapi (~> 1.2)
gyoku (~> 1.0)
httpclient (~> 2.2, >= 2.2.0.2)
logging (>= 1.6.1, < 3.0)
nori (~> 2.0)
rubyntlm (~> 0.6.0, >= 0.6.1)
winrm-fs (1.3.2)
erubis (~> 2.7)
logging (>= 1.6.1, < 3.0)
rubyzip (~> 1.1)
winrm (~> 2.0)
wisper (2.0.0)
yard (0.9.20)
PLATFORMS
ruby
DEPENDENCIES
fast_gettext
json (= 2.1.0)
puppet
puppet-module-posix-default-r2.5 (~> 0.3)
puppet-module-posix-dev-r2.5 (~> 0.3)
puppet-module-win-default-r2.5 (~> 0.3)
puppet-module-win-dev-r2.5 (~> 0.3)
rb-readline (= 0.5.5)
BUNDLED WITH
1.17.3
# puppet-nextcloud
# nextcloud
Puppet module for NextCloud
\ No newline at end of file
Welcome to your new module. A short overview of the generated parts can be found in the PDK documentation at https://puppet.com/pdk/latest/pdk_generating_modules.html .
The README template below provides a starting point with details about what information to include in your README.
#### Table of Contents
1. [Description](#description)
2. [Setup - The basics of getting started with nextcloud](#setup)
* [What nextcloud affects](#what-nextcloud-affects)
* [Setup requirements](#setup-requirements)
* [Beginning with nextcloud](#beginning-with-nextcloud)
3. [Usage - Configuration options and additional functionality](#usage)
4. [Limitations - OS compatibility, etc.](#limitations)
5. [Development - Guide for contributing to the module](#development)
## Description
Briefly tell users why they might want to use your module. Explain what your module does and what kind of problems users can solve with it.
This should be a fairly short description helps the user decide if your module is what they want.
## Setup
### What nextcloud affects **OPTIONAL**
If it's obvious what your module touches, you can skip this section. For example, folks can probably figure out that your mysql_instance module affects their MySQL instances.
If there's more that they should know about, though, this is the place to mention:
* Files, packages, services, or operations that the module will alter, impact, or execute.
* Dependencies that your module automatically installs.
* Warnings or other important notices.
### Setup Requirements **OPTIONAL**
If your module requires anything extra before setting up (pluginsync enabled, another module, etc.), mention it here.
If your most recent release breaks compatibility or requires particular steps for upgrading, you might want to include an additional "Upgrading" section here.
### Beginning with nextcloud
The very basic steps needed for a user to get the module up and running. This can include setup steps, if necessary, or it can be an example of the most basic use of the module.
## Usage