Реализация docopt на языке программирования Go.
docopt помогает легко создавать красивые командные строки:
package main
import (
"fmt"
"github.com/docopt/docopt-go"
)
func main() {
usage := `Морская судьба.
Использование:
naval_fate корабль новый <название>...
naval_fate корабль <название> переместить <x> <y> [--скорость=<узл>]
naval_fate корабль выстрелить <x> <y>
naval_fate мина (установить|удалить) <x> <y> [--зафиксированная|--плавающая]
naval_fate -h | --помощь
naval_fate --версия
Параметры:
-h --помощь Показать это сообщение.
--версия Показать версию.
--скорость=<узл> Скорость в узлах [по умолчанию: 10].
--зафиксированная Зафиксированная мина.
--плавающая Плавающая мина.`
arguments, _ := docopt.ParseDoc(usage)
fmt.Println(arguments)
}
docopt парсит аргументы командной строки на основе справочной информации. Не пишите код парсера: хорошее справочное сообщение уже содержит всю необходимую информацию.
⚠ Используйте псевдоним "docopt-go". Чтобы использовать docopt в вашем Go коде:
import "github.com/docopt/docopt-go"
Чтобы установить docopt в вашей директории $GOPATH
:
$ go get github.com/docopt/docopt-go
``````console
$ go get github.com/docopt/docopt-go
С использованием обычного справочного сообщения командной строки, docopt обрабатывает аргументы. См. https://github.com/docopt/docopt#format-of-help-messages для описания формата справочных сообщений.
Эта библиотека предлагает три различных API в зависимости от уровня контроля. Самый простой способ парсинга вашего docopt использования — просто вызвать:
docopt.ParseDoc(usage)
Это будет использовать os.Args[1:]
как массив argv, и использовать стандартные параметры парсера. Если вам требуется предоставить свои собственные строки версий и аргументов, используйте:
docopt.ParseArgs(usage, argv, "1.2.3")
Если последний параметр (версия) является непустой строкой, он будет выводиться при передаче --версия
в массиве argv. Наконец, мы можем создать свой собственный экземпляр docopt.Parser
, что позволяет контролировать, как выводятся сообщения помощи и выходят после отображения справочных сообщений, и т.д.```go
parser := &docopt.Parser{
HelpHandler: docopt.PrintHelpOnly,
OptionsFirst: true,
}
opts, err := parser.ParseArgs(usage, argv, "")
В частности, установка собственной функции `HelpHandler` делает юнит-тестирование собственных документов с примерами командной строки намного приятнее.
Все три этих вызова возвращают карту значений опций, а также ошибку или `nil`. Вы можете получить значения с помощью помощников, либо просто рассматривать это как обычную карту:
``````go
флаг, _ := opts.Bool("--flag")
секунды, _ := opts.Int("<seconds>")
Кроме того, вы можете привязать эти опции к структуре, назначая значения опций экспортированным полям этой структуры за один шаг.
var конфиг struct {
Команда string `docopt:"<cmd>"`
Попытки int `docopt:"-n"`
Сила bool // Получает значение опции --force
}
opts.Bind(&конфиг)
Дополнительная документация доступна на godoc.org.
Юнит-тестирование ваших собственных документов использования рекомендовано, чтобы быть уверенным, что при данном вызове командной строки установлены ожидаемые опции. Пример того, как это сделать, находится в папке examples.
Все тесты из версии на Python реализованы и проходят успешно на Travis CI. Новые языково-независимые тесты были добавлены в test_golang.docopt.
Чтобы запустить тесты для docopt-go, используйте go test
.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )