feat: Add abspath to collection.

This commit is contained in:
Laur Ivan 2022-12-10 23:54:41 +01:00
commit d7b79fda63
6 changed files with 163 additions and 0 deletions

20
LICENSE Normal file
View 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
View 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
View 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
View 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).

View 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
View 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)
}