rougail-output-ansible/src/rougail/output_ansible/config.py

147 lines
3.8 KiB
Python
Raw Normal View History

2024-11-27 17:19:30 +01:00
"""
Silique (https://www.silique.fr)
2026-01-09 08:46:16 +01:00
Copyright (C) 2024-2026
2024-11-27 17:19:30 +01:00
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
2025-02-17 09:54:47 +01:00
from .i18n import _
2024-11-27 17:19:30 +01:00
from pathlib import Path
2026-01-14 14:25:35 +01:00
try:
from ..output_doc.config import OutPuts
except:
OutPuts = None
2024-11-27 17:19:30 +01:00
def get_rougail_config(
*,
backward_compatibility=True,
) -> dict:
2026-01-14 14:25:35 +01:00
if OutPuts:
doc_outputs = list(OutPuts().get())
doc_output_format_default = doc_outputs[0]
else:
doc_outputs = None
2025-05-11 19:14:26 +02:00
options = [
f"""
list:
2025-02-17 09:54:47 +01:00
description: {_('parameter added only to be compatible with Ansible')}
default: false
disabled:
2025-12-23 21:32:53 +01:00
jinja: |-
{{{{ step.output is propertyerror or step.output != 'ansible' }}}}
return_type: boolean
description: {_('if ansible is not set in "step.output"')}
2025-05-11 19:14:26 +02:00
""",
f"""
ansible:
exists: true
redefine: true
2025-12-23 21:32:53 +01:00
description: {_('Load Ansible encrypt inventory or generate Ansible inventory')}
disabled:
2025-12-23 21:32:53 +01:00
jinja: |-
{{{{ step.output is propertyerror or (step.output != 'ansible' and (step.user_data is propertyerror or 'ansible' not in step.user_data)) }}}}
return_type: boolean
description: {_('if ansible is not in "step.output" and not in "step.user_data"')}
2025-05-11 19:14:26 +02:00
""",
f"""
2024-12-02 20:22:27 +01:00
ansible:
2025-10-03 13:32:04 +02:00
type: family
2025-12-23 21:32:53 +01:00
description: {_('Generate Ansible inventory')}
exists: false
2024-12-02 20:22:27 +01:00
disabled:
variable: step.output
when_not: ansible
2025-04-01 22:05:20 +02:00
propertyerror: false
2024-12-02 20:22:27 +01:00
2025-05-11 19:14:26 +02:00
""",
f"""
ansible:
2026-01-14 14:25:35 +01:00
output:
description: {_('Output type')}
default: inventory
choices:
- inventory
"""]
if doc_outputs:
options[-1] += f"""
- doc
2025-01-02 21:38:17 +01:00
2026-05-04 12:17:56 +02:00
host_namespace: hosts # {_('Namespace with host values')}
2026-01-14 14:25:35 +01:00
doc:
description: {_("Doc configuration")}
disabled:
variable: _.output
when_not: doc
2026-05-04 12:17:56 +02:00
project_name: # {_('Ansible project name')}
author: # {_('Ansible author name')}
2026-01-14 14:25:35 +01:00
output_format:
description: {_('The output format of the generated documentation')}
default: { doc_output_format_default }
choices:
"""
for output in doc_outputs:
options[-1] += f" - {output}\n"
options[-1] += f"""
2026-05-04 12:17:56 +02:00
collection_type:
description: {_('collection contents')}
choices:
- auto
- playbooks
- roles
default: auto
playbooks:
_description: {_('Playbooks informations')}
type: leadership
disabled:
jinja: |-
{{{{ _.collection_type == "roles" }}}}
return_type: boolean
description: {_('if the content is a role')}
name:
description: {_('Playbook name')}
help: {_('Playbooks are placed in the playbooks/ directory. By default, the description of the "type" is used as the playbook name in the generated example. It is possible to customize this description here.')}
mandatory: false
multi: true
description: # {_('Playbook description')}
2026-01-14 14:25:35 +01:00
inventory:
description: {_("Inventory configuration")}
disabled:
variable: _.output
when_not: inventory
no_namespace_in_vars: false # {_('Remove namespace name in host vars')}
export_warnings: true # {_('Displays warnings inside Ansible exportation datas')}
"""
2024-11-27 17:19:30 +01:00
return {
"name": "ansible",
"process": "output",
"options": options,
"level": 60,
}
__all__ = ("get_rougail_config",)