Интерфейсы командной строки (CLI) по-прежнему популярны даже перед лицом графических пользовательских интерфейсов (GUI) и их интерактивных визуальных компонентов. CLI все еще используются из-за их простоты, легкости, скорости и меньшего количества ресурсов, необходимых для настройки приложения CLI.

Большинство приложений CLI запускаются в терминале операционной системы или в командной строке, что повышает гибкость, не требуя столько ресурсов, сколько графические интерфейсы.

Вы можете создавать интерфейсы командной строки с популярными языками от Python до C++, Rust и Go. Большинство языков предоставляют пакеты для создания приложений CLI без внешних зависимостей.

Go и приложения командной строки

Одним из предполагаемых вариантов использования языка программирования Go является создание высокопроизводительных интерактивных интерфейсов командной строки. С годами Go завоевал популярность в этой области.

Go поддерживает популярные приложения CLI, такие как Docker CLI, Hugo, GitHub CLI и другие. Go — один из предпочтительных языков для создания приложений CLI, учитывая его первоклассную поддержку наряду с производительностью.

instagram viewer

Есть флаг package для синтаксического анализа командной строки, но ему не хватает многих функций, которые вам понадобятся для создания современных приложений командной строки. Кроме того, разработка приложений CLI с помощью флаг package может быть сложным, поскольку размер вашего приложения увеличивается, и вы включаете больше функций.

В экосистеме Go есть много надежных пакетов для создания интерфейсов командной строки с функциями, помогающими сократить время разработки.

Пакет «Кобра»

Кобра — один из самых популярных пакетов для создания интерфейсов командной строки в экосистеме Go и за ее пределами. Cobra — это пакет для создания интерактивных современных приложений CLI в любой среде.

Cobra предоставляет простой интерфейс для создания интерфейсов командной строки в соответствии с отраслевыми стандартами, аналогичными инструментам Go и Git. Cobra поддерживает многие приложения CLI, с которыми вы взаимодействовали, включая Docker, Kubernetes, Twitch, Hugo и множество других.

Cobra — это простой в использовании инструмент, основанный на подкомандах. Он поддерживает POSIX-совместимые флаги, вложенные подкоманды, а также глобальные, локальные и каскадные флаги.

Cobra также поддерживает интеллектуальные предложения, автоматическое создание справки, распознавание флажков и псевдонимы команд. Он позволяет выполнять автодополнение оболочки в Bash, Powershell, Fish и Zsh, а также интеграцию с гадюка пакет для 12-факторных приложений.

Запустите эту команду в терминале вашего рабочего каталога, чтобы установить последнюю версию пакета Cobra и его зависимостей.

идти получить -u github.com/spf13/cobra@latest

Cobra предоставляет приложение CLI для более быстрой и простой разработки. Пакет Cobra-cli генерирует шаблонный код, который можно настроить для добавления новых команд в ваше приложение без каких-либо проблем.

Запустите эту команду в терминале вашего рабочего каталога, чтобы установить последнюю версию пакета Cobra-cli.

идти установить github.com/spf13/cobra-cli@latest

Вам нужно будет установить переменную GOPATH в свой рабочий каталог, чтобы использовать генератор Cobra (Cobra-cli) и другие инструменты командной строки Go.

После успешной установки вы можете инициализировать приложение Cobra в своем проекте с помощью в этом команда.

кобра-cli инициализация

После инициализации приложения Cobra вы можете использовать добавлять подкоманда с кобра-кли команда для создания и добавления новой команды в приложение Cobra.

cobra-cli добавить новую команду

Команда создает новый файл с кодом, который вам нужен для команды. Вы можете редактировать файл в зависимости от вашей операции.

Вот простая функция обработчика команд для команды, сгенерированной с помощью команды Cobra-cli.

Импортировать (
"ФМТ"
"github.com/spf13/cobra"
"бревно"
"стрконв"
)

// команда, сгенерированная коброй

// newCmd представляет новую команду
вар новаяCmd = &кобра. Команда {
Используйте: "новыйCmd",
Коротко: "Описание newCmd, которое вы укажете",
Длинный: `Более длинное описание, занимающее несколько строк и, вероятно, содержащее примеры
и использование вашей команды. Например:
Cobra — это CLI-библиотека. для Go, расширяющий возможности приложений.
Это приложение представляет собой инструмент для создания необходимых файлов
для быстрого создания приложения Cobra.`,

Бегать: функция(команда *кобра. Команда, аргументы []нить) {
еслиЛен(аргументы) < 1 {
бревно. Fatal("Без дополнительных аргументов")
}
аргументы := аргументы[0]
ФМТ. Println (аргументы)
}
}

функцияв этом() {
rootCmd. AddCommand (новыйCmd)

// Здесь вы определите свои флаги и настройки конфигурации.

// Cobra поддерживает постоянные флаги, которые будут работать для этой команды
// и все подкоманды, например:
// новая команда. PersistentFlags().String("foo", "", "Помощь для foo")

// Cobra поддерживает локальные флаги, которые будут выполняться только при выполнении этой команды.
// вызывается напрямую, например:
// новая команда. Flags().BoolP("toggle", "t", false, "Справочное сообщение для переключения")
}

Вы можете получить доступ к дополнительным аргументам с помощью аргументы аргумент функции. Функция выше использует если оператор, чтобы проверить, есть ли дополнительный аргумент из терминала, и распечатать аргумент.

Пакет командной строки

Пакет Кли — это минималистский пакет на тему выразительности для создания быстрых распространяемых приложений CLI в Go.

Пакет Cli поддерживает аргументы командной строки, флаги и подкоманды с категориями. Он имеет функциональность для обслуживания коротких опций, Баш-дополнения, сгенерированная справка и управление версиями.

Пакет Cli совместим со встроенными средствами Go. флаг и контекст пакеты, и вы можете использовать большинство функций в флаг пакет с Cli.

Запустите эти команды в терминале вашего рабочего каталога, чтобы добавить пакет Graphql-go и его зависимости в ваш проект.

идти получить github.com/urfave/cli

Вот как вы можете добавить команду в свое приложение CLI с помощью пакета Cli.

упаковка основной

Импортировать (
"ФМТ"
"бревно"
"Операционные системы"

"github.com/urfave/cli/v2"
)

функцияосновной() {
приложение := &cli. Приложение {
Имя: "новый",
Использование: "делать а новый команда с кли упаковка",
Действие: функция(*кл. контекст)ошибка {
ФМТ. Println("Вот новый команда")
возвращатьсяноль
},
}

если ошибка := приложение. Беги (ос. аргументы); ошибся != ноль {
бревно. Фатальный (ошибка)
}
}

в основной функция, приложение переменная является экземпляром приложения Cli и Действие поле — это функция обработчика приложения. Здесь новый команда напечатает текст из функции или вернет ошибку, если есть какие-либо ошибки из приложения.

Пакет Cli полезен для небольших проектов без особой сложности или функций.

Пакет Go-Arg

Пакет Go-arg — это основанный на структуре пакет для разбора аргументов CLI в Go. С помощью пакета Go-arg вы можете объявлять структуры для аргументов CLI и работать с аргументами как с обычными структурами данных Go. Пакет Go-arg предоставляет необходимые аргументы, позиционные аргументы, переменные среды, строки использования, значения по умолчанию и многие другие функции.

Пакет поддерживает основные типы, такие как целые числа, числа с плавающей запятой, строки и логические значения. Он также поддерживает более сложные типы, такие как URL-адреса, продолжительность времени, адреса электронной почты, MAC-адреса, указатели, срезы, карты и любой тип.

Вы можете использовать получать Команда, чтобы добавить пакет Go-arg в зависимости вашего пакета.

идти получить github.com/alexflint/идти-аргумент

Пакет Go-arg прост и интуитивно понятен в использовании. Вот как вы можете принимать аргументы из командной строки и выводить их в консоль командной строки.

функцияосновной() {
вар аргументы структура {
Фу нить
Бар логический
}
аргумент MustParse(&аргументы)
ФМТ. Println (аргументы. Фу, аргументы. Бар)
}

аргументы struct — это экземпляр структуры для приложения CLI. MustParse Метод анализирует аргументы из командной строки в экземпляре структуры.

Вы можете легко запустить программу с бегать команду и укажите аргументы после имени файла.

идти запустить основной.идти --foo=привет --бар

Вы также можете использовать строить команда для преобразования вашего приложения в исполняемый файл перед запуском исполняемого файла и указанием аргументов.


идти построить основной.идти
./main --foo=привет --бар

Существуют значительные различия между графическим интерфейсом пользователя и интерфейсом командной строки, которые вам необходимо учитывать

Во время разработки, если вам придется выбирать между созданием CLI или GUI для ваших пользователей, вам нужно будет учитывать множество факторов, чтобы сделать выбор.

Использование командной строки вместо графического пользовательского интерфейса приводит к более быстрому программированию, простой автоматизации и меньшему использованию ресурсов. Если какое-либо из этих преимуществ не имеет решающего значения для вашего приложения, вам может быть лучше использовать графический интерфейс, поскольку он более популярен среди обычных пользователей.