Использование:
go list -m [-u] [-versions] [list flags] [modules]
Пример:
$ go list -m all
$ go list -m -versions example.com/m
$ go list -m -json example.com/m@latest
Флаг -m заставляет go list выводить список модулей вместо пакетов. В этом режиме аргументы для go list могут быть модулями, шаблонами модулей (содержащими подстановочный знак ...), запросами версии или специальным шаблоном all, который соответствует всем модулям в списке сборки. Если аргументы не указаны, отображается основной модуль (main module).
При перечислении модулей флаг -f по-прежнему указывает шаблон формата, применяемый к структуре Go, но теперь это структура Module:
type Module struct {
Path string // путь к модулю
Version string // версия модуля
Versions []string // доступные версии модуля (для -versions)
Replace *Module // заменен этим модулем
Time *time.Time // время создания версии
Update *Module // доступное обновление, если есть (для -u)
Main bool // это основной модуль (main module)?
Indirect bool // этот модуль только косвенная зависимость от основного модуля?
Dir string // каталог, содержащий файлы для этого модуля, если есть
GoMod string // путь к файлу go.mod для этого модуля, если есть
GoVersion string // версия go, используемая в модуле
Error *ModuleError // ошибка загрузки модуля
}
type ModuleError struct {
Err string // сама ошибка
}
По умолчанию выводится путь к модулю, а затем информация о версии и замене, если таковая имеется. Например, go list -m all может напечатать:
example.com/main/module
golang.org/x/text v0.3.0 => /tmp/text
rsc.io/pdf v0.1.1
В структуре Module есть метод String, который форматирует эту строку вывода, так что формат по умолчанию эквивалентен -f '{{.String}}'.
Обратите внимание, что когда модуль был заменен, его поле Replace описывает модуль заменяемого модуля, а его поле Dir устанавливается на исходный код заменяющего модуля, если он присутствует. (То есть, если Replace не равно nil, тогда Dir устанавливается в Replace.Dir, без доступа к замененному исходному коду.)
Флаг -u добавляет информацию о доступных обновлениях. Если последняя версия данного модуля новее, чем текущая, list -u устанавливает в поле Update модуля информацию о более новом модуле. list -u также напечатает, отозвана (retracted) ли текущая выбранная версия. Метод String модуля указывает доступное обновление путем форматирования новой версии в скобках после текущей версии. Например, go list -m -u all может напечатать:
example.com/main/module
golang.org/x/net v0.1.0 (retracted) [v0.2.0]
golang.org/x/text v0.3.0 [v0.4.0] => /tmp/text
rsc.io/pdf v0.1.1 [v0.1.2]
(Для инструментов, go list -m -u -json может быть более удобным для синтаксического анализа.)
Флаг -versions заставляет list установить в поле Versions модуля список всех известных версий этого модуля, упорядоченных в соответствии с семантическим управлением версиями, от наименьшего к наибольшему. Флаг также изменяет формат вывода по умолчанию для отображения пути к модулю, за которым следует список версий, разделенных пробелами. Отозванные версии не включаются в этот список, если также не указан флаг -retracted.
Флаг -retracted инструктирует list показывать отозванные версии в списке, напечатанном с флагом -versions, и учитывать отозванные версии при разрешении запросов о версиях. Например, go list -m -retracted example.com/m@latest показывает самый высокий релиз или предварительную версию модуля example.com/m, даже если эта версия отозвана. Директивы retract загружаются из файла go.mod в этой версии. Флаг -retracted был добавлен в Go 1.16.
Шаблонная функция module принимает единственный строковый аргумент, который должен быть путем к модулю или запросом, и возвращает указанный модуль как структуру Module. В случае возникновения ошибки результатом будет структура Module с полем Error, отличным от nil.
Читайте также:
- Модули в Golang: команды с поддержкой модулей, команды сборки
- Модули в Golang: команды с поддержкой модулей, вендоринг
- Модули в Golang: команды с поддержкой модулей, go get
Комментариев нет:
Отправить комментарий