mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
docs
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
from argenta.command.flag import Flag, InputFlag, ValidationStatus, PossibleValues
|
||||
import re
|
||||
|
||||
# Создаём различные типы флагов
|
||||
verbose_flag = Flag("verbose", possible_values=PossibleValues.NEITHER)
|
||||
output_flag = Flag("output", possible_values=PossibleValues.ALL)
|
||||
level_flag = Flag("level", possible_values=["1", "2", "3"])
|
||||
pattern_flag = Flag("pattern", possible_values=re.compile(r'^[a-zA-Z]+$'))
|
||||
|
||||
# Создаём входные флаги с различными статусами
|
||||
input_flags = [
|
||||
# Валидные флаги
|
||||
InputFlag("verbose", input_value=None, status=ValidationStatus.VALID),
|
||||
InputFlag("output", input_value="result.txt", status=ValidationStatus.VALID),
|
||||
InputFlag("level", input_value="2", status=ValidationStatus.VALID),
|
||||
InputFlag("pattern", input_value="onlyletters", status=ValidationStatus.VALID),
|
||||
|
||||
# Невалидные флаги
|
||||
InputFlag("verbose", input_value="true", status=ValidationStatus.INVALID),
|
||||
InputFlag("level", input_value="4", status=ValidationStatus.INVALID),
|
||||
InputFlag("pattern", input_value="123", status=ValidationStatus.INVALID),
|
||||
|
||||
# Неопределённые флаги
|
||||
InputFlag("unknown", input_value="value", status=ValidationStatus.UNDEFINED),
|
||||
]
|
||||
|
||||
# Обрабатываем все флаги
|
||||
valid_count = invalid_count = undefined_count = 0
|
||||
|
||||
for flag in input_flags:
|
||||
if flag.status == ValidationStatus.VALID:
|
||||
valid_count += 1
|
||||
elif flag.status == ValidationStatus.INVALID:
|
||||
invalid_count += 1
|
||||
elif flag.status == ValidationStatus.UNDEFINED:
|
||||
undefined_count += 1
|
||||
|
||||
print(f"Валидных флагов: {valid_count}")
|
||||
print(f"Невалидных флагов: {invalid_count}")
|
||||
print(f"Неопределённых флагов: {undefined_count}")
|
||||
@@ -0,0 +1,24 @@
|
||||
from argenta import InputFlag, ValidationStatus
|
||||
|
||||
# Создание входных флагов с различными статусами
|
||||
valid_flag = InputFlag(
|
||||
"output",
|
||||
input_value="/path/to/file.txt",
|
||||
status=ValidationStatus.VALID
|
||||
)
|
||||
|
||||
invalid_flag = InputFlag(
|
||||
"count",
|
||||
input_value="not-a-number",
|
||||
status=ValidationStatus.INVALID
|
||||
)
|
||||
|
||||
undefined_flag = InputFlag(
|
||||
"experimental",
|
||||
input_value="test",
|
||||
status=ValidationStatus.UNDEFINED
|
||||
)
|
||||
|
||||
flags = [valid_flag, invalid_flag, undefined_flag]
|
||||
for flag in flags:
|
||||
print(f"{flag.string_entity}: {flag.status.value}")
|
||||
@@ -0,0 +1,15 @@
|
||||
from argenta.command.flag import Flag, InputFlag, ValidationStatus, PossibleValues
|
||||
|
||||
# Создание флага без значения
|
||||
help_flag = Flag("help", possible_values=PossibleValues.NEITHER)
|
||||
|
||||
# Создание некорректного входного флага (передано значение, когда не должно быть)
|
||||
invalid_input = InputFlag("help", input_value="please", status=ValidationStatus.INVALID)
|
||||
|
||||
print(f"Флаг: {invalid_input.string_entity}")
|
||||
print(f"Значение: {invalid_input.input_value}")
|
||||
print(f"Статус: {invalid_input.status}") # Выведет: INVALID
|
||||
|
||||
# Также невалидным будет флаг с недопустимым значением из списка
|
||||
mode_flag = Flag("mode", possible_values=["fast", "slow"])
|
||||
invalid_mode = InputFlag("mode", input_value="medium", status=ValidationStatus.INVALID)
|
||||
@@ -0,0 +1,31 @@
|
||||
from argenta import InputFlag, ValidationStatus
|
||||
|
||||
def process_input_flag(input_flag: InputFlag) -> None:
|
||||
"""Обрабатывает входной флаг в зависимости от его статуса валидации"""
|
||||
|
||||
if input_flag.status == ValidationStatus.VALID:
|
||||
print(f"✓ Обрабатываем валидный флаг: {input_flag.string_entity}")
|
||||
# Выполняем основную логику
|
||||
execute_flag_logic(input_flag)
|
||||
|
||||
elif input_flag.status == ValidationStatus.INVALID:
|
||||
print(f"✗ Ошибка валидации флага: {input_flag.string_entity}")
|
||||
# Записываем ошибку и прекращаем выполнение
|
||||
log_validation_error(input_flag)
|
||||
|
||||
elif input_flag.status == ValidationStatus.UNDEFINED:
|
||||
print(f"? Неопределённый статус флага: {input_flag.string_entity}")
|
||||
# Пытаемся провести валидацию или пропускаем
|
||||
attempt_revalidation(input_flag)
|
||||
|
||||
def execute_flag_logic(flag: InputFlag) -> None:
|
||||
"""Выполняет логику для валидного флага"""
|
||||
pass
|
||||
|
||||
def log_validation_error(flag: InputFlag) -> None:
|
||||
"""Записывает ошибку валидации в лог"""
|
||||
pass
|
||||
|
||||
def attempt_revalidation(flag: InputFlag) -> None:
|
||||
"""Пытается повторно провести валидацию"""
|
||||
pass
|
||||
@@ -0,0 +1,11 @@
|
||||
from argenta import InputFlag, ValidationStatus
|
||||
|
||||
# Создание входного флага без определения статуса
|
||||
undefined_input = InputFlag("unknown-flag", input_value="some-value", status=ValidationStatus.UNDEFINED)
|
||||
|
||||
print(f"Флаг: {undefined_input.string_entity}")
|
||||
print(f"Значение: {undefined_input.input_value}")
|
||||
print(f"Статус: {undefined_input.status.value}") # Выведет: UNDEFINED
|
||||
|
||||
# Или флаг, для которого валидация ещё не проводилась
|
||||
pending_input = InputFlag("pending", input_value=None, status=ValidationStatus.UNDEFINED)
|
||||
@@ -0,0 +1,11 @@
|
||||
from argenta.command.flag import Flag, InputFlag, ValidationStatus
|
||||
|
||||
# Создание флага, который принимает только определённые значения
|
||||
log_level_flag = Flag("log-level", possible_values=["debug", "info", "warning", "error"])
|
||||
|
||||
# Создание корректного входного флага
|
||||
valid_input = InputFlag("log-level", input_value="debug", status=ValidationStatus.VALID)
|
||||
|
||||
print(f"Флаг: {valid_input.string_entity}")
|
||||
print(f"Значение: {valid_input.input_value}")
|
||||
print(f"Статус: {valid_input.status}") # Выведет: VALID
|
||||
Reference in New Issue
Block a user