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

Повечето CLI приложения работят на терминала или командния ред на операционната система, увеличавайки гъвкавостта, без да изискват толкова много ресурси, колкото GUI.

Можете да създавате CLI с популярни езици от Python до C++, Rust и Go. Повечето езици предоставят пакети за изграждане на CLI приложения без външни зависимости.

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

Един от предвидените случаи на използване на езика за програмиране Go е изграждането на ефективни интерактивни CLI. С годините Go придоби популярност в тази област.

Go поддържа популярни CLI приложения като Docker CLI, Hugo, GitHub CLI и др. Go е един от предпочитаните езици за създаване на CLI приложения, като се има предвид неговата първокласна поддръжка за тях, заедно с неговата производителност.

instagram viewer

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

Екосистемата Go има много реномирани пакети за изграждане на CLI, с функции, които помагат за намаляване на времето за разработка.

Пакетът Кобра

Кобра е един от най-популярните пакети за изграждане на CLI в екосистемата Go и извън нея. Cobra е пакет за създаване на интерактивни, модерни CLI приложения във всяка среда.

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

Cobra е лесен за използване инструмент, базиран на подкоманди. Той поддържа POSIX-съвместими флагове, вложени подкоманди и глобални, локални и каскадни флагове.

Cobra също поддържа интелигентни предложения, автоматично генериране на помощ, разпознаване на флагове и псевдоними на команди. Той позволява автоматично довършване на обвивката на Bash, Powershell, Fish и Zsh и интеграция с усойница пакет за 12-факторни приложения.

Изпълнете тази команда в терминала на вашата работна директория, за да инсталирате най-новата версия на пакета Cobra и неговите зависимости.

отивам get -u github.com/spf13/cobra@latest

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

Изпълнете тази команда в терминала на вашата работна директория, за да инсталирате най-новата версия на пакета Cobra-cli.

отивам инсталирайте github.com/spf13/cobra-cli@latest

Ще трябва да зададете вашата променлива GOPATH на вашата работна директория, за да използвате генератора на Cobra (Cobra-cli) и други инструменти на командния ред на Go.

След успешна инсталация можете да инициализирате приложение Cobra във вашия проект с в него команда.

cobra-cli инициал

След като инициализирате приложение Cobra, можете да използвате добавете подкоманда с кобра-кли команда за създаване и добавяне на нова команда към вашето приложение Cobra.

cobra-cli добави нова команда

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

Ето проста функция за обработка на команди за команда, генерирана с командата Cobra-cli.

импортиране (
"fmt"
"github.com/spf13/cobra"
"дневник"
"strconv"
)

// команда, генерирана от кобра

// newCmd представлява новата команда
вар newCmd = &cobra. Команда {
Използвайте: "newCmd",
Кратко: „Описанието на newCmd, което сте посочили“,
дълго: „По-дълго описание, което обхваща няколко реда и вероятно съдържа примери
и използване на използването на вашата команда. Например:
Cobra е CLI библиотека за Go, който дава възможност на приложенията.
Това приложение е инструмент за генериране на необходимите файлове
за бързо създаване на приложение Cobra.`,

тичам: функ(cmd *кобра. Команда, аргументи []низ) {
акоlen(аргументи) < 1 {
дневник. Фатално ("Без допълнителни аргументи")
}
аргументи := аргументи[0]
fmt. Println (аргументи)
}
}

функв него() {
rootCmd. AddCommand (newCmd)

// Тук ще дефинирате вашите флагове и настройки за конфигурация.

// Cobra поддържа постоянни флагове, които ще работят за тази команда
// и всички подкоманди, напр.:
// newCmd. PersistentFlags().String("foo", "", "Помощ за foo")

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

Можете да получите достъп до допълнителни аргументи с аргументи аргумент на функцията. Функцията по-горе използва ако оператор, за да провери дали има допълнителен аргумент от терминала и отпечатва аргумента.

Пакетът CLI

Пакетът Cli е минималистичен пакет с експресивна тема за изграждане на бързи, разпространяваеми CLI приложения в Go.

Пакетът Cli поддържа аргументи на командния ред, флагове и подкоманди с категории. Има функционалност за обслужване на кратки опции, Bash завършвания, генерирана помощ и версии.

Пакетът Cli е съвместим с вградения Go знаме и контекст пакети и можете да използвате повечето функции в знаме пакет с Cli.

Изпълнете тези команди в терминала на вашата работна директория, за да добавите пакета Graphql-go и неговите зависимости към вашия проект.

отивам вземете github.com/urfave/cli

Ето как можете да добавите команда към вашето CLI приложение с пакета Cli.

пакет основен

импортиране (
"fmt"
"дневник"
"операционна система"

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

функосновен() {
приложение := &cli. Приложение {
Име: "нов",
Употреба: "направи а нов команда с Cli пакет",
Действие: функ(*cli. контекст)грешка {
fmt. Println("Ето нов команда")
връщаненула
},
}

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

В основен функция, на ап променливата е екземпляр на Cli приложение и на приложението Действие полето е функцията за обработка на приложението. Ето, нов командата ще отпечата текста от функцията или ще върне грешка, ако има грешки от приложението.

Пакетът Cli е полезен за по-малки проекти без много сложност или функции.

Пакетът Go-Arg

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

Пакетът поддържа основни типове като цяло число, плаваща запетая, низ и булево. Той също така поддържа по-сложни типове като URL адреси, времетраене, имейл адреси, MAC адреси, указатели, срезове, карти и всякакви Тип.

Можете да използвате получавам команда за добавяне на пакета Go-arg към зависимостите на вашия пакет.

отивам вземете github.com/alexflint/отивам-арг

Пакетът Go-arg е лесен и интуитивен за използване. Ето как можете да приемете аргументи от командния ред и да ги отпечатате в конзолата на командния ред.

функосновен() {
вар аргументи структура {
Фу низ
Бар bool
}
арг. MustParse(&args)
fmt. Println (args. Фу, аргументи. бар)
}

The аргументи struct е екземплярът на struct за CLI приложението. The Трябва да се анализира метод анализира аргументите от командния ред в екземпляра на структурата.

Можете лесно да стартирате програмата с бягам и посочете аргументите след името на файла.

отивам стартирайте главния.отивам --foo=здравей --bar

Можете също да използвате изграждане команда за изграждане на вашето приложение в изпълним файл, преди да стартирате изпълнимия файл и да посочите аргументите.


отивам изградете основен.отивам
./main --foo=hello --bar

Има значителни разлики между GUI и CLI, които ще трябва да имате предвид

По време на разработката, ако трябва да избирате между изграждането на CLI или GUI за вашите потребители, ще трябва да вземете предвид много фактори, за да направите избор.

Използването на CLI вместо GUI води до по-бързи програми, лесна автоматизация и по-ниско използване на ресурси. Ако някое от тези предимства не е от решаващо значение за вашето приложение, може да е по-добре с GUI, тъй като те са по-популярни сред обикновените потребители.