Если ваша отправная точка - файл go.mod
, и вы спрашиваете, как его проанализировать, я бы предложил начать с go mod edit -json
, который выводит конкретный файл go.mod
в формате JSON. Вот документация:
https://golang.org/cmd/go/#hdr-Edit_go_mod_from_tools_or_scripts
В качестве альтернативы вы можете использовать rogpeppe / go-internal / modfile , который представляет собой пакет go, который может анализировать файл go.mod
и который используется rogpeppe / gohack и некоторые другие инструменты от более широкого сообщества.
Issue # 28101 Я думаю, что отслеживает добавление нового API в стандартную библиотеку Go для анализа go.mod
файлов.
Вот фрагмент документации для go mod edit -json
:
Флаг -json печатает окончательный файл go.mod в формате JSON вместо
писать обратно на go.mod. Выход JSON соответствует этим Go
Типы:
type Module struct {
Path string
Version string
}
type GoMod struct {
Module Module
Go string
Require []Require
Exclude []Module
Replace []Replace
}
type Require struct {
Path string
Version string
Indirect bool
}
Вот пример фрагмента вывода JSON из go mod edit -json
, в котором показан фактический путь к модулю (имя модуля), который был вашим первоначальным вопросом:
{
"Module": {
"Path": "rsc.io/quote"
},
В этом случае имя модуля - rsc.io/quote
.