19 changed files with 1314 additions and 205 deletions
-
4.bumpversion.cfg
-
29.gitignore
-
401LICENSE
-
59Makefile
-
19Pipfile
-
412Pipfile.lock
-
2README.md
-
7cookiecutter.json
-
35hooks/post_gen_project.py
-
121tests/test_bake_project.py
-
8{{ cookiecutter.ansible_collection }}/.bumpversion.cfg
-
29{{ cookiecutter.ansible_collection }}/.gitignore
-
41{{ cookiecutter.ansible_collection }}/.yamllint
-
201{{ cookiecutter.ansible_collection }}/LICENSE
-
76{{ cookiecutter.ansible_collection }}/Makefile
-
22{{ cookiecutter.ansible_collection }}/Pipfile
-
5{{ cookiecutter.ansible_collection }}/README.md
-
17{{ cookiecutter.ansible_collection }}/galaxy.yml
-
31{{ cookiecutter.ansible_collection }}/plugins/README.md
@ -0,0 +1,4 @@ |
|||
[bumpversion] |
|||
current_version = 0.1.0 |
|||
commit = True |
|||
tag = True |
@ -0,0 +1,29 @@ |
|||
# IntelliJ |
|||
.idea |
|||
|
|||
# Ansible |
|||
.facts_cache |
|||
|
|||
# VS code |
|||
*workspace |
|||
|
|||
### Python template |
|||
# Byte-compiled / optimized / DLL files |
|||
__pycache__/ |
|||
*.py[cod] |
|||
*$py.class |
|||
|
|||
# C extensions |
|||
*.so |
|||
|
|||
# Installer logs |
|||
pip-log.txt |
|||
pip-delete-this-directory.txt |
|||
|
|||
### Packer template |
|||
# Cache objects |
|||
packer_cache/ |
|||
|
|||
# CUSTOM |
|||
setup*done |
|||
tmp |
@ -1,208 +1,201 @@ |
|||
Apache License |
|||
Apache License |
|||
Version 2.0, January 2004 |
|||
http://www.apache.org/licenses/ |
|||
|
|||
Version 2.0, January 2004 |
|||
|
|||
http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, |
|||
AND DISTRIBUTION |
|||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
|||
|
|||
1. Definitions. |
|||
|
|||
|
|||
|
|||
"License" shall mean the terms and conditions for use, reproduction, and distribution |
|||
as defined by Sections 1 through 9 of this document. |
|||
|
|||
|
|||
|
|||
"Licensor" shall mean the copyright owner or entity authorized by the copyright |
|||
owner that is granting the License. |
|||
|
|||
|
|||
|
|||
"Legal Entity" shall mean the union of the acting entity and all other entities |
|||
that control, are controlled by, or are under common control with that entity. |
|||
For the purposes of this definition, "control" means (i) the power, direct |
|||
or indirect, to cause the direction or management of such entity, whether |
|||
by contract or otherwise, or (ii) ownership of fifty percent (50%) or more |
|||
of the outstanding shares, or (iii) beneficial ownership of such entity. |
|||
|
|||
|
|||
|
|||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions |
|||
granted by this License. |
|||
|
|||
|
|||
|
|||
"Source" form shall mean the preferred form for making modifications, including |
|||
but not limited to software source code, documentation source, and configuration |
|||
files. |
|||
|
|||
|
|||
|
|||
"Object" form shall mean any form resulting from mechanical transformation |
|||
or translation of a Source form, including but not limited to compiled object |
|||
code, generated documentation, and conversions to other media types. |
|||
|
|||
|
|||
|
|||
"Work" shall mean the work of authorship, whether in Source or Object form, |
|||
made available under the License, as indicated by a copyright notice that |
|||
is included in or attached to the work (an example is provided in the Appendix |
|||
below). |
|||
|
|||
|
|||
|
|||
"Derivative Works" shall mean any work, whether in Source or Object form, |
|||
that is based on (or derived from) the Work and for which the editorial revisions, |
|||
annotations, elaborations, or other modifications represent, as a whole, an |
|||
original work of authorship. For the purposes of this License, Derivative |
|||
Works shall not include works that remain separable from, or merely link (or |
|||
bind by name) to the interfaces of, the Work and Derivative Works thereof. |
|||
|
|||
|
|||
|
|||
"Contribution" shall mean any work of authorship, including the original version |
|||
of the Work and any modifications or additions to that Work or Derivative |
|||
Works thereof, that is intentionally submitted to Licensor for inclusion in |
|||
the Work by the copyright owner or by an individual or Legal Entity authorized |
|||
to submit on behalf of the copyright owner. For the purposes of this definition, |
|||
"submitted" means any form of electronic, verbal, or written communication |
|||
sent to the Licensor or its representatives, including but not limited to |
|||
communication on electronic mailing lists, source code control systems, and |
|||
issue tracking systems that are managed by, or on behalf of, the Licensor |
|||
for the purpose of discussing and improving the Work, but excluding communication |
|||
that is conspicuously marked or otherwise designated in writing by the copyright |
|||
owner as "Not a Contribution." |
|||
|
|||
|
|||
|
|||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf |
|||
of whom a Contribution has been received by Licensor and subsequently incorporated |
|||
within the Work. |
|||
|
|||
2. Grant of Copyright License. Subject to the terms and conditions of this |
|||
License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, |
|||
no-charge, royalty-free, irrevocable copyright license to reproduce, prepare |
|||
Derivative Works of, publicly display, publicly perform, sublicense, and distribute |
|||
the Work and such Derivative Works in Source or Object form. |
|||
|
|||
3. Grant of Patent License. Subject to the terms and conditions of this License, |
|||
each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, |
|||
no-charge, royalty-free, irrevocable (except as stated in this section) patent |
|||
license to make, have made, use, offer to sell, sell, import, and otherwise |
|||
transfer the Work, where such license applies only to those patent claims |
|||
licensable by such Contributor that are necessarily infringed by their Contribution(s) |
|||
alone or by combination of their Contribution(s) with the Work to which such |
|||
Contribution(s) was submitted. If You institute patent litigation against |
|||
any entity (including a cross-claim or counterclaim in a lawsuit) alleging |
|||
that the Work or a Contribution incorporated within the Work constitutes direct |
|||
or contributory patent infringement, then any patent licenses granted to You |
|||
under this License for that Work shall terminate as of the date such litigation |
|||
is filed. |
|||
|
|||
4. Redistribution. You may reproduce and distribute copies of the Work or |
|||
Derivative Works thereof in any medium, with or without modifications, and |
|||
in Source or Object form, provided that You meet the following conditions: |
|||
|
|||
(a) You must give any other recipients of the Work or Derivative Works a copy |
|||
of this License; and |
|||
|
|||
(b) You must cause any modified files to carry prominent notices stating that |
|||
You changed the files; and |
|||
|
|||
(c) You must retain, in the Source form of any Derivative Works that You distribute, |
|||
all copyright, patent, trademark, and attribution notices from the Source |
|||
form of the Work, excluding those notices that do not pertain to any part |
|||
of the Derivative Works; and |
|||
|
|||
(d) If the Work includes a "NOTICE" text file as part of its distribution, |
|||
then any Derivative Works that You distribute must include a readable copy |
|||
of the attribution notices contained within such NOTICE file, excluding those |
|||
notices that do not pertain to any part of the Derivative Works, in at least |
|||
one of the following places: within a NOTICE text file distributed as part |
|||
of the Derivative Works; within the Source form or documentation, if provided |
|||
along with the Derivative Works; or, within a display generated by the Derivative |
|||
Works, if and wherever such third-party notices normally appear. The contents |
|||
of the NOTICE file are for informational purposes only and do not modify the |
|||
License. You may add Your own attribution notices within Derivative Works |
|||
that You distribute, alongside or as an addendum to the NOTICE text from the |
|||
Work, provided that such additional attribution notices cannot be construed |
|||
as modifying the License. |
|||
|
|||
You may add Your own copyright statement to Your modifications and may provide |
|||
additional or different license terms and conditions for use, reproduction, |
|||
or distribution of Your modifications, or for any such Derivative Works as |
|||
a whole, provided Your use, reproduction, and distribution of the Work otherwise |
|||
complies with the conditions stated in this License. |
|||
|
|||
5. Submission of Contributions. Unless You explicitly state otherwise, any |
|||
Contribution intentionally submitted for inclusion in the Work by You to the |
|||
Licensor shall be under the terms and conditions of this License, without |
|||
any additional terms or conditions. Notwithstanding the above, nothing herein |
|||
shall supersede or modify the terms of any separate license agreement you |
|||
may have executed with Licensor regarding such Contributions. |
|||
|
|||
6. Trademarks. This License does not grant permission to use the trade names, |
|||
trademarks, service marks, or product names of the Licensor, except as required |
|||
for reasonable and customary use in describing the origin of the Work and |
|||
reproducing the content of the NOTICE file. |
|||
|
|||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to |
|||
in writing, Licensor provides the Work (and each Contributor provides its |
|||
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
|||
KIND, either express or implied, including, without limitation, any warranties |
|||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR |
|||
A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness |
|||
of using or redistributing the Work and assume any risks associated with Your |
|||
exercise of permissions under this License. |
|||
|
|||
8. Limitation of Liability. In no event and under no legal theory, whether |
|||
in tort (including negligence), contract, or otherwise, unless required by |
|||
applicable law (such as deliberate and grossly negligent acts) or agreed to |
|||
in writing, shall any Contributor be liable to You for damages, including |
|||
any direct, indirect, special, incidental, or consequential damages of any |
|||
character arising as a result of this License or out of the use or inability |
|||
to use the Work (including but not limited to damages for loss of goodwill, |
|||
work stoppage, computer failure or malfunction, or any and all other commercial |
|||
damages or losses), even if such Contributor has been advised of the possibility |
|||
of such damages. |
|||
|
|||
9. Accepting Warranty or Additional Liability. While redistributing the Work |
|||
or Derivative Works thereof, You may choose to offer, and charge a fee for, |
|||
acceptance of support, warranty, indemnity, or other liability obligations |
|||
and/or rights consistent with this License. However, in accepting such obligations, |
|||
You may act only on Your own behalf and on Your sole responsibility, not on |
|||
behalf of any other Contributor, and only if You agree to indemnify, defend, |
|||
and hold each Contributor harmless for any liability incurred by, or claims |
|||
asserted against, such Contributor by reason of your accepting any such warranty |
|||
or additional liability. END OF TERMS AND CONDITIONS |
|||
|
|||
APPENDIX: How to apply the Apache License to your work. |
|||
|
|||
To apply the Apache License to your work, attach the following boilerplate |
|||
notice, with the fields enclosed by brackets "[]" replaced with your own identifying |
|||
information. (Don't include the brackets!) The text should be enclosed in |
|||
the appropriate comment syntax for the file format. We also recommend that |
|||
a file or class name and description of purpose be included on the same "printed |
|||
page" as the copyright notice for easier identification within third-party |
|||
archives. |
|||
|
|||
Copyright [yyyy] [name of copyright owner] |
|||
|
|||
Licensed under the Apache License, Version 2.0 (the "License"); |
|||
|
|||
you may not use this file except in compliance with the License. |
|||
|
|||
You may obtain a copy of the License at |
|||
|
|||
http://www.apache.org/licenses/LICENSE-2.0 |
|||
|
|||
Unless required by applicable law or agreed to in writing, software |
|||
|
|||
distributed under the License is distributed on an "AS IS" BASIS, |
|||
|
|||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
|
|||
See the License for the specific language governing permissions and |
|||
|
|||
limitations under the License. |
|||
"License" shall mean the terms and conditions for use, reproduction, |
|||
and distribution as defined by Sections 1 through 9 of this document. |
|||
|
|||
"Licensor" shall mean the copyright owner or entity authorized by |
|||
the copyright owner that is granting the License. |
|||
|
|||
"Legal Entity" shall mean the union of the acting entity and all |
|||
other entities that control, are controlled by, or are under common |
|||
control with that entity. For the purposes of this definition, |
|||
"control" means (i) the power, direct or indirect, to cause the |
|||
direction or management of such entity, whether by contract or |
|||
otherwise, or (ii) ownership of fifty percent (50%) or more of the |
|||
outstanding shares, or (iii) beneficial ownership of such entity. |
|||
|
|||
"You" (or "Your") shall mean an individual or Legal Entity |
|||
exercising permissions granted by this License. |
|||
|
|||
"Source" form shall mean the preferred form for making modifications, |
|||
including but not limited to software source code, documentation |
|||
source, and configuration files. |
|||
|
|||
"Object" form shall mean any form resulting from mechanical |
|||
transformation or translation of a Source form, including but |
|||
not limited to compiled object code, generated documentation, |
|||
and conversions to other media types. |
|||
|
|||
"Work" shall mean the work of authorship, whether in Source or |
|||
Object form, made available under the License, as indicated by a |
|||
copyright notice that is included in or attached to the work |
|||
(an example is provided in the Appendix below). |
|||
|
|||
"Derivative Works" shall mean any work, whether in Source or Object |
|||
form, that is based on (or derived from) the Work and for which the |
|||
editorial revisions, annotations, elaborations, or other modifications |
|||
represent, as a whole, an original work of authorship. For the purposes |
|||
of this License, Derivative Works shall not include works that remain |
|||
separable from, or merely link (or bind by name) to the interfaces of, |
|||
the Work and Derivative Works thereof. |
|||
|
|||
"Contribution" shall mean any work of authorship, including |
|||
the original version of the Work and any modifications or additions |
|||
to that Work or Derivative Works thereof, that is intentionally |
|||
submitted to Licensor for inclusion in the Work by the copyright owner |
|||
or by an individual or Legal Entity authorized to submit on behalf of |
|||
the copyright owner. For the purposes of this definition, "submitted" |
|||
means any form of electronic, verbal, or written communication sent |
|||
to the Licensor or its representatives, including but not limited to |
|||
communication on electronic mailing lists, source code control systems, |
|||
and issue tracking systems that are managed by, or on behalf of, the |
|||
Licensor for the purpose of discussing and improving the Work, but |
|||
excluding communication that is conspicuously marked or otherwise |
|||
designated in writing by the copyright owner as "Not a Contribution." |
|||
|
|||
"Contributor" shall mean Licensor and any individual or Legal Entity |
|||
on behalf of whom a Contribution has been received by Licensor and |
|||
subsequently incorporated within the Work. |
|||
|
|||
2. Grant of Copyright License. Subject to the terms and conditions of |
|||
this License, each Contributor hereby grants to You a perpetual, |
|||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|||
copyright license to reproduce, prepare Derivative Works of, |
|||
publicly display, publicly perform, sublicense, and distribute the |
|||
Work and such Derivative Works in Source or Object form. |
|||
|
|||
3. Grant of Patent License. Subject to the terms and conditions of |
|||
this License, each Contributor hereby grants to You a perpetual, |
|||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|||
(except as stated in this section) patent license to make, have made, |
|||
use, offer to sell, sell, import, and otherwise transfer the Work, |
|||
where such license applies only to those patent claims licensable |
|||
by such Contributor that are necessarily infringed by their |
|||
Contribution(s) alone or by combination of their Contribution(s) |
|||
with the Work to which such Contribution(s) was submitted. If You |
|||
institute patent litigation against any entity (including a |
|||
cross-claim or counterclaim in a lawsuit) alleging that the Work |
|||
or a Contribution incorporated within the Work constitutes direct |
|||
or contributory patent infringement, then any patent licenses |
|||
granted to You under this License for that Work shall terminate |
|||
as of the date such litigation is filed. |
|||
|
|||
4. Redistribution. You may reproduce and distribute copies of the |
|||
Work or Derivative Works thereof in any medium, with or without |
|||
modifications, and in Source or Object form, provided that You |
|||
meet the following conditions: |
|||
|
|||
(a) You must give any other recipients of the Work or |
|||
Derivative Works a copy of this License; and |
|||
|
|||
(b) You must cause any modified files to carry prominent notices |
|||
stating that You changed the files; and |
|||
|
|||
(c) You must retain, in the Source form of any Derivative Works |
|||
that You distribute, all copyright, patent, trademark, and |
|||
attribution notices from the Source form of the Work, |
|||
excluding those notices that do not pertain to any part of |
|||
the Derivative Works; and |
|||
|
|||
(d) If the Work includes a "NOTICE" text file as part of its |
|||
distribution, then any Derivative Works that You distribute must |
|||
include a readable copy of the attribution notices contained |
|||
within such NOTICE file, excluding those notices that do not |
|||
pertain to any part of the Derivative Works, in at least one |
|||
of the following places: within a NOTICE text file distributed |
|||
as part of the Derivative Works; within the Source form or |
|||
documentation, if provided along with the Derivative Works; or, |
|||
within a display generated by the Derivative Works, if and |
|||
wherever such third-party notices normally appear. The contents |
|||
of the NOTICE file are for informational purposes only and |
|||
do not modify the License. You may add Your own attribution |
|||
notices within Derivative Works that You distribute, alongside |
|||
or as an addendum to the NOTICE text from the Work, provided |
|||
that such additional attribution notices cannot be construed |
|||
as modifying the License. |
|||
|
|||
You may add Your own copyright statement to Your modifications and |
|||
may provide additional or different license terms and conditions |
|||
for use, reproduction, or distribution of Your modifications, or |
|||
for any such Derivative Works as a whole, provided Your use, |
|||
reproduction, and distribution of the Work otherwise complies with |
|||
the conditions stated in this License. |
|||
|
|||
5. Submission of Contributions. Unless You explicitly state otherwise, |
|||
any Contribution intentionally submitted for inclusion in the Work |
|||
by You to the Licensor shall be under the terms and conditions of |
|||
this License, without any additional terms or conditions. |
|||
Notwithstanding the above, nothing herein shall supersede or modify |
|||
the terms of any separate license agreement you may have executed |
|||
with Licensor regarding such Contributions. |
|||
|
|||
6. Trademarks. This License does not grant permission to use the trade |
|||
names, trademarks, service marks, or product names of the Licensor, |
|||
except as required for reasonable and customary use in describing the |
|||
origin of the Work and reproducing the content of the NOTICE file. |
|||
|
|||
7. Disclaimer of Warranty. Unless required by applicable law or |
|||
agreed to in writing, Licensor provides the Work (and each |
|||
Contributor provides its Contributions) on an "AS IS" BASIS, |
|||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|||
implied, including, without limitation, any warranties or conditions |
|||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
|||
PARTICULAR PURPOSE. You are solely responsible for determining the |
|||
appropriateness of using or redistributing the Work and assume any |
|||
risks associated with Your exercise of permissions under this License. |
|||
|
|||
8. Limitation of Liability. In no event and under no legal theory, |
|||
whether in tort (including negligence), contract, or otherwise, |
|||
unless required by applicable law (such as deliberate and grossly |
|||
negligent acts) or agreed to in writing, shall any Contributor be |
|||
liable to You for damages, including any direct, indirect, special, |
|||
incidental, or consequential damages of any character arising as a |
|||
result of this License or out of the use or inability to use the |
|||
Work (including but not limited to damages for loss of goodwill, |
|||
work stoppage, computer failure or malfunction, or any and all |
|||
other commercial damages or losses), even if such Contributor |
|||
has been advised of the possibility of such damages. |
|||
|
|||
9. Accepting Warranty or Additional Liability. While redistributing |
|||
the Work or Derivative Works thereof, You may choose to offer, |
|||
and charge a fee for, acceptance of support, warranty, indemnity, |
|||
or other liability obligations and/or rights consistent with this |
|||
License. However, in accepting such obligations, You may act only |
|||
on Your own behalf and on Your sole responsibility, not on behalf |
|||
of any other Contributor, and only if You agree to indemnify, |
|||
defend, and hold each Contributor harmless for any liability |
|||
incurred by, or claims asserted against, such Contributor by reason |
|||
of your accepting any such warranty or additional liability. |
|||
|
|||
END OF TERMS AND CONDITIONS |
|||
|
|||
APPENDIX: How to apply the Apache License to your work. |
|||
|
|||
To apply the Apache License to your work, attach the following |
|||
boilerplate notice, with the fields enclosed by brackets "[]" |
|||
replaced with your own identifying information. (Don't include |
|||
the brackets!) The text should be enclosed in the appropriate |
|||
comment syntax for the file format. We also recommend that a |
|||
file or class name and description of purpose be included on the |
|||
same "printed page" as the copyright notice for easier |
|||
identification within third-party archives. |
|||
|
|||
Copyright 2020 Justin Lecher |
|||
|
|||
Licensed under the Apache License, Version 2.0 (the "License"); |
|||
you may not use this file except in compliance with the License. |
|||
You may obtain a copy of the License at |
|||
|
|||
http://www.apache.org/licenses/LICENSE-2.0 |
|||
|
|||
Unless required by applicable law or agreed to in writing, software |
|||
distributed under the License is distributed on an "AS IS" BASIS, |
|||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
See the License for the specific language governing permissions and |
|||
limitations under the License. |
@ -0,0 +1,59 @@ |
|||
PIPENV := pipenv run |
|||
PYTESTARGS ?= -x -vvl |
|||
|
|||
.PHONY: help |
|||
|
|||
help: |
|||
@echo "Make targets:\n" |
|||
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' |
|||
|
|||
################################################################################
|
|||
#
|
|||
# Environment Setup
|
|||
#
|
|||
################################################################################
|
|||
.PHONY: setup setup-dev |
|||
|
|||
Pipfile.lock: Pipfile |
|||
pipenv lock |
|||
|
|||
requirements.txt: Pipfile.lock |
|||
pipenv lock -r > $@ |
|||
|
|||
setup.done: Pipfile.lock |
|||
pipenv sync |
|||
touch setup.done |
|||
|
|||
setup-dev.done: Pipfile.lock |
|||
pipenv sync --dev |
|||
touch setup-dev.done |
|||
|
|||
setup: setup.done |
|||
setup-dev: setup-dev.done |
|||
|
|||
################################################################################
|
|||
#
|
|||
# Release management
|
|||
#
|
|||
################################################################################
|
|||
.PHONY: release release-major release-micro |
|||
|
|||
release: setup-dev.done |
|||
$(PIPENV) bumpversion --verbose minor |
|||
|
|||
release-major: setup-dev.done |
|||
$(PIPENV) bumpversion --verbose major |
|||
|
|||
release-micro: setup-dev.done |
|||
$(PIPENV) bumpversion --verbose patch |
|||
|
|||
################################################################################
|
|||
#
|
|||
# Custom options
|
|||
#
|
|||
################################################################################
|
|||
.PHONY: test |
|||
|
|||
test: setup-dev.done |
|||
$(PIPENV) black --line-length 128 --check --diff . |
|||
$(PIPENV) pytest ${PYTESTARGS} . |
@ -0,0 +1,19 @@ |
|||
[[source]] |
|||
name = "pypi" |
|||
url = "https://pypi.org/simple" |
|||
verify_ssl = true |
|||
|
|||
[dev-packages] |
|||
bumpversion = "*" |
|||
black = "*" |
|||
PyYAML = "*" |
|||
pytest = "*" |
|||
pytest-cookies = "*" |
|||
|
|||
[packages] |
|||
|
|||
[requires] |
|||
python_version = "3" |
|||
|
|||
[pipenv] |
|||
allow_prereleases = true |
@ -0,0 +1,412 @@ |
|||
{ |
|||
"_meta": { |
|||
"hash": { |
|||
"sha256": "178753b74593d7161439f9c268be6d4f1d03e4936043e8c9d9d7a15054c91d79" |
|||
}, |
|||
"pipfile-spec": 6, |
|||
"requires": { |
|||
"python_version": "3" |
|||
}, |
|||
"sources": [ |
|||
{ |
|||
"name": "pypi", |
|||
"url": "https://pypi.org/simple", |
|||
"verify_ssl": true |
|||
} |
|||
] |
|||
}, |
|||
"default": {}, |
|||
"develop": { |
|||
"appdirs": { |
|||
"hashes": [ |
|||
"sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", |
|||
"sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" |
|||
], |
|||
"version": "==1.4.4" |
|||
}, |
|||
"arrow": { |
|||
"hashes": [ |
|||
"sha256:002f2315cf4c8404de737c42860441732d339bbc57fee584e2027520e055ecc1", |
|||
"sha256:82dd5e13b733787d4eb0fef42d1ee1a99136dc1d65178f70373b3678b3181bfc" |
|||
], |
|||
"version": "==0.13.2" |
|||
}, |
|||
"attrs": { |
|||
"hashes": [ |
|||
"sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", |
|||
"sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==20.3.0" |
|||
}, |
|||
"binaryornot": { |
|||
"hashes": [ |
|||
"sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", |
|||
"sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4" |
|||
], |
|||
"version": "==0.4.4" |
|||
}, |
|||
"black": { |
|||
"hashes": [ |
|||
"sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==20.8b1" |
|||
}, |
|||
"bump2version": { |
|||
"hashes": [ |
|||
"sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", |
|||
"sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6" |
|||
], |
|||
"markers": "python_version >= '3.5'", |
|||
"version": "==1.0.1" |
|||
}, |
|||
"bumpversion": { |
|||
"hashes": [ |
|||
"sha256:4ba55e4080d373f80177b4dabef146c07ce73c7d1377aabf9d3c3ae1f94584a6", |
|||
"sha256:4eb3267a38194d09f048a2179980bb4803701969bff2c85fa8f6d1ce050be15e" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==0.6.0" |
|||
}, |
|||
"certifi": { |
|||
"hashes": [ |
|||
"sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", |
|||
"sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" |
|||
], |
|||
"version": "==2020.12.5" |
|||
}, |
|||
"chardet": { |
|||
"hashes": [ |
|||
"sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", |
|||
"sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", |
|||
"version": "==4.0.0" |
|||
}, |
|||
"click": { |
|||
"hashes": [ |
|||
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", |
|||
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", |
|||
"version": "==7.1.2" |
|||
}, |
|||
"cookiecutter": { |
|||
"hashes": [ |
|||
"sha256:430eb882d028afb6102c084bab6cf41f6559a77ce9b18dc6802e3bc0cc5f4a30", |
|||
"sha256:efb6b2d4780feda8908a873e38f0e61778c23f6a2ea58215723bcceb5b515dac" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", |
|||
"version": "==1.7.2" |
|||
}, |
|||
"idna": { |
|||
"hashes": [ |
|||
"sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", |
|||
"sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==2.10" |
|||
}, |
|||
"jinja2": { |
|||
"hashes": [ |
|||
"sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0", |
|||
"sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", |
|||
"version": "==2.11.2" |
|||
}, |
|||
"jinja2-time": { |
|||
"hashes": [ |
|||
"sha256:d14eaa4d315e7688daa4969f616f226614350c48730bfa1692d2caebd8c90d40", |
|||
"sha256:d3eab6605e3ec8b7a0863df09cc1d23714908fa61aa6986a845c20ba488b4efa" |
|||
], |
|||
"version": "==0.2.0" |
|||
}, |
|||
"markupsafe": { |
|||
"hashes": [ |
|||
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", |
|||
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", |
|||
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", |
|||
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", |
|||
"sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", |
|||
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", |
|||
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", |
|||
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", |
|||
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", |
|||
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", |
|||
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", |
|||
"sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", |
|||
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", |
|||
"sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", |
|||
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", |
|||
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", |
|||
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", |
|||
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", |
|||
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", |
|||
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", |
|||
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", |
|||
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", |
|||
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", |
|||
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", |
|||
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", |
|||
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", |
|||
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", |
|||
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", |
|||
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", |
|||
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", |
|||
"sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", |
|||
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", |
|||
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==1.1.1" |
|||
}, |
|||
"more-itertools": { |
|||
"hashes": [ |
|||
"sha256:8e1a2a43b2f2727425f2b5839587ae37093f19153dc26c0927d1048ff6557330", |
|||
"sha256:b3a9005928e5bed54076e6e549c792b306fddfe72b2d1d22dd63d42d5d3899cf" |
|||
], |
|||
"markers": "python_version >= '3.5'", |
|||
"version": "==8.6.0" |
|||
}, |
|||
"mypy-extensions": { |
|||
"hashes": [ |
|||
"sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", |
|||
"sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" |
|||
], |
|||
"version": "==0.4.3" |
|||
}, |
|||
"packaging": { |
|||
"hashes": [ |
|||
"sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", |
|||
"sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==20.8" |
|||
}, |
|||
"pathspec": { |
|||
"hashes": [ |
|||
"sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", |
|||
"sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" |
|||
], |
|||
"version": "==0.8.1" |
|||
}, |
|||
"pluggy": { |
|||
"hashes": [ |
|||
"sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", |
|||
"sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==0.13.1" |
|||
}, |
|||
"poyo": { |
|||
"hashes": [ |
|||
"sha256:3e2ca8e33fdc3c411cd101ca395668395dd5dc7ac775b8e809e3def9f9fe041a", |
|||
"sha256:e26956aa780c45f011ca9886f044590e2d8fd8b61db7b1c1cf4e0869f48ed4dd" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==0.5.0" |
|||
}, |
|||
"py": { |
|||
"hashes": [ |
|||
"sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", |
|||
"sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==1.10.0" |
|||
}, |
|||
"pyparsing": { |
|||
"hashes": [ |
|||
"sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", |
|||
"sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" |
|||
], |
|||
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==2.4.7" |
|||
}, |
|||
"pytest": { |
|||
"hashes": [ |
|||
"sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1", |
|||
"sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==5.4.3" |
|||
}, |
|||
"pytest-cookies": { |
|||
"hashes": [ |
|||
"sha256:9dc21d7ae56ef38a5fddb0e11eb5cb4c993907a6cafb6dd11d62c41e47af391b", |
|||
"sha256:b33f7f51772444b9b25991c4eeaea74a69dc9a6e08b09596b9574548a8812f34" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==0.5.1" |
|||
}, |
|||
"python-dateutil": { |
|||
"hashes": [ |
|||
"sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", |
|||
"sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==2.8.1" |
|||
}, |
|||
"python-slugify": { |
|||
"hashes": [ |
|||
"sha256:69a517766e00c1268e5bbfc0d010a0a8508de0b18d30ad5a1ff357f8ae724270" |
|||
], |
|||
"version": "==4.0.1" |
|||
}, |
|||
"pyyaml": { |
|||
"hashes": [ |
|||
"sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97", |
|||
"sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76", |
|||
"sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2", |
|||
"sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e", |
|||
"sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648", |
|||
"sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf", |
|||
"sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f", |
|||
"sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2", |
|||
"sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee", |
|||
"sha256:ad9c67312c84def58f3c04504727ca879cb0013b2517c85a9a253f0cb6380c0a", |
|||
"sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d", |
|||
"sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c", |
|||
"sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a" |
|||
], |
|||
"index": "pypi", |
|||
"version": "==5.3.1" |
|||
}, |
|||
"regex": { |
|||
"hashes": [ |
|||
"sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", |
|||
"sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", |
|||
"sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", |
|||
"sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", |
|||
"sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", |
|||
"sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", |
|||
"sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", |
|||
"sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", |
|||
"sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", |
|||
"sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", |
|||
"sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", |
|||
"sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", |
|||
"sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", |
|||
"sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", |
|||
"sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", |
|||
"sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", |
|||
"sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", |
|||
"sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", |
|||
"sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", |
|||
"sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", |
|||
"sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", |
|||
"sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", |
|||
"sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", |
|||
"sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", |
|||
"sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", |
|||
"sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", |
|||
"sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", |
|||
"sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", |
|||
"sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", |
|||
"sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", |
|||
"sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", |
|||
"sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", |
|||
"sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", |
|||
"sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", |
|||
"sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", |
|||
"sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", |
|||
"sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", |
|||
"sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", |
|||
"sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", |
|||
"sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", |
|||
"sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" |
|||
], |
|||
"version": "==2020.11.13" |
|||
}, |
|||
"requests": { |
|||
"hashes": [ |
|||
"sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", |
|||
"sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", |
|||
"version": "==2.25.1" |
|||
}, |
|||
"six": { |
|||
"hashes": [ |
|||
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", |
|||
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==1.15.0" |
|||
}, |
|||
"text-unidecode": { |
|||
"hashes": [ |
|||
"sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", |
|||
"sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93" |
|||
], |
|||
"version": "==1.3" |
|||
}, |
|||
"toml": { |
|||
"hashes": [ |
|||
"sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", |
|||
"sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" |
|||
], |
|||
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", |
|||
"version": "==0.10.2" |
|||
}, |
|||
"typed-ast": { |
|||
"hashes": [ |
|||
"sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", |
|||
"sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", |
|||
"sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", |
|||
"sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", |
|||
"sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", |
|||
"sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", |
|||
"sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", |
|||
"sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", |
|||
"sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", |
|||
"sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", |
|||
"sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", |
|||
"sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", |
|||
"sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", |
|||
"sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", |
|||
"sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", |
|||
"sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", |
|||
"sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", |
|||
"sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", |
|||
"sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", |
|||
"sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", |
|||
"sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", |
|||
"sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", |
|||
"sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", |
|||
"sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", |
|||
"sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", |
|||
"sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", |
|||
"sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", |
|||
"sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", |
|||
"sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", |
|||
"sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" |
|||
], |
|||
"version": "==1.4.2" |
|||
}, |
|||
"typing-extensions": { |
|||
"hashes": [ |
|||
"sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", |
|||
"sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", |
|||
"sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" |
|||
], |
|||
"version": "==3.7.4.3" |
|||
}, |
|||
"urllib3": { |
|||
"hashes": [ |
|||
"sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", |
|||
"sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" |
|||
], |
|||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", |
|||
"version": "==1.26.2" |
|||
}, |
|||
"wcwidth": { |
|||
"hashes": [ |
|||
"sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", |
|||
"sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" |
|||
], |
|||
"version": "==0.2.5" |
|||
} |
|||
} |
|||
} |
@ -1,3 +1,3 @@ |
|||
# cookiecutter-ansible-collection |
|||
|
|||
Create your ansible colleciton from it |
|||
Create your collection role from it |
@ -0,0 +1,7 @@ |
|||
{ |
|||
"full_name": "John Doe", |
|||
"email": "john@doe.com", |
|||
"ansible_namespace": "john_d", |
|||
"ansible_collection": "collection_name", |
|||
"role_short_description": "Skeleton for ansible collections" |
|||
} |
@ -0,0 +1,35 @@ |
|||
#!/usr/bin/env python3 |
|||
|
|||
import os |
|||
import shutil |
|||
|
|||
|
|||
PROJECT_DIRECTORY = os.path.realpath(os.path.curdir) |
|||
|
|||
|
|||
def create_folder(filepath): |
|||
dir = os.path.join(PROJECT_DIRECTORY, filepath) |
|||
if not os.path.isdir(dir): |
|||
os.mkdir(dir) |
|||
|
|||
|
|||
def remove_file_or_folder(filepath): |
|||
fp = os.path.join(PROJECT_DIRECTORY, filepath) |
|||
if os.path.isdir(fp): |
|||
shutil.rmtree(fp) |
|||
else: |
|||
os.remove(fp) |
|||
|
|||
|
|||
def gen_role_folders(): |
|||
ansible_role_folders = ( |
|||
"docs", |
|||
"plugins", |
|||
"roles", |
|||
) |
|||
for d in ansible_role_folders: |
|||
create_folder(d) |
|||
|
|||
|
|||
if __name__ == "__main__": |
|||
gen_role_folders() |
@ -0,0 +1,121 @@ |
|||
import datetime |
|||
import os |
|||
import shlex |
|||
import subprocess |
|||
import sys |
|||
|
|||
import pytest |
|||
|
|||
from contextlib import contextmanager |
|||
|
|||
from cookiecutter.utils import rmtree |
|||
|
|||
ANSIBLE_COLLECTION_DIRS = ( |
|||
"docs", |
|||
"plugins", |
|||
"roles", |
|||
) |
|||
ANSIBLE_COLLECTION_FILES = ( |
|||
".bumpversion.cfg", |
|||
".gitignore", |
|||
".yamllint", |
|||
"galaxy.yml", |
|||
"LICENSE", |
|||
"Makefile", |
|||
"Pipfile", |
|||
"README.md", |
|||
) |
|||
|
|||
|
|||
@contextmanager |
|||
def inside_dir(dirpath): |
|||
""" |
|||
Execute code from inside the given directory |
|||
:param dirpath: String, path of the directory the command is being run. |
|||
""" |
|||
old_path = os.getcwd() |
|||
try: |
|||
os.chdir(dirpath) |
|||
yield |
|||
finally: |
|||
os.chdir(old_path) |
|||
|
|||
|
|||
@contextmanager |
|||
def bake_in_temp_dir(cookies, *args, **kwargs): |
|||
""" |
|||
Delete the temporal directory that is created when executing the tests |
|||
:param cookies: pytest_cookies.Cookies, |
|||
cookie to be baked and its temporal files will be removed |
|||
""" |
|||
result = cookies.bake(*args, **kwargs) |
|||
try: |
|||
yield result |
|||
finally: |
|||
rmtree(str(result.project)) |
|||
|
|||
|
|||
def run_inside_dir(command, dirpath): |
|||
""" |
|||
Run a command from inside a given directory, returning the exit status |
|||
:param command: Command that will be executed |
|||
:param dirpath: String, path of the directory the command is being run. |
|||
""" |
|||
with inside_dir(dirpath): |
|||
return subprocess.check_call(shlex.split(command)) |
|||
|
|||
|
|||
def check_output_inside_dir(command, dirpath): |
|||
"Run a command from inside a given directory, returning the command output" |
|||
with inside_dir(dirpath): |
|||
return subprocess.check_output(shlex.split(command)) |
|||
|
|||
|
|||
def check_project_content(result, files, dirs): |
|||
assert result.exit_code == 0 |
|||
found_toplevel_files = [f.basename for f in result.project.listdir()] |
|||
|
|||
for f in files: |
|||
assert result.project.join(f).check(file=1) |
|||
found_toplevel_files.remove(f) |
|||
for d in dirs: |
|||
assert result.project.join(d).check(dir=1) |
|||
found_toplevel_files.remove(d) |
|||
try: |
|||
assert len(found_toplevel_files) == 0 |
|||
except AssertionError as e: |
|||
print(found_toplevel_files) |
|||
raise e |
|||
|
|||
|
|||
def project_info(result): |
|||
"""Get toplevel dir, project_slug, and project dir from baked cookies""" |
|||
project_path = str(result.project) |
|||
project_slug = os.path.split(project_path)[-1] |
|||
project_dir = os.path.join(project_path, project_slug) |
|||
return project_path, project_slug, project_dir |
|||
|
|||
|
|||
def test_bake_with_defaults(cookies): |
|||
with bake_in_temp_dir(cookies) as result: |
|||
assert result.project.isdir() |
|||
assert result.exit_code == 0 |
|||
assert result.exception is None |
|||
|
|||
found_toplevel_files = [f.basename for f in result.project.listdir()] |
|||
assert "Makefile" in found_toplevel_files |
|||
assert "README.md" in found_toplevel_files |
|||
|
|||
|
|||
def test_make_help(cookies): |
|||
with bake_in_temp_dir(cookies) as result: |
|||
# The supplied Makefile does not support win32 |
|||
if sys.platform != "win32": |
|||
output = check_output_inside_dir("make help", str(result.project)) |
|||
assert b"Make targets" in output |
|||
|
|||
|
|||
def test_bake_role(cookies): |
|||
with bake_in_temp_dir(cookies) as result: |
|||
assert result.exit_code == 0 |
|||
check_project_content(result, ANSIBLE_COLLECTION_FILES, ANSIBLE_COLLECTION_DIRS) |
@ -0,0 +1,8 @@ |
|||
[bumpversion] |
|||
current_version = 0.1.0 |
|||
commit = True |
|||
tag = True |
|||
|
|||
[bumpversion:file:galaxy.yml] |
|||
search = version: {current_version} |
|||
replace = version: {new_version} |
@ -0,0 +1,29 @@ |
|||
# IntelliJ |
|||
.idea |
|||
|
|||
# Ansible |
|||
.facts_cache |
|||
|
|||
# VS code |
|||
*workspace |
|||
|
|||
### Python template |
|||
# Byte-compiled / optimized / DLL files |
|||
__pycache__/ |
|||
*.py[cod] |
|||
*$py.class |
|||
|
|||
# C extensions |
|||
*.so |
|||
|
|||
# Installer logs |
|||
pip-log.txt |
|||
pip-delete-this-directory.txt |
|||
|
|||
### Packer template |
|||
# Cache objects |
|||
packer_cache/ |
|||
|
|||
# CUSTOM |
|||
setup*done |
|||
tmp |
@ -0,0 +1,41 @@ |
|||
--- |
|||
# Based on ansible-lint config |
|||
extends: default |
|||
|
|||
yaml-files: |
|||
- '*.yaml' |
|||
- '*.yml' |
|||
|
|||
rules: |
|||
braces: |
|||
max-spaces-inside: 1 |
|||
level: error |
|||
brackets: |
|||
max-spaces-inside: 1 |
|||
level: error |
|||
colons: |
|||
max-spaces-after: -1 |
|||
level: error |
|||
commas: |
|||
max-spaces-after: -1 |
|||
level: error |
|||
comments: disable |
|||
comments-indentation: disable |
|||
document-start: disable |
|||
empty-lines: |
|||
max: 3 |
|||
level: error |
|||
hyphens: |
|||
level: error |
|||
indentation: disable |
|||
key-duplicates: enable |
|||
new-line-at-end-of-file: disable |
|||
new-lines: |
|||
type: unix |
|||
trailing-spaces: disable |
|||
truthy: disable |
|||
line-length: |
|||
max: 128 |
|||
|
|||
ignore: | |
|||
ansible_collections |
@ -0,0 +1,201 @@ |
|||
Apache License |
|||
Version 2.0, January 2004 |
|||
http://www.apache.org/licenses/ |
|||
|
|||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
|||
|
|||
1. Definitions. |
|||
|
|||
"License" shall mean the terms and conditions for use, reproduction, |
|||
and distribution as defined by Sections 1 through 9 of this document. |
|||
|
|||
"Licensor" shall mean the copyright owner or entity authorized by |
|||
the copyright owner that is granting the License. |
|||
|
|||
"Legal Entity" shall mean the union of the acting entity and all |
|||
other entities that control, are controlled by, or are under common |
|||
control with that entity. For the purposes of this definition, |
|||
"control" means (i) the power, direct or indirect, to cause the |
|||
direction or management of such entity, whether by contract or |
|||
otherwise, or (ii) ownership of fifty percent (50%) or more of the |
|||
outstanding shares, or (iii) beneficial ownership of such entity. |
|||
|
|||
"You" (or "Your") shall mean an individual or Legal Entity |
|||
exercising permissions granted by this License. |
|||
|
|||
"Source" form shall mean the preferred form for making modifications, |
|||
including but not limited to software source code, documentation |
|||
source, and configuration files. |
|||
|
|||
"Object" form shall mean any form resulting from mechanical |
|||
transformation or translation of a Source form, including but |
|||
not limited to compiled object code, generated documentation, |
|||
and conversions to other media types. |
|||
|
|||
"Work" shall mean the work of authorship, whether in Source or |
|||
Object form, made available under the License, as indicated by a |
|||
copyright notice that is included in or attached to the work |
|||
(an example is provided in the Appendix below). |
|||
|
|||
"Derivative Works" shall mean any work, whether in Source or Object |
|||
form, that is based on (or derived from) the Work and for which the |
|||
editorial revisions, annotations, elaborations, or other modifications |
|||
represent, as a whole, an original work of authorship. For the purposes |
|||
of this License, Derivative Works shall not include works that remain |
|||
separable from, or merely link (or bind by name) to the interfaces of, |
|||
the Work and Derivative Works thereof. |
|||
|
|||
"Contribution" shall mean any work of authorship, including |
|||
the original version of the Work and any modifications or additions |
|||
to that Work or Derivative Works thereof, that is intentionally |
|||
submitted to Licensor for inclusion in the Work by the copyright owner |
|||
or by an individual or Legal Entity authorized to submit on behalf of |
|||
the copyright owner. For the purposes of this definition, "submitted" |
|||
means any form of electronic, verbal, or written communication sent |
|||
to the Licensor or its representatives, including but not limited to |
|||
communication on electronic mailing lists, source code control systems, |
|||
and issue tracking systems that are managed by, or on behalf of, the |
|||
Licensor for the purpose of discussing and improving the Work, but |
|||
excluding communication that is conspicuously marked or otherwise |
|||
designated in writing by the copyright owner as "Not a Contribution." |
|||
|
|||
"Contributor" shall mean Licensor and any individual or Legal Entity |
|||
on behalf of whom a Contribution has been received by Licensor and |
|||
subsequently incorporated within the Work. |
|||
|
|||
2. Grant of Copyright License. Subject to the terms and conditions of |
|||
this License, each Contributor hereby grants to You a perpetual, |
|||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|||
copyright license to reproduce, prepare Derivative Works of, |
|||
publicly display, publicly perform, sublicense, and distribute the |
|||
Work and such Derivative Works in Source or Object form. |
|||
|
|||
3. Grant of Patent License. Subject to the terms and conditions of |
|||
this License, each Contributor hereby grants to You a perpetual, |
|||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|||
(except as stated in this section) patent license to make, have made, |
|||
use, offer to sell, sell, import, and otherwise transfer the Work, |
|||
where such license applies only to those patent claims licensable |
|||
by such Contributor that are necessarily infringed by their |
|||
Contribution(s) alone or by combination of their Contribution(s) |
|||
with the Work to which such Contribution(s) was submitted. If You |
|||
institute patent litigation against any entity (including a |
|||
cross-claim or counterclaim in a lawsuit) alleging that the Work |
|||
or a Contribution incorporated within the Work constitutes direct |
|||
or contributory patent infringement, then any patent licenses |
|||
granted to You under this License for that Work shall terminate |
|||
as of the date such litigation is filed. |
|||
|
|||
4. Redistribution. You may reproduce and distribute copies of the |
|||
Work or Derivative Works thereof in any medium, with or without |
|||
modifications, and in Source or Object form, provided that You |
|||
meet the following conditions: |
|||
|
|||
(a) You must give any other recipients of the Work or |
|||
Derivative Works a copy of this License; and |
|||
|
|||
(b) You must cause any modified files to carry prominent notices |
|||
stating that You changed the files; and |
|||
|
|||
(c) You must retain, in the Source form of any Derivative Works |
|||
that You distribute, all copyright, patent, trademark, and |
|||
attribution notices from the Source form of the Work, |
|||
excluding those notices that do not pertain to any part of |
|||
the Derivative Works; and |
|||
|
|||
(d) If the Work includes a "NOTICE" text file as part of its |
|||
distribution, then any Derivative Works that You distribute must |
|||
include a readable copy of the attribution notices contained |
|||
within such NOTICE file, excluding those notices that do not |
|||
pertain to any part of the Derivative Works, in at least one |
|||
of the following places: within a NOTICE text file distributed |
|||
as part of the Derivative Works; within the Source form or |
|||
documentation, if provided along with the Derivative Works; or, |
|||
within a display generated by the Derivative Works, if and |
|||
wherever such third-party notices normally appear. The contents |
|||
of the NOTICE file are for informational purposes only and |
|||
do not modify the License. You may add Your own attribution |
|||
notices within Derivative Works that You distribute, alongside |
|||
or as an addendum to the NOTICE text from the Work, provided |
|||
that such additional attribution notices cannot be construed |
|||
as modifying the License. |
|||
|
|||
You may add Your own copyright statement to Your modifications and |
|||
may provide additional or different license terms and conditions |
|||
for use, reproduction, or distribution of Your modifications, or |
|||
for any such Derivative Works as a whole, provided Your use, |
|||
reproduction, and distribution of the Work otherwise complies with |
|||
the conditions stated in this License. |
|||
|
|||
5. Submission of Contributions. Unless You explicitly state otherwise, |
|||
any Contribution intentionally submitted for inclusion in the Work |
|||
by You to the Licensor shall be under the terms and conditions of |
|||
this License, without any additional terms or conditions. |
|||
Notwithstanding the above, nothing herein shall supersede or modify |
|||
the terms of any separate license agreement you may have executed |
|||
with Licensor regarding such Contributions. |
|||
|
|||
6. Trademarks. This License does not grant permission to use the trade |
|||
names, trademarks, service marks, or product names of the Licensor, |
|||
except as required for reasonable and customary use in describing the |
|||
origin of the Work and reproducing the content of the NOTICE file. |
|||
|
|||
7. Disclaimer of Warranty. Unless required by applicable law or |
|||
agreed to in writing, Licensor provides the Work (and each |
|||
Contributor provides its Contributions) on an "AS IS" BASIS, |
|||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|||
implied, including, without limitation, any warranties or conditions |
|||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
|||
PARTICULAR PURPOSE. You are solely responsible for determining the |
|||
appropriateness of using or redistributing the Work and assume any |
|||
risks associated with Your exercise of permissions under this License. |
|||
|
|||
8. Limitation of Liability. In no event and under no legal theory, |
|||
whether in tort (including negligence), contract, or otherwise, |
|||
unless required by applicable law (such as deliberate and grossly |
|||
negligent acts) or agreed to in writing, shall any Contributor be |
|||
liable to You for damages, including any direct, indirect, special, |
|||
incidental, or consequential damages of any character arising as a |
|||
result of this License or out of the use or inability to use the |
|||
Work (including but not limited to damages for loss of goodwill, |
|||
work stoppage, computer failure or malfunction, or any and all |
|||
other commercial damages or losses), even if such Contributor |
|||
has been advised of the possibility of such damages. |
|||
|
|||
9. Accepting Warranty or Additional Liability. While redistributing |
|||
the Work or Derivative Works thereof, You may choose to offer, |
|||
and charge a fee for, acceptance of support, warranty, indemnity, |
|||
or other liability obligations and/or rights consistent with this |
|||
License. However, in accepting such obligations, You may act only |
|||
on Your own behalf and on Your sole responsibility, not on behalf |
|||
of any other Contributor, and only if You agree to indemnify, |
|||
defend, and hold each Contributor harmless for any liability |
|||
incurred by, or claims asserted against, such Contributor by reason |
|||
of your accepting any such warranty or additional liability. |
|||
|
|||
END OF TERMS AND CONDITIONS |
|||
|
|||
APPENDIX: How to apply the Apache License to your work. |
|||
|
|||
To apply the Apache License to your work, attach the following |
|||
boilerplate notice, with the fields enclosed by brackets "[]" |
|||
replaced with your own identifying information. (Don't include |
|||
the brackets!) The text should be enclosed in the appropriate |
|||
comment syntax for the file format. We also recommend that a |
|||
file or class name and description of purpose be included on the |
|||
same "printed page" as the copyright notice for easier |
|||
identification within third-party archives. |
|||
|
|||
Copyright {% now 'local', '%Y' %}, {{ cookiecutter.full_name }} |
|||
|
|||
Licensed under the Apache License, Version 2.0 (the "License"); |
|||
you may not use this file except in compliance with the License. |
|||
You may obtain a copy of the License at |
|||
|
|||
http://www.apache.org/licenses/LICENSE-2.0 |
|||
|
|||
Unless required by applicable law or agreed to in writing, software |
|||
distributed under the License is distributed on an "AS IS" BASIS, |
|||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
See the License for the specific language governing permissions and |
|||
limitations under the License. |
@ -0,0 +1,76 @@ |
|||
ROLES := $(wildcard roles/*/.) |
|||
PIPENV := pipenv run |
|||
BLACKARGS ?= --line-length 128 --check --diff |
|||
|
|||
.PHONY: help update |
|||
|
|||
help: |
|||
@echo "Make targets:\n" |
|||
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' |
|||
|
|||
update: |
|||
cruft update |
|||
|
|||
################################################################################
|
|||
#
|
|||
# Environment Setup
|
|||
#
|
|||
################################################################################
|
|||
.PHONY: setup setup-dev |
|||
|
|||
Pipfile.lock: Pipfile |
|||
pipenv lock |
|||
|
|||
requirements.txt: Pipfile.lock |
|||
pipenv lock -r > $@ |
|||
|
|||
setup.done: Pipfile.lock |
|||
pipenv sync |
|||
touch setup.done |
|||
|
|||
setup-dev.done: Pipfile.lock |
|||
pipenv sync --dev |
|||
touch setup-dev.done |
|||
|
|||
setup: setup.done |
|||
setup-dev: setup-dev.done |
|||
|
|||
################################################################################
|
|||
#
|
|||
# Release management
|
|||
#
|
|||
################################################################################
|
|||
.PHONY: release release-major release-micro |
|||
|
|||
release: setup-dev.done |
|||
$(PIPENV) bumpversion --verbose minor |
|||
|
|||
release-major: setup-dev.done |
|||
$(PIPENV) bumpversion --verbose major |
|||
|
|||
release-micro: setup-dev.done |
|||
$(PIPENV) bumpversion --verbose patch |
|||
|
|||
################################################################################
|
|||
#
|
|||
# Custom targets
|
|||
#
|
|||
################################################################################
|
|||
.PHONY: build clean lint push test $(ROLES) |
|||
|
|||
lint: setup-dev.done |
|||
$(PIPENV) ansible-lint roles |
|||
$(PIPENV) black ${BLACKARGS} . |
|||
$(PIPENV) yamllint . |
|||
|
|||
push: |
|||
git push -v --progress |
|||
git push -v --progress --tags |
|||
|
|||
clean: |
|||
rm -rvf tmp |
|||
|
|||
test: $(ROLES) |
|||
|
|||
$(ROLES): |
|||
$(MAKE) -C $@ test |
@ -0,0 +1,22 @@ |
|||
[[source]] |
|||
name = "pypi" |
|||
url = "https://pypi.org/simple" |
|||
verify_ssl = true |
|||
|
|||
[dev-packages] |
|||
ansible = "*" |
|||
ansible-lint = "*" |
|||
black = "*" |
|||
bumpversion = "*" |
|||
molecule = {extras = [ "ansible", "docker", "lint" ], version = "*"} |
|||
pytest = "*" |
|||
pytest-testinfra = "*" |
|||
yamllint = "*" |
|||
|
|||
[packages] |
|||
|
|||
[requires] |
|||
python_version = "3" |
|||
|
|||
[pipenv] |
|||
allow_prereleases = true |
@ -0,0 +1,5 @@ |
|||
# Ansible Collection - {{ cookiecutter.ansible_namespace }}.{{ cookiecutter.ansible_collection }} |
|||
|
|||
_{{ cookiecutter.role_short_description }}_ |
|||
|
|||
Documentation for the collection. |
@ -0,0 +1,17 @@ |
|||
--- |
|||
namespace: {{ cookiecutter.ansible_namespace }} |
|||
name: {{ cookiecutter.ansible_collection }} |
|||
version: 0.1.0 |
|||
readme: README.md |
|||
authors: |
|||
- {{ cookiecutter.full_name }} <{{ cookiecutter.email }}> |
|||
description: {{ cookiecutter.role_short_description }} |
|||
license: |
|||
- Apache-2.0 |
|||
tags: [] |
|||
dependencies: {} |
|||
|
|||
repository: https://git.ercpe.de/justin/jlec.system.git |
|||
documentation: https://git.ercpe.de/justin/jlec.system/wiki |
|||
issues: https://git.ercpe.de/justin/jlec.system/issues |
|||
build_ignore: [] |
@ -0,0 +1,31 @@ |
|||
# Collections Plugins Directory |
|||
|
|||
This directory can be used to ship various plugins inside an Ansible collection. Each plugin is placed in a folder that |
|||
is named after the type of plugin it is in. It can also include the `module_utils` and `modules` directory that |
|||
would contain module utils and modules respectively. |
|||
|
|||
Here is an example directory of the majority of plugins currently supported by Ansible: |
|||
|
|||
``` |
|||
└── plugins |
|||
├── action |
|||
├── become |
|||
├── cache |
|||
├── callback |
|||
├── cliconf |
|||
├── connection |
|||
├── filter |
|||
├── httpapi |
|||
├── inventory |
|||
├── lookup |
|||
├── module_utils |
|||
├── modules |
|||
├── netconf |
|||
├── shell |
|||
├── strategy |
|||
├── terminal |
|||
├── test |
|||
└── vars |
|||
``` |
|||
|
|||
A full list of plugin types can be found at [Working With Plugins](https://docs.ansible.com/ansible/2.10/plugins/plugins.html). |
Write
Preview
Loading…
Cancel
Save
Reference in new issue