Terminalyzer
- class dublib.CLI.Terminalyzer.Terminalyzer(input: Sequence[str] | None = None)[исходный код]
Обработчик консольных параметров.
- check_commands(commands: list[Command]) ParsedCommandData | None[исходный код]
Проверяет текущую команду на соответствие одному из переданных описаний.
- Параметры:
commands (list[Command]) – Список описаний команд.
- Результат:
При успешной проверке парсит данные команды и возвращает их.
- Тип результата:
ParsedCommandData | None
- Исключение:
Exceptions.CLI.Terminalyzer.EmptyPosition – Для позиции не описан ни один параметр.
Exceptions.CLI.Terminalyzer.MultipleCommandDefinition – Множественное определение команды.
- set_input(input: Sequence[str] | None)[исходный код]
Задаёт последовательность параметров, из которых будут парситься данные команды.
- Параметры:
parameters (Sequence[str] | None) – Последовательность параметров команды, первым из которых является названия. По умолчанию берётся из sys.argv скрипта.
- class dublib.CLI.Terminalyzer.Command.Definition.Command(name: str, description: str | None = None, category: str | None = None)[исходный код]
Описание команды.
- property base: _BasePosition
Базовая позиция команды.
- property category: str | None
Название категории, к которой относится команда.
- create_position(name: str, description: str | None = None, important: bool = False) _Position[исходный код]
Создаёт дополнительную позицию.
- Параметры:
name (str) – Название позиции.
description (str | None) – Описание позиции.
important (bool) – Указывает, является ли позиция обязательной. Для всех параметров позиции автоматически выставляется такое же значение.
- Результат:
Представление новой позиции.
- Тип результата:
Position
- property description: str | None
Описание команды.
- get_position(name: str) _Position[исходный код]
Возвращает позицию.
- Параметры:
name (str) – Имя позиции.
- Результат:
Позиция.
- Тип результата:
_Position
- Исключение:
KeyError – Позиция не найдена.
- property max_parameters_count: int
Максимальное количество параметров.
- property min_parameters_count: int
Минимальное количество параметров.
- property name: str
Название команды.
- property positions: tuple[_Position, ...]
Список позиций.
- set_category(category: str | None)[исходный код]
Задаёт категорию, в которой будет отображаться команда при выводе помощи.
- Параметры:
category (str | None) – Название категории.
- class dublib.CLI.Terminalyzer.Helper.Helper[исходный код]
Модуль помощи.
- property callback: Callable
Функция, в которую направляется вывод помощи.
- property category: str | None
Категория команд.
- enable(status: bool = True)[исходный код]
Переключает использование модуля помощи.
- Параметры:
status (bool) – Статус использования модуля.
- enable_sorting(status: bool = True)[исходный код]
Переключает сортировку команд в алфавитном порядке.
- Параметры:
status (bool) – Состояние сортировки.
- generate_help_command(commands: list[Command], command_name: str, typing: bool = True)[исходный код]
Отправляет подробное описание команды в callback-функцию.
- Параметры:
commands (list[Command]) – Описательные структуры комманд.
command_name (str) – Название команды, для которой требуется получить помощь.
typing (bool) – Переключает отображение типов.
- generate_help_list(commands: list[Command])[исходный код]
Отправляет список команд с их описанием в callback-функцию.
- Параметры:
commands (list[Command]) – Описательные структуры комманд.
- property is_enabled: bool
Состояние: активирован ли модуль помощи.
- property is_sorting_enabled: bool
Состояние: выполняется ли сортировка команд по алфавиту.
- property labels: _HelpLabels
Оператор работы с используемыми в модуле помощи строками.
- set_callback(callback: Callable)[исходный код]
Задаёт функцию, в которую будет передан вывод помощи.
- Параметры:
callback (Callable) – Функция, в которую направляется вывод помощи. Принимает строку в качестве аргумента.
- set_category(category: str | None)[исходный код]
Задаёт категорию для команды помощи.
- Параметры:
category (str | None) – Название категории.
Описание
Модуль Terminalyzer предназначен для расширенного, типизированного и защищённого анализа текстовых команд в стиле Shell.
- Доступны три типа параметров:
Аргумент – значение, поддерживающее приведение к определённому типу.
Флаг – логический переключатель, который может иметь псевдонимы.
Ключ – идентификатор того, что следующий параметр является значением определённого типа (именованный аргумент, поддерживающий логические проверки присутствия). Также может иметь псевдонимы.
Пример
from dublib.CLI.Terminalyzer import Terminalyzer, Command, ValidableTypes
Commands = list()
# Создание описания команды.
Com = Command("open", "Open some file.")
# Создание обязательной позиции с аргументом типа существующего пути.
ComPos = Com.create_position("TARGET", "Target to open", important = True)
ComPos.set_argument(ValidableTypes.ValidPath, "Path to file.")
# Добавление альтернативы аргументу, флага и ключа.
ComPos.add_flag("-l", aliases = ("--last",), description = "Open last file.")
ComPos.add_key("-p", aliases = ("--path",), description = "Specify path.")
Commands.append(Com)
# Инициализация анализатора. По умолчанию ввод берётся из sys.argv.
Analyzer = Terminalyzer()
# Включение команды help, выводящей детализированную помощь.
Analyzer.helper.enable()
# Поиск и парсинг команды.
CommandData = Analyzer.check_commands(Commands)
if CommandData and Command.name == "open":
# Проверка активации флага по псевдониму.
if CommandData.check_flag("--last"):
pass
# Проверка активации ключа по имени.
elif CommandData.check_key("-p"):
# Получение пути к файлу через значение ключа.
CommandData.get_key_value("--path")
else:
# Получение пути к файлу через слот позиции.
CommandData.get_position_parameter("TARGET").value
# Получение пути к файлу через индекс аргумента.
CommandData.arguments[0].value