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