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 """
2024-11-29 08:21:52 +01:00
list :
2025-02-17 09:54:47 +01:00
description : { _ ( ' parameter added only to be compatible with Ansible ' ) }
2024-11-29 08:21:52 +01:00
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 """
2025-01-02 21:56:20 +01:00
ansible :
exists : true
redefine : true
2025-12-23 21:32:53 +01:00
description : { _ ( ' Load Ansible encrypt inventory or generate Ansible inventory ' ) }
2025-01-02 21:56:20 +01:00
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-01-02 21:56:20 +01:00
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 ' ) }
2025-01-02 21:56:20 +01:00
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 """
2025-01-02 21:56:20 +01:00
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
2025-07-04 06:43:31 +02:00
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 " , )