Как распечатать лицензии, используемые в моем проекте, используя Go Модули? - PullRequest
0 голосов
/ 05 апреля 2020

По юридическим причинам мне нужен список лицензий (например, MIT, Apache) зависимостей (прямые и временные библиотеки), которые использует мой проект. Я знаю только как напечатать список зависимостей без лицензий .

Есть ли способ напечатать список зависимостей с лицензиями для Go модулей? Аналогично тому, что делается в npm (NPM License Checker ) и Gradle ( Gradle License Report ). Спасибо!

1 Ответ

1 голос
/ 05 апреля 2020

Вы уже пробовали github.com/google/go-licenses?

Запуск

go get -v github.com/google/go-licenses
go build github.com/google/go-licenses
./go-licenses csv .

Это дает вам хотя бы некоторую информацию.

Немного Больше подробностей: Итак, я создаю тестовый проект:

package main

import (
    "encoding/json"
    "fmt"
    log "github.com/sirupsen/logrus"
)

func main() {
    log.Warn("Warn")
    foo := make(map[string]bool)
    foo["bar"] = true
    j, _ := json.MarshalIndent(foo, " ", " ")
    fmt.Println(string(j))
}

Я делаю:

me@dattan:~/testing/blabla$ go mod init example.com/test
go: creating new go.mod: module example.com/test
me@dattan:~/testing/blabla$ go build
go: finding module for package github.com/sirupsen/logrus
go: downloading github.com/sirupsen/logrus v1.5.0
go: found github.com/sirupsen/logrus in github.com/sirupsen/logrus v1.5.0
go: downloading golang.org/x/sys v0.0.0-20190422165155-953cdadca894
me@dattan:~/testing/blabla$ go get -v github.com/google/go-licenses
go: downloading github.com/google/go-licenses v0.0.0-20200227160636-0fa8c766a591
... [lots of downloads, that's why -v to see it's not dead]
github.com/google/go-licenses
me@dattan:~/testing/blabla$ go build github.com/google/go-licenses
me@dattan:~/testing/blabla$ ./go-licenses csv .
E0406 23:03:48.578291   32389 library.go:108] Failed to find license for example.com/test: no file/directory matching regexp "^(LICEN(S|C)E|COPYING|README|NOTICE)(\\..+)?$" found for /home/me/testing/blabla
E0406 23:03:48.627889   32389 csv.go:84] Error discovering URL for "/home/me/go/pkg/mod/golang.org/x/sys@v0.0.0-20191119060738-e882bf8e40c2/LICENSE":
- unsupported package host "golang.org" for "golang.org/x/sys/unix"
example.com/test,Unknown,Unknown
github.com/sirupsen/logrus,https://github.com/sirupsen/logrus/blob/master/LICENSE,MIT
golang.org/x/sys/unix,Unknown,BSD-3-Clause

И эти последние строки там не идеальны, но он видит, что logrus MIT и предоставляет ссылка на лицензию. В моем тестовом пакете, в котором отсутствует файл LICENSE, конечно, не получается.

Редактировать из комментария Хотя вышесказанное сработало для меня, это команды, которые запрашивающий должен выполнить:

go build ./... 
./go-licenses csv ./...
...