Compare commits
21 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b282fd2d7a | |||
| fb230276a8 | |||
| 5d39620e39 | |||
| 717fa7f367 | |||
| 43bd217f32 | |||
| 2fd6427742 | |||
| 2f044ec999 | |||
| 6e4440683a | |||
| 61d96ba6ce | |||
| 70efb3d8ad | |||
| 8224b8929f | |||
| 4061e96511 | |||
| bccea20ded | |||
| 9e9de6a1de | |||
| 29b96dc712 | |||
| d03c084b60 | |||
| 3d9f9b3fb4 | |||
| a9ce48d03a | |||
| fce409cde9 | |||
| 58677d06c0 | |||
| 7646c85546 |
1250 changed files with 3667 additions and 952 deletions
56
CHANGELOG.md
56
CHANGELOG.md
|
|
@ -1,3 +1,59 @@
|
||||||
|
## 0.1.0a15 (2025-11-21)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
- ExtentionError => ExtensionError
|
||||||
|
|
||||||
|
## 0.1.0a14 (2025-11-06)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
- add translation
|
||||||
|
- update tests
|
||||||
|
|
||||||
|
## 0.1.0a13 (2025-10-29)
|
||||||
|
|
||||||
|
### Feat
|
||||||
|
|
||||||
|
- can define a new separator
|
||||||
|
|
||||||
|
## 0.1.0a12 (2025-10-10)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
- update test
|
||||||
|
- translation + tests
|
||||||
|
- tests for formatter
|
||||||
|
|
||||||
|
## 0.1.0a11 (2025-09-29)
|
||||||
|
|
||||||
|
### Feat
|
||||||
|
|
||||||
|
- default value for a calculated variable with an unknown optional variable
|
||||||
|
- update tests for integer type
|
||||||
|
|
||||||
|
## 0.1.0a10 (2025-09-22)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
- dictionary => structure
|
||||||
|
|
||||||
|
## 0.1.0a9 (2025-06-18)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
- rougail separation
|
||||||
|
|
||||||
|
## 0.1.0a8 (2025-05-12)
|
||||||
|
|
||||||
|
### Feat
|
||||||
|
|
||||||
|
- display loaded_from informations
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
- black
|
||||||
|
|
||||||
## 0.1.0a7 (2025-05-02)
|
## 0.1.0a7 (2025-05-02)
|
||||||
|
|
||||||
### Fix
|
### Fix
|
||||||
|
|
|
||||||
48
locale/fr/LC_MESSAGES/rougail_user_data_environment.po
Normal file
48
locale/fr/LC_MESSAGES/rougail_user_data_environment.po
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"POT-Creation-Date: 2025-10-04 17:04+0200\n"
|
||||||
|
"PO-Revision-Date: 2025-10-04 17:04+0200\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: fr\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
"X-Generator: Poedit 3.7\n"
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/annotator.py:46
|
||||||
|
msgid ""
|
||||||
|
"family name must be a lowercase name when we want to use user data "
|
||||||
|
"\"environment\", so \"{0}\" is invalid"
|
||||||
|
msgstr ""
|
||||||
|
"le nom d'une famille doit être un nom en minuscule lorsque vous voulez "
|
||||||
|
"utiliser de données utilisateur \"environment\", donc \"{0}\" est invalide"
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/annotator.py:56
|
||||||
|
msgid ""
|
||||||
|
"variable name must be a lowercase name when we want to use user data "
|
||||||
|
"\"environment\", so \"{0}\" is invalid"
|
||||||
|
msgstr ""
|
||||||
|
"le nom d'une variable doit être un nom en minuscule lorsque vous voulez "
|
||||||
|
"utiliser de données utilisateur \"environment\", donc \"{0}\" est invalide"
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/config.py:34
|
||||||
|
msgid "Configuration loading environment variables"
|
||||||
|
msgstr "Configuration le chargement des variables d'environnements"
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/config.py:42
|
||||||
|
msgid "Name of the default environment prefix"
|
||||||
|
msgstr "Nom du préfix d'environnement par défaut"
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/config.py:49
|
||||||
|
msgid "Environnement variables may contain secrets"
|
||||||
|
msgstr "Les variables d'environnement peuvent contenir des secrets"
|
||||||
|
|
||||||
|
#~ msgid "Define values from the environment"
|
||||||
|
#~ msgstr "Défini les valeurs pour l'environnemnt"
|
||||||
37
locale/rougail_user_data_environment.pot
Normal file
37
locale/rougail_user_data_environment.pot
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2025-10-04 17:05+0200\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/annotator.py:46
|
||||||
|
msgid "family name must be a lowercase name when we want to use user data \"environment\", so \"{0}\" is invalid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/annotator.py:56
|
||||||
|
msgid "variable name must be a lowercase name when we want to use user data \"environment\", so \"{0}\" is invalid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/config.py:34
|
||||||
|
msgid "Configuration loading environment variables"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/config.py:42
|
||||||
|
msgid "Name of the default environment prefix"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/rougail/user_data_environment/config.py:49
|
||||||
|
msgid "Environnement variables may contain secrets"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "rougail.user_data_environment"
|
name = "rougail.user_data_environment"
|
||||||
version = "0.1.0a7"
|
version = "0.1.0a15"
|
||||||
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
|
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
description = "Rougail user_data environment"
|
description = "Rougail user_data environment"
|
||||||
|
|
@ -13,9 +13,6 @@ license = {file = "LICENSE"}
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)",
|
"License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)",
|
||||||
"Programming Language :: Python",
|
"Programming Language :: Python",
|
||||||
"Programming Language :: Python :: 3.8",
|
|
||||||
"Programming Language :: Python :: 3.9",
|
|
||||||
"Programming Language :: Python :: 3.10",
|
|
||||||
"Programming Language :: Python :: 3.11",
|
"Programming Language :: Python :: 3.11",
|
||||||
"Programming Language :: Python :: 3.12",
|
"Programming Language :: Python :: 3.12",
|
||||||
"Programming Language :: Python :: 3.13",
|
"Programming Language :: Python :: 3.13",
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,4 @@ from .__version__ import __version__
|
||||||
|
|
||||||
|
|
||||||
RougailUserData = RougailUserDataEnvironment
|
RougailUserData = RougailUserDataEnvironment
|
||||||
__all__ = ('RougailUserDataEnvironment',)
|
__all__ = ("RougailUserDataEnvironment",)
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
__version__ = "0.1.0a7"
|
__version__ = "0.1.0a15"
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from rougail.error import DictConsistencyError
|
from rougail.error import DictConsistencyError
|
||||||
from rougail.annotator.variable import Walk
|
from rougail.annotator.variable import Walk
|
||||||
from .i18n import _
|
from .i18n import _
|
||||||
|
|
@ -25,9 +26,9 @@ from .i18n import _
|
||||||
|
|
||||||
class Annotator(Walk):
|
class Annotator(Walk):
|
||||||
"""Annotate for environment"""
|
"""Annotate for environment"""
|
||||||
|
|
||||||
level = 95
|
level = 95
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
objectspace,
|
objectspace,
|
||||||
|
|
@ -42,11 +43,19 @@ class Annotator(Walk):
|
||||||
def check_family(self):
|
def check_family(self):
|
||||||
for family in self.get_families():
|
for family in self.get_families():
|
||||||
if family.name != family.name.lower():
|
if family.name != family.name.lower():
|
||||||
msg = _('family name must be a lowercase name when we want to use user data "environment", so "{0}" is invalid')
|
msg = _(
|
||||||
raise DictConsistencyError(msg.format(family.name), 200, family.xmlfiles)
|
'family name must be a lowercase name when we want to use user data "environment", so "{0}" is invalid'
|
||||||
|
)
|
||||||
|
raise DictConsistencyError(
|
||||||
|
msg.format(family.name), 200, family.xmlfiles
|
||||||
|
)
|
||||||
|
|
||||||
def check_variable(self):
|
def check_variable(self):
|
||||||
for variable in self.get_variables():
|
for variable in self.get_variables():
|
||||||
if variable.name != variable.name.lower():
|
if variable.name != variable.name.lower():
|
||||||
msg = _('variable name must be a lowercase name when we want to use user data "environment", so "{0}" is invalid')
|
msg = _(
|
||||||
raise DictConsistencyError(msg.format(variable.name), 201, variable.xmlfiles)
|
'variable name must be a lowercase name when we want to use user data "environment", so "{0}" is invalid'
|
||||||
|
)
|
||||||
|
raise DictConsistencyError(
|
||||||
|
msg.format(variable.name), 201, variable.xmlfiles
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -22,29 +22,49 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def get_rougail_config(*,
|
from .i18n import _
|
||||||
backward_compatibility=True,
|
|
||||||
) -> dict:
|
|
||||||
options = """
|
def get_rougail_config(
|
||||||
|
*,
|
||||||
|
backward_compatibility=True,
|
||||||
|
) -> dict:
|
||||||
|
options = f"""
|
||||||
environment:
|
environment:
|
||||||
description: Define values from the environment
|
description: {_("Configuration loading environment variables")}
|
||||||
disabled:
|
disabled:
|
||||||
jinja: |
|
jinja: |
|
||||||
{% if step.user_data is propertyerror or 'environment' not in step.user_data %}
|
{{% if _.step.user_data is propertyerror or 'environment' not in _.step.user_data %}}
|
||||||
disabled
|
disabled
|
||||||
{% endif %}
|
{{% endif %}}
|
||||||
|
|
||||||
default_environment_name:
|
default_environment_name:
|
||||||
description: Name of the default environment prefix
|
description: {_("Name of the default environment prefix")}
|
||||||
default: rougail
|
default: ROUGAIL
|
||||||
|
validators:
|
||||||
|
- jinja: |-
|
||||||
|
{{% if _.default_environment_name | upper != _.default_environment_name %}}
|
||||||
|
{_("should only user uppercase character")}
|
||||||
|
{{% endif %}}
|
||||||
disabled:
|
disabled:
|
||||||
variable: main_namespace
|
variable: __.main_namespace
|
||||||
when_not: null
|
when_not: null
|
||||||
|
|
||||||
|
custom_separator:
|
||||||
|
description: {_('Replace the separator character "." in path by an other')}
|
||||||
|
help: {_('The "." character could be not allowed in path name')}
|
||||||
|
mandatory: false
|
||||||
|
|
||||||
|
with_secrets:
|
||||||
|
description: {_("Environnement variables may contain secrets")}
|
||||||
|
default: true
|
||||||
"""
|
"""
|
||||||
return {'name': 'environment',
|
return {
|
||||||
'process': 'user data',
|
"name": "environment",
|
||||||
'options': options,
|
"process": "user data",
|
||||||
'level': 50,
|
"options": options,
|
||||||
}
|
"level": 50,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
__all__ = ('get_rougail_config',)
|
__all__ = ("get_rougail_config",)
|
||||||
|
|
|
||||||
|
|
@ -18,70 +18,90 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from rougail.object_model import CONVERT_OPTION
|
from rougail.tiramisu import CONVERT_OPTION
|
||||||
from rougail.config import RougailConfig
|
from rougail.config import RougailConfig
|
||||||
from rougail.error import ExtentionError
|
from rougail.error import ExtensionError
|
||||||
from tiramisu.error import ValueOptionError
|
from tiramisu.error import ValueOptionError
|
||||||
|
|
||||||
|
|
||||||
class RougailUserDataEnvironment:
|
class RougailUserDataEnvironment:
|
||||||
def __init__(self,
|
def __init__(
|
||||||
config: 'Config',
|
self,
|
||||||
*,
|
config: "Config",
|
||||||
rougailconfig: RougailConfig=None,
|
*,
|
||||||
):
|
rougailconfig: RougailConfig = None,
|
||||||
|
):
|
||||||
# this is the tiramisu config object
|
# this is the tiramisu config object
|
||||||
self.config = config
|
self.config = config
|
||||||
if rougailconfig is None:
|
if rougailconfig is None:
|
||||||
rougailconfig = RougailConfig
|
rougailconfig = RougailConfig
|
||||||
user_data = rougailconfig['step.user_data']
|
user_data = rougailconfig["step.user_data"]
|
||||||
if 'environment' not in user_data:
|
if "environment" not in user_data:
|
||||||
user_data.append('environment')
|
user_data.append("environment")
|
||||||
rougailconfig['step.user_data'] = user_data
|
rougailconfig["step.user_data"] = user_data
|
||||||
user_data = rougailconfig['step.user_data']
|
user_data = rougailconfig["step.user_data"]
|
||||||
self.rougailconfig = rougailconfig
|
if "environment" not in user_data:
|
||||||
if 'environment' not in user_data:
|
raise ExtensionError("environment is not set in step.user_data")
|
||||||
raise ExtentionError('environment is not set in step.user_data')
|
if "environment.with_secrets" in rougailconfig:
|
||||||
|
self.with_secrets = rougailconfig["environment.with_secrets"]
|
||||||
|
else:
|
||||||
|
self.with_secrets = True
|
||||||
|
self.custom_separator = rougailconfig["environment.custom_separator"]
|
||||||
|
if not rougailconfig["main_namespace"]:
|
||||||
|
self.default_environment_name = rougailconfig["environment.default_environment_name"]
|
||||||
self.errors = []
|
self.errors = []
|
||||||
self.warnings = []
|
self.warnings = []
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
values = self.parse()
|
values = self.parse()
|
||||||
return [{'source': 'environment variable',
|
return [
|
||||||
'errors': self.errors,
|
{
|
||||||
'warnings': self.warnings,
|
"source": "environment variable",
|
||||||
'values': values,
|
"errors": self.errors,
|
||||||
'options': {'multi_separator': ',',
|
"warnings": self.warnings,
|
||||||
'needs_convert': True,
|
"values": values,
|
||||||
},
|
"options": {
|
||||||
}]
|
"multi_separator": ",",
|
||||||
|
"needs_convert": True,
|
||||||
|
"allow_secrets_variables": self.with_secrets,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
def parse(self):
|
def parse(self):
|
||||||
variables = {}
|
variables = {}
|
||||||
|
self.prefixes = []
|
||||||
for option in self.config:
|
for option in self.config:
|
||||||
if not option.isoptiondescription() or option.group_type() != "namespace":
|
if not option.isoptiondescription() or option.group_type() != "namespace":
|
||||||
break
|
break
|
||||||
variables.update(get_rougail_environment(option.name()))
|
self.prefixes.append(option.name().upper() + ".")
|
||||||
else:
|
else:
|
||||||
return variables
|
return self.get_rougail_environment(0)
|
||||||
return get_rougail_environment(None, self.rougailconfig['environment.default_environment_name'])
|
# no namespace then we filter the ROUGAIL_ environment variables
|
||||||
|
self.prefixes = [self.default_environment_name + "_"]
|
||||||
|
return self.get_rougail_environment(len(self.prefixes[0]))
|
||||||
|
|
||||||
|
def get_rougail_environment(self, len_env):
|
||||||
|
"""gets all the rougail environment variables and their values
|
||||||
|
|
||||||
def get_rougail_environment(namespace, environment_name=None):
|
:sample: {'VARINT': '5', 'VARNAME34': '58, 22', 'VARNAME2': 'tata',
|
||||||
"""gets all the rougail environment variables and their values
|
'VARNAME1': 'titi', 'MYFAMILY.VARNAME3': 'spam'}
|
||||||
|
:returns: rougail environment variables as a key/value dict
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
envvar[len_env:].lower(): envval
|
||||||
|
for envvar, envval in self.get_correct_envs()
|
||||||
|
}
|
||||||
|
|
||||||
:sample: {'VARINT': '5', 'VARNAME34': '58, 22', 'VARNAME2': 'tata',
|
def get_correct_envs(self):
|
||||||
'VARNAME1': 'titi', 'MYFAMILY.VARNAME3': 'spam'}
|
for envvar, envval in os.environ.items():
|
||||||
:returns: rougail environment variables as a key/value dict
|
if self.custom_separator:
|
||||||
"""
|
envvar = envvar.replace(self.custom_separator, '.')
|
||||||
# then we filter the ROUGAIL_ environment variables
|
for prefix in self.prefixes:
|
||||||
if namespace is None:
|
if envvar.startswith(prefix):
|
||||||
rougail_environment_var = environment_name.upper() + '_'
|
yield envvar, envval
|
||||||
len_env = len(rougail_environment_var)
|
for prefix in self.prefixes:
|
||||||
else:
|
if envvar.startswith(prefix):
|
||||||
rougail_environment_var = namespace.upper() + '.'
|
yield envvar, envval
|
||||||
len_env = 0
|
|
||||||
return {envvar[len_env:].lower(): envval
|
|
||||||
for envvar, envval in os.environ.items()
|
|
||||||
if envvar.startswith(rougail_environment_var)}
|
|
||||||
|
|
|
||||||
27
src/rougail/user_data_environment/i18n.py
Normal file
27
src/rougail/user_data_environment/i18n.py
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
"""Internationalisation utilities
|
||||||
|
Silique (https://www.silique.fr)
|
||||||
|
Copyright (C) 2025
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from gettext import translation
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
t = translation(
|
||||||
|
"rougail_user_data_environment", str(Path(__file__).parent / "locale"), fallback=True
|
||||||
|
)
|
||||||
|
|
||||||
|
_ = t.gettext
|
||||||
|
|
||||||
Binary file not shown.
1
tests/errors/environment/00_unknown_variable.env
Normal file
1
tests/errors/environment/00_unknown_variable.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_UNKNOWN=1
|
||||||
2
tests/errors/environment/01_disabled_family.env
Normal file
2
tests/errors/environment/01_disabled_family.env
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
ROUGAIL_FAMILY_DISABLED.VARIABLE1=test
|
||||||
|
ROUGAIL_FAMILY_DISABLED.VARIABLE2=test
|
||||||
1
tests/errors/environment/01_disabled_variable.env
Normal file
1
tests/errors/environment/01_disabled_variable.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_VARIABLE_DISABLED=test
|
||||||
1
tests/errors/environment/01_wrong_type.env
Normal file
1
tests/errors/environment/01_wrong_type.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_VARIABLE_INT=test
|
||||||
1
tests/errors/environment/02_disabled_hidden_family.env
Normal file
1
tests/errors/environment/02_disabled_hidden_family.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_FAMILY_DISABLED_HIDDEN.VARIABLE1=test
|
||||||
1
tests/errors/environment/04_value_secret.env
Normal file
1
tests/errors/environment/04_value_secret.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_SECRET=a
|
||||||
1
tests/errors/environment/05_value_family.env
Normal file
1
tests/errors/environment/05_value_family.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_FAMILY=test
|
||||||
1
tests/errors/environment/06_dynamic_unknown.env
Normal file
1
tests/errors/environment/06_dynamic_unknown.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_DYN_UNKNOWN.VARIABLE=test
|
||||||
4
tests/errors/environment/07_leadership_disabled.env
Normal file
4
tests/errors/environment/07_leadership_disabled.env
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
ROUGAIL_LEADERSHIP.LEADER=test1,test2,test3
|
||||||
|
ROUGAIL_LEADERSHIP.FOLLOWER=test1,test2,test3
|
||||||
|
ROUGAIL_LEADERSHIP.FOLLOWER_DISABLED=test1,test2,test3
|
||||||
|
ROUGAIL_LEADERSHIP.FOLLOWER_DISABLED_AT_INDEX=test1,test2,test3
|
||||||
2
tests/errors/environment/07_leadership_unknown.env
Normal file
2
tests/errors/environment/07_leadership_unknown.env
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
ROUGAIL_LEADERSHIP.LEADER=test
|
||||||
|
ROUGAIL_LEADERSHIP.UNKNWON=test
|
||||||
2
tests/errors/environment/07_leadership_wrong_len.env
Normal file
2
tests/errors/environment/07_leadership_wrong_len.env
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
ROUGAIL_LEADERSHIP.LEADER=test
|
||||||
|
ROUGAIL_LEADERSHIP.FOLLOWER=test1,test2
|
||||||
6
tests/errors/results/00_unknown_variable.env
Normal file
6
tests/errors/results/00_unknown_variable.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"variable or family \"unknown\" does not exist, it will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
7
tests/errors/results/01_disabled_family.env
Normal file
7
tests/errors/results/01_disabled_family.env
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"family \"family_disabled\" is disabled, \"family_disabled.variable1\" will be ignored when loading from environment variable",
|
||||||
|
"family \"family_disabled\" is disabled, \"family_disabled.variable2\" will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
6
tests/errors/results/01_disabled_variable.env
Normal file
6
tests/errors/results/01_disabled_variable.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"variable \"variable_disabled\" is disabled, it will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
6
tests/errors/results/01_wrong_type.env
Normal file
6
tests/errors/results/01_wrong_type.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"the value \"test\" is an invalid integer for \"variable_int\", which is not an integer, it will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
6
tests/errors/results/02_disabled_hidden_family.env
Normal file
6
tests/errors/results/02_disabled_hidden_family.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"family \"family_disabled_hidden\" is disabled and hidden, \"family_disabled_hidden.variable1\" will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
6
tests/errors/results/04_value_secret.env
Normal file
6
tests/errors/results/04_value_secret.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"the value \"**********\" is an invalid password for \"secret\", at least 10 characters are required, it will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
6
tests/errors/results/05_value_family.env
Normal file
6
tests/errors/results/05_value_family.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"cannot set the value \"test\" to the family \"family\", it will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
6
tests/errors/results/06_dynamic_unknown.env
Normal file
6
tests/errors/results/06_dynamic_unknown.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"variable or family \"dyn_unknown\" does not exist, it will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
9
tests/errors/results/07_leadership_disabled.env
Normal file
9
tests/errors/results/07_leadership_disabled.env
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"variable \"leadership.follower_disabled\" at index \"0\" is disabled, it will be ignored when loading from environment variable",
|
||||||
|
"variable \"leadership.follower_disabled\" at index \"1\" is disabled, it will be ignored when loading from environment variable",
|
||||||
|
"variable \"leadership.follower_disabled\" at index \"2\" is disabled, it will be ignored when loading from environment variable",
|
||||||
|
"variable \"leadership.follower_disabled_at_index\" at index \"1\" is disabled, it will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
6
tests/errors/results/07_leadership_unknown.env
Normal file
6
tests/errors/results/07_leadership_unknown.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"variable or family \"leadership.unknwon\" does not exist, it will be ignored when loading from environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
6
tests/errors/results/07_leadership_wrong_len.env
Normal file
6
tests/errors/results/07_leadership_wrong_len.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"index \"1\" is greater than the leadership length \"1\" for option \"leadership.follower\" in environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
68
tests/errors/structure/rougail/00_rougail.yml
Normal file
68
tests/errors/structure/rougail/00_rougail.yml
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
version: 1.1
|
||||||
|
|
||||||
|
variable:
|
||||||
|
|
||||||
|
secret:
|
||||||
|
type: secret
|
||||||
|
params:
|
||||||
|
min_len: 10
|
||||||
|
|
||||||
|
variable_disabled:
|
||||||
|
disabled: true
|
||||||
|
|
||||||
|
variable_disabled_hidden:
|
||||||
|
disabled: true
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
variable_int:
|
||||||
|
type: number
|
||||||
|
|
||||||
|
family:
|
||||||
|
|
||||||
|
variable:
|
||||||
|
|
||||||
|
family_disabled:
|
||||||
|
disabled: true
|
||||||
|
|
||||||
|
variable1:
|
||||||
|
|
||||||
|
variable2:
|
||||||
|
|
||||||
|
family_disabled_hidden:
|
||||||
|
disabled: true
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
variable1:
|
||||||
|
|
||||||
|
variable2:
|
||||||
|
|
||||||
|
dyn_{{ identifier }}:
|
||||||
|
dynamic:
|
||||||
|
- var1
|
||||||
|
- var2
|
||||||
|
|
||||||
|
variable:
|
||||||
|
|
||||||
|
leadership:
|
||||||
|
type: leadership
|
||||||
|
|
||||||
|
leader:
|
||||||
|
|
||||||
|
follower:
|
||||||
|
|
||||||
|
follower_disabled:
|
||||||
|
disabled: true
|
||||||
|
|
||||||
|
follower_disabled_at_index:
|
||||||
|
disabled:
|
||||||
|
jinja: >-
|
||||||
|
{% if index == 1 %}
|
||||||
|
true
|
||||||
|
{% else %}
|
||||||
|
{% endif %}
|
||||||
|
params:
|
||||||
|
index:
|
||||||
|
type: index
|
||||||
|
...
|
||||||
1
tests/results/test/00_0no_variable/file/mandatories.env
Normal file
1
tests/results/test/00_0no_variable/file/mandatories.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
1
tests/results/test/00_0no_variable/makedict/all.json
Normal file
1
tests/results/test/00_0no_variable/makedict/all.json
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": [
|
||||||
|
"family \"leadership\" is hidden, \"leadership.var1\" (a first variable) will be ignored when loading from environment variable",
|
||||||
|
"family \"leadership\" is hidden, \"leadership.var2\" (a first variable) at index \"0\" will be ignored when loading from environment variable",
|
||||||
|
"index \"1\" is greater than the leadership length \"1\" for option \"leadership.var2\" (a first variable) in environment variable",
|
||||||
|
"index \"2\" is greater than the leadership length \"1\" for option \"leadership.var2\" (a first variable) in environment variable"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
ROUGAIL_LEADERSHIP.VAR1="string1,string2,string3"
|
||||||
|
ROUGAIL_LEADERSHIPoVAR2="string1,,"
|
||||||
|
ROUGAIL_VAR2="string1"
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
ROUGAIL_LEADERSHIP.VAR1="string1,string2,string3"
|
||||||
|
ROUGAIL_LEADERSHIPoVAR2="string1,,"
|
||||||
|
ROUGAIL_VAR2="string1"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"leadership.var1": [
|
||||||
|
{
|
||||||
|
"leadership.var1": "a_value",
|
||||||
|
"leadership.var2": "a_value"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"var2": "string1"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"leadership.var1": [
|
||||||
|
{
|
||||||
|
"leadership.var1": "a_value",
|
||||||
|
"leadership.var2": "a_value"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"var2": "a_value"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
ROUGAIL_VAR1="domain1.lan,domain2.lan"
|
||||||
|
ROUGAIL_VAR2="domain1.lan,domain2.lan"
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
ROUGAIL_VAR1="domain1.lan,domain2.lan"
|
||||||
|
ROUGAIL_VAR2="domain1.lan,domain2.lan"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_VAR1="domain1.lan,domain2.lan"
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"var1": [
|
||||||
|
"domain1.lan",
|
||||||
|
"domain2.lan"
|
||||||
|
],
|
||||||
|
"var2": [
|
||||||
|
"domain1.lan",
|
||||||
|
"domain2.lan"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"var1": [
|
||||||
|
"domain1.lan",
|
||||||
|
"domain2.lan"
|
||||||
|
],
|
||||||
|
"var2": [
|
||||||
|
"domain1.lan",
|
||||||
|
"domain2.lan"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
ROUGAIL_VAR1="string1"
|
||||||
|
ROUGAIL_VAR2="string1"
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
ROUGAIL_VAR1="string1"
|
||||||
|
ROUGAIL_VAR2="string1"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
ROUGAIL_VAR1="string1"
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"var1": "string1",
|
||||||
|
"var2": "string1"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"var1": "string1",
|
||||||
|
"var2": "string1"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
ROUGAIL_VAR1="string1"
|
||||||
|
ROUGAIL_VAR2="string1"
|
||||||
|
ROUGAIL_VAR3="string1"
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
ROUGAIL_VAR1="string1"
|
||||||
|
ROUGAIL_VAR2="string1"
|
||||||
|
ROUGAIL_VAR3="string1"
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
ROUGAIL_VAR1="string1"
|
||||||
|
ROUGAIL_VAR3="string1"
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"var1": "string1",
|
||||||
|
"var2": "string1",
|
||||||
|
"var3": "string1"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"var1": "string1",
|
||||||
|
"var2": "string1",
|
||||||
|
"var3": "string1"
|
||||||
|
}
|
||||||
4
tests/results/test/00_6integer/errors/all.json
Normal file
4
tests/results/test/00_6integer/errors/all.json
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
4
tests/results/test/00_6integer/errors/mandatories.json
Normal file
4
tests/results/test/00_6integer/errors/mandatories.json
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
6
tests/results/test/00_6integer/file/all.env
Normal file
6
tests/results/test/00_6integer/file/all.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
ROUGAIL_VAR1="1"
|
||||||
|
ROUGAIL_VAR2="1"
|
||||||
|
ROUGAIL_VAR3="1"
|
||||||
|
ROUGAIL_VAR4="1"
|
||||||
|
ROUGAIL_VAR5="1"
|
||||||
|
ROUGAIL_VAR6="1"
|
||||||
6
tests/results/test/00_6integer/file/all_exclude.env
Normal file
6
tests/results/test/00_6integer/file/all_exclude.env
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
ROUGAIL_VAR1="1"
|
||||||
|
ROUGAIL_VAR2="1"
|
||||||
|
ROUGAIL_VAR3="1"
|
||||||
|
ROUGAIL_VAR4="1"
|
||||||
|
ROUGAIL_VAR5="1"
|
||||||
|
ROUGAIL_VAR6="1"
|
||||||
1
tests/results/test/00_6integer/file/mandatories.env
Normal file
1
tests/results/test/00_6integer/file/mandatories.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
8
tests/results/test/00_6integer/makedict/all.json
Normal file
8
tests/results/test/00_6integer/makedict/all.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"var1": 1,
|
||||||
|
"var2": 1,
|
||||||
|
"var3": 1,
|
||||||
|
"var4": 1,
|
||||||
|
"var5": 1,
|
||||||
|
"var6": 1
|
||||||
|
}
|
||||||
8
tests/results/test/00_6integer/makedict/mandatories.json
Normal file
8
tests/results/test/00_6integer/makedict/mandatories.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"var1": 0,
|
||||||
|
"var2": 0,
|
||||||
|
"var3": 0,
|
||||||
|
"var4": 10,
|
||||||
|
"var5": 10,
|
||||||
|
"var6": 10
|
||||||
|
}
|
||||||
4
tests/results/test/00_6ip/errors/all.json
Normal file
4
tests/results/test/00_6ip/errors/all.json
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
4
tests/results/test/00_6ip/errors/mandatories.json
Normal file
4
tests/results/test/00_6ip/errors/mandatories.json
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
3
tests/results/test/00_6ip/file/all.env
Normal file
3
tests/results/test/00_6ip/file/all.env
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
ROUGAIL_VAR1="192.168.1.6"
|
||||||
|
ROUGAIL_VAR2="192.168.1.6/24"
|
||||||
|
ROUGAIL_VAR3="192.168.1.6/24"
|
||||||
3
tests/results/test/00_6ip/file/all_exclude.env
Normal file
3
tests/results/test/00_6ip/file/all_exclude.env
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
ROUGAIL_VAR1="192.168.1.6"
|
||||||
|
ROUGAIL_VAR2="192.168.1.6/24"
|
||||||
|
ROUGAIL_VAR3="192.168.1.6/24"
|
||||||
1
tests/results/test/00_6ip/file/mandatories.env
Normal file
1
tests/results/test/00_6ip/file/mandatories.env
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
5
tests/results/test/00_6ip/makedict/all.json
Normal file
5
tests/results/test/00_6ip/makedict/all.json
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"var1": "192.168.1.6",
|
||||||
|
"var2": "192.168.1.6/24",
|
||||||
|
"var3": "192.168.1.6/24"
|
||||||
|
}
|
||||||
5
tests/results/test/00_6ip/makedict/mandatories.json
Normal file
5
tests/results/test/00_6ip/makedict/mandatories.json
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"var1": "1.1.1.1",
|
||||||
|
"var2": "1.1.1.1/24",
|
||||||
|
"var3": "1.1.1.1/24"
|
||||||
|
}
|
||||||
4
tests/results/test/00_6network/errors/all.json
Normal file
4
tests/results/test/00_6network/errors/all.json
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
4
tests/results/test/00_6network/errors/mandatories.json
Normal file
4
tests/results/test/00_6network/errors/mandatories.json
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"errors": [],
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
3
tests/results/test/00_6network/file/all.env
Normal file
3
tests/results/test/00_6network/file/all.env
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
ROUGAIL_VAR1="192.168.1.0"
|
||||||
|
ROUGAIL_VAR2="192.168.1.6/32"
|
||||||
|
ROUGAIL_VAR3="192.168.1.6/32"
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue