Знижка 20% на курс GRASP & GOF Design Patterns
Дізнатися більше
10.01.2025
4 хвилин читання

Як створити CLI-інструмент на Go: керівництво з прикладами

Створення CLI-інструментів – це справжня перевірка твоїх розробницьких навичок. Go Cobra – це саме ті інструменти, які роблять це завдання легшим і цікавішим. Уяви собі: можна керувати процесами та конфігураціями, використовуючи лише командний рядок, і це оповите особливою магією. CLI (Command Line Interface) – це додатки, які виконуються в терміналі та взаємодіють із користувачем через команди й аргументи. Але чому Golang такий хороший для створення CLI-інструментів? Давай розберемося.

А на практиці з нуля навчитися розробці цією мовою можна на курсах FoxmindEd.

🚀 Менторинг з Golang від FoxmindEd! 🚀 Працюйте над реальними завданнями, отримуйте досвід та ставайте Golang розробником разом з FoxmindEd! 💡
Дізнатись більше

Що таке CLI і чому Go підходить для його створення?

CLI – це спосіб взаємодії з програмою без графічного інтерфейсу, за допомогою команд і параметрів. Коли тобі потрібно автоматизувати завдання або керувати системними процесами, CLI стає найкращим другом. А розробка CLI на Go дає змогу досягти високої продуктивності та стабільності, оскільки Go ідеально підходить для роботи з багатопотоковістю та складними процесами.

Основні переваги CLI-інструментів на Go

Це, по-перше, продуктивність. У Go низький поріг входу, відмінна підтримка багатозадачності, і його компільовані бінарні файли легко поширювати. По-друге, Go-програми також досить прості в розробці та підтримці, завдяки його структурованому коду. У результаті CLI-інструменти Go працюють швидко, стабільно і не вимагають громіздких залежностей.

Огляд популярних бібліотек для створення CLI на Go

Щоб не писати все з нуля, можна скористатися готовими бібліотеками. Найпопулярніша – Cobra, але є й інші:

  • Urfave/cli: легка і проста, чудово підходить для невеликих проєктів. З нею можна швидко створити командний інтерфейс, і вона надає інтуїтивний API, що підтримує прапори та аргументи.
  • Survey: зручна для створення CLI-інструментів, де потрібне введення даних від користувача. Survey пропонує набір готових віджетів (запитань, полів введення, вибору) для інтерактивного CLI, що ідеально підходить для застосунків із великим об’ємом взаємодій із користувачем.
  • Mow.cli: мінімалістична і швидка, з простим синтаксисом. Вона чудово підходить для невеликих CLI-програм і дає змогу легко керувати аргументами та командами.

Але ми оберемо Cobra, щоб продемонструвати go cli приклади, адже дана бібліотека покриває основні потреби та значно прискорює розробку.

Використання Cobra для створення CLI на Go

Що таке Cobra і як вона спрощує розробку CLI?

Ти вже зрозумів, щоCobra – це бібліотека для створення CLI-додатків на Go. Вона особливо корисна для розробки CLI-інструментів, де потрібна підтримка великої кількості команд і параметрів.

Встановлення та налаштування бібліотеки Cobra

Для початку встанови бібліотеку Cobra. Введи в командному рядку:

go get -u github.com/spf13/cobra

Потім створи новий файл для нашого CLI-додатку. Можна назвати його main.go. Далі, додай у нього підключення Cobra і початкову команду.

Приклад створення простого CLI з використанням Cobra

А тепер створимо команду hello, яка просто виводитиме вітальне повідомлення. Відкрий main.go і додай таку структуру коду:

package main

import (

    "fmt"

    "github.com/spf13/cobra"

)

func main() {

    var rootCmd = &cobra.Command{Use: "app"}

    var helloCmd = &cobra.Command{

        Use:   "hello",

        Short: "Print Hello World",

        Run: func(cmd *cobra.Command, args []string) {

            fmt.Println("Hello, World!")

        },

    }

    rootCmd.AddCommand(helloCmd)

    rootCmd.Execute()

}

Цей приклад показує, як легко додавати команди й обробляти аргументи за допомогою Cobra, спрощуючи розробку CLI на Go.

Структура проекту для CLI-інструментів на Go

Як організувати структуру проєкту для CLI?

Правильна структура проєкту Golang спрощує управління кодом і додавання нових функцій. Створюючи CLI-інструмент, краще дотримуватися стандартної структури Go, розділяючи логіку на пакети і файли для кращої читабельності та підтримки коду.

Робота з конфігураціями та параметрами команд

Коли ти працюєш з CLI, часто необхідно зберігати і читати налаштування. Тут допоможе файл конфігурації, наприклад, config.yaml, який дозволяє зберігати параметри. Бібліотека viper відмінно працює з Cobra і спрощує налаштування конфігурацій. Viper підтримує YAML, JSON, TOML та інші формати.

Найкраща практика організації коду для CLI-додатків

Розділяй команди за файлами. Використовуй окремі файли для кожної команди, як у прикладі вище, і описуй їхній функціонал у файлах cmd/. Такий підхід покращує читабельність і зручність розробки CLI-інструменту. Це також спростить додавання нових команд і тестування.

Підпишіться на наш Ютуб-канал! Корисні відео для програмістів чекають на вас! YouTube
Оберіть свій курс програмування! Шлях до кар’єри програміста починається тут! Подивитись

Розробка і тестування CLI-інструментів на Go

Приклад розробки CLI-інструменту з підтримкою декількох команд

Створимо команду status, яка виводитиме стан застосунку, і команду version, яка покаже поточну версію CLI:

var statusCmd = &cobra.Command{

    Use:   "status",

    Short: "Print application status",

    Run: func(cmd *cobra.Command, args []string) {

        fmt.Println("Application is running")

    },

}

var versionCmd = &cobra.Command{

    Use:   "version",

    Short: "Print the version number",

    Run: func(cmd *cobra.Command, args []string) {

        fmt.Println("CLI version 1.0")

    },

}

Додай ці команди в root.go, щоб вони працювали як частина твого CLI-інструменту.

Як тестувати CLI-інструменти в Go?

Тестування CLI-інструментів може бути викликом, оскільки потрібно перевіряти виконання команд у терміналі. Go підтримує написання тестів для CLI. Наприклад, можна використовувати os/exec для запуску команд і перевірки їхнього виведення:

package main

import (

    "os/exec"

    "testing"

)

func TestHelloCommand(t *testing.T) {

    cmd := exec.Command("go", "run", "main.go", "hello")

    out, err := cmd.Output()

    if err != nil {

        t.Fatal(err)

    }

    if string(out) != "Hello, World!\n" {

        t.Errorf("expected 'Hello, World!', got '%s'", out)

    }

}

Цей тест запускає команду hello і перевіряє її виведення.

Додавання користувацьких прапорів і аргументів

Прапори дають змогу гнучкіше налаштовувати поведінку команди. Додамо прапор до команди hello, щоб вона могла вітати на ім’я. Для цього додай до коду:

helloCmd.Flags().StringP(“name”, “n”, “World”, “Name to greet”)

Тепер можна запускати go run main.go hello -n Go і отримувати привітання: “Hello, Go!”.

Висновок

Створення CLI-інструменту Go – захопливий і корисний досвід для розробників, які працюють з автоматизацією. Тепер у тебе є потужний інструмент, який стабільний і легко масштабується для нових команд і функцій.

FAQ
Що таке CLI?

CLI (Command Line Interface) - це інтерфейс для взаємодії з програмами через термінал за допомогою команд і параметрів.

Чому Go підходить для створення CLI?

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

Яка бібліотека найбільш популярна для CLI на Go?

Cobra - найпопулярніша бібліотека, що пропонує підтримку безлічі команд і параметрів.

Як встановити Cobra?

Використовуйте команду: go get -u github.com/spf13/cobra

Як додати прапор до команди в Cobra?

Використовуйте метод Flags() для налаштування прапорів, наприклад: helloCmd.Flags().StringP("name", "n", "World", "Name to greet").

Які переваги CLI-інструментів на Go?

Вони прості в розробці, працюють стабільно і швидко, і не вимагають складних залежностей.

Хочете дізнатися більше про створення cli-інструментів на go? Поставте своє запитання або поділіться коментарем нижче! 🤔👇

Додати коментар

Ваш імейл не буде опубліковано. Обов'язкові поля відзначені *

Зберегти моє ім'я, імейл та адресу сайту у цьому браузері для майбутніх коментарів