"""
Config file for Rougail-user-data-environment

Silique (https://www.silique.fr)
Copyright (C) 2024-2026

distribued with GPL-2 or later license

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 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 General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
"""

from .i18n import _


def get_rougail_config(
    *,
    backward_compatibility=True,
) -> dict:
    options = f"""
environment:
  description: {_("Load user data from environment variables")}
  help: |-
    {_('Variable values can be defined directly from an environment variable.')}

    {_('Environnement variable names begin with a prefix (by default ROUGAIL_) followed by the variable path in uppercase, for example: ROUGAIL_MY_VARIABLE. If you are using namespaces, the prefix is the name of the namespace in uppercase.')}

    {_('Note that variable paths can contain dots ("."), which are not permitted everywhere. To avoid any issues, use the `env` command, for example: `env ROUGAIL_MY_FAMILY.MY_VARIABLE=1 rougail`')}

    {_('For values, there is no difference between a number and a letter (they can be enclosed in quotes or not). However, booleans are True or False. The separator for multiple variables is a comma.')}
  disabled:
    jinja: |
      {{{{ _.step.user_data is propertyerror or 'environment' not in _.step.user_data }}}}
    return_type: boolean
    description: {_('if environment is not set in "_.step.user_data"')}

  default_environment_name:
    description: {_("Name of the default environment prefix")}
    default: ROUGAIL
    validators:
      - jinja: |-
          {{{{ _.default_environment_name | upper != _.default_environment_name }}}}
        return_type: boolean
        description: {_("should only use uppercase character")}
    disabled:
      jinja: |
        {{{{ not __.main_namespace or 'environment' not in __.step.user_data }}}}
      return_type: boolean
      description: {_('if "__.main_namespace" is null or environment is not set in "__.step.user_data"')}

  custom_separator:
    description: {_('Replace the separator character "." in path by an other')}
    help: {_('The character dot (".") may not be allowed in the environment variable name. Note that the variable name with dots is always available in addition to the name with this character.')}
    mandatory: false
    disabled:
      jinja: |
        {{{{ 'environment' not in __.step.user_data }}}}
      return_type: boolean
      description: {_('if environment is not set in "__.step.user_data"')}

  with_secrets:
    description: {_("Environnement variables may contain secrets")}
    default: true
    disabled:
      jinja: |
        {{{{ 'environment' not in __.step.user_data }}}}
      return_type: boolean
      description: {_('if environment is not set in "__.step.user_data"')}
"""
    return {
        "name": "environment",
        "process": "user data",
        "options": options,
        "level": 50,
    }


__all__ = ("get_rougail_config",)
