Вопрос или проблема
Подумайте о действии для одного из нескольких тысяч сервисов.
Я хочу сузить выбор сервисов через автозавершение, указывая их по одному:
- prod, test, dev
- страна (AU, US, …)
- функция (frontend, backend, …)
- имя кластера (к которому относится сервис)
- любые другие свойства
- …
- имя сервиса (сокращенный набор на основе вышеуказанного ввода)
Чем больше аргументов указано,
тем более конкретный набор значений предлагается для следующего аргумента.
Существует ли что-то интегрированное с Bash?
ДЕТАЛИ
Это может быть что угодно еще, решающее описанную выше проблему,
но я вижу настройку, которая включает:
- Клиент = какое-то (промежуточное) имя команды для связывания автозавершения Bash.
- (локальный | удаленный) резервный сервис с загруженными/индексированными данными для быстрых ответов на завершение.
- Пользователь отправляет все запросы на автозавершение
Tab
через клиент на сервер. - Как только все значения аргументов были
Tab
-завершены пользователем,Enter
передает данные с сервера на клиент для выполнения действия:- войти в назначение
- узнать состояние удаленного ресурса
- и т. д.
Веб-интерфейс не подходит – в конечном итоге, цель – это оболочка.
Могут быть некоторые инструменты, специфичные для некоторых облачных провайдеров,
но я ищу агностичный инструмент, предоставляющий:
- все интерфейсы клиент-сервер,
- поддержка плагинов для различных источников данных,
- настраиваемый (специфичный для домена) поиск,
Я составил концепт, но потребуется время для его成熟ствия –
все еще надеюсь найти что-то существующее.
В безуспешном поиске я собрал это в argrelay – это может помочь другим с аналогичными проблемами.
Ответ или решение
Автозавершение аргументов командной строки Bash через сервис данных
В современном мире IT, автоматизация и удобство взаимодействия с системами имеют первостепенное значение. Одной из таких возможностей является автозавершение аргументов командной строки в Bash, особенно для сложных сервисов с большой номенклатурой. Давайте рассмотрим, как можно организовать автозавершение, исходя из указанных параметров, чтобы достичь более интуитивного пользовательского опыта.
1. Проблема выбора сервиса
Пользователям часто необходимо взаимодействовать с различными сервисами, где параметров, влияющих на выбор, может быть множество. Вам нужно будет указать следующие аргументы:
- Среда: prod, test, dev.
- Страна: AU, US и другие.
- Функция: frontend, backend и т.д.
- Имя кластера: сервис, входящий в определенный кластер.
- Дополнительные свойства: другие специфические параметры.
- Имя сервиса: конечный выбор на основе всех предыдущих параметров.
Указание всех этих параметров должно вести к динамичному и правильному формированию списка возможных значений для следующего аргумента по мере ввода.
2. Существующие решения
На текущий момент, стандартные механизмы автозавершения в Bash могут не быть достаточно гибкими для подобных задач. Однако, возможно использование нескольких инструментов и подходов:
-
Custom Bash Completion Scripts: Вы можете создавать собственные скрипты для завершения, которые будут учитывать контекст введённых параметров. Это может стать первоначальным вариантом решения, однако может не удовлетворять все требования из-за сложности относительно серверного взаимодействия.
-
argrelay: Упомянутый вами проект, argrelay, представляет собой интересную концепцию. Это приложение позволяет делегировать логику автозавершения на сервер, где данные могут быть более динамически обработаны и расширены. Пользователи вводят параметры, после чего приложение обращается к сервису для получения актуального списка доступных значений.
3. Архитектура решения
Для реализации подобного сервиса вам потребуется учитывать несколько ключевых компонентов:
-
Клиент: Команда, которую вы связываете с автозавершением в Bash. Это будет основной точкой взаимодействия пользователя с вашим сервисом.
-
Сервер: Локальное или удаленное хранилище, содержащее проиндексированные данные о сервисах, готовое предоставить быстрые ответы по запросам автозавершения.
-
Обработка запросов: По мере ввода аргументов пользователем, клиент будет отправлять запросы на сервер за актуальными значениями, что позволяет динамически фильтровать опции.
-
Выполнение действия: После полного ввода всех аргументов и подтверждения пользователем с помощью клавиши Enter, данные отправляются обратно на клиент для выполнения необходимых действий, таких как авторизация или получение информации о состоянии ресурсов.
4. Алгоритмический подход
При реализации такого механизма стоит учитывать несколько алгоритмов:
-
Фильтрация данных: Сначала на сервере необходимо реализовать алгоритм, который будет обрабатывать входящие запросы и возвращать данные в зависимости от контекста.
-
Кэширование результатов: Для улучшения быстродействия можно использовать кэширование ранее запрошенных данных, что позволит быстрее делать выборки для часто вводимых значений.
-
Обертка для API: Если вы используете облачные провайдеры, вам может пригодиться разработка обертки для API, что позволит вашему серверу динамически запрашивать и обрабатывать данные.
Заключение
Автозавершение аргументов командной строки в Bash через сервис данных – это мощный инструмент для оптимизации работы с многочисленными сервисами. Существуют решения, такие как argrelay, которые могут помочь в реализации такой функциональности, однако собственная доработка и кастомные скрипты могут ещё более улучшить пользовательский опыт. Необходимо исследовать возможности автоматизации, интеграции с API и построения гибких систем, которые обеспечат качественное взаимодействие с сервисами, в том числе через настройку параметров автозавершения в зависимости от контекста.