feat: Add abspath to collection.
This commit is contained in:
commit
d7b79fda63
20
LICENSE
Normal file
20
LICENSE
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Laur Ivan
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
24
README.md
Normal file
24
README.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Ansible Collection - laurivan.plugins
|
||||||
|
|
||||||
|
A simple collection to satisfy missing functions from ansible core package.
|
||||||
|
|
||||||
|
Currently has:
|
||||||
|
|
||||||
|
- a filter for `abspath`
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Install collection locally:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible-galaxy collection install laurivan.plugins -p ./collections
|
||||||
|
```
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
- Ansible >= 2.9.6
|
||||||
|
- Python >= 3.8.10
|
57
galaxy.yml
Normal file
57
galaxy.yml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
### REQUIRED
|
||||||
|
|
||||||
|
# The namespace of the collection. This can be a company/brand/organization or product namespace under which all
|
||||||
|
# content lives. May only contain alphanumeric lowercase characters and underscores. Namespaces cannot start with
|
||||||
|
# underscores or numbers and cannot contain consecutive underscores
|
||||||
|
namespace: laurivan
|
||||||
|
|
||||||
|
# The name of the collection. Has the same character restrictions as 'namespace'
|
||||||
|
name: plugins
|
||||||
|
|
||||||
|
# The version of the collection. Must be compatible with semantic versioning
|
||||||
|
version: 1.0.0
|
||||||
|
|
||||||
|
# The path to the Markdown (.md) readme file. This path is relative to the root of the collection
|
||||||
|
readme: README.md
|
||||||
|
|
||||||
|
# A list of the collection's content authors. Can be just the name or in the format 'Full Name <email> (url)
|
||||||
|
# @nicks:irc/im.site#channel'
|
||||||
|
authors:
|
||||||
|
- Laur Ivan <laur.ivan@gmail.com>
|
||||||
|
|
||||||
|
|
||||||
|
### OPTIONAL but strongly recommended
|
||||||
|
|
||||||
|
# A short summary description of the collection
|
||||||
|
description: A collection of plugins useful to my roles
|
||||||
|
|
||||||
|
# Either a single license or a list of licenses for content inside of a collection. Ansible Galaxy currently only
|
||||||
|
# accepts L(SPDX,https://spdx.org/licenses/) licenses. This key is mutually exclusive with 'license_file'
|
||||||
|
license:
|
||||||
|
- GPL-2.0-or-later
|
||||||
|
|
||||||
|
# The path to the license file for the collection. This path is relative to the root of the collection. This key is
|
||||||
|
# mutually exclusive with 'license'
|
||||||
|
license_file: 'MIT'
|
||||||
|
|
||||||
|
# A list of tags you want to associate with the collection for indexing/searching. A tag name has the same character
|
||||||
|
# requirements as 'namespace' and 'name'
|
||||||
|
tags: ["ansible-plugins", "path"]
|
||||||
|
|
||||||
|
# Collections that this collection requires to be installed for it to be usable. The key of the dict is the
|
||||||
|
# collection label 'namespace.name'. The value is a version range
|
||||||
|
# L(specifiers,https://python-semanticversion.readthedocs.io/en/latest/#requirement-specification). Multiple version
|
||||||
|
# range specifiers can be set and are separated by ','
|
||||||
|
dependencies: {}
|
||||||
|
|
||||||
|
# The URL of the originating SCM repository
|
||||||
|
repository: https://git.laurivan.com/Dev/ansible-laurivan-plugins
|
||||||
|
|
||||||
|
# The URL to any online docs
|
||||||
|
documentation: https://git.laurivan.com/Dev/ansible-laurivan-plugins
|
||||||
|
|
||||||
|
# The URL to the homepage of the collection/project
|
||||||
|
homepage: https://www.laurivan.com
|
||||||
|
|
||||||
|
# The URL to the collection issue tracker
|
||||||
|
issues: https://git.laurivan.com/Dev/ansible-laurivan-plugins
|
31
plugins/README.md
Normal file
31
plugins/README.md
Normal file
@ -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.9/plugins/plugins.html).
|
22
plugins/filter/abspath.yml
Normal file
22
plugins/filter/abspath.yml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
DOCUMENTATION:
|
||||||
|
name: abspath
|
||||||
|
author: Laur Ivan
|
||||||
|
version_added: "1.0"
|
||||||
|
short_description: Make a path absolute
|
||||||
|
positional: _input
|
||||||
|
description:
|
||||||
|
- Converts the given path to a absolute path.
|
||||||
|
options:
|
||||||
|
_input:
|
||||||
|
description: A path.
|
||||||
|
type: str
|
||||||
|
required: true
|
||||||
|
|
||||||
|
EXAMPLES: |
|
||||||
|
# foobar => ../test/me.txt
|
||||||
|
testing: "{{ '~/me.txt' | abspath }}"
|
||||||
|
otherrelpath: "{{ mypath | relpath }}"
|
||||||
|
RETURN:
|
||||||
|
_value:
|
||||||
|
description: The absolute path.
|
||||||
|
type: str
|
9
plugins/filter/files.py
Normal file
9
plugins/filter/files.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from functools import partial
|
||||||
|
from ansible.utils.unicode import unicode_wrap
|
||||||
|
|
||||||
|
class FilterModule(object):
|
||||||
|
''' Ansible file jinja2 filters '''
|
||||||
|
def filters(self):
|
||||||
|
return {
|
||||||
|
'abspath': partial(unicode_wrap, os.path.abspath)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user