diff --git a/changelog/unreleased/plugin-versions.md b/changelog/unreleased/plugin-versions.md new file mode 100644 index 0000000000..56d348dea7 --- /dev/null +++ b/changelog/unreleased/plugin-versions.md @@ -0,0 +1,3 @@ +Enhancement: Print plugins' version + +https://github.com/cs3org/reva/pull/4288 diff --git a/cmd/revad/main.go b/cmd/revad/main.go index 0a889abfec..1bbcfed68f 100644 --- a/cmd/revad/main.go +++ b/cmd/revad/main.go @@ -23,10 +23,13 @@ import ( "fmt" "io" "io/fs" + "slices" + "os" "path" "reflect" "regexp" + "runtime/debug" "strings" "sync" "syscall" @@ -40,6 +43,7 @@ import ( "github.com/cs3org/reva/pkg/logger" "github.com/cs3org/reva/pkg/plugin" "github.com/cs3org/reva/pkg/sysinfo" + "github.com/cs3org/reva/pkg/utils/maps" "github.com/google/uuid" "github.com/pkg/errors" "github.com/rs/zerolog" @@ -123,12 +127,22 @@ func handlePluginsFlag() { // For now we just list all the plugins. plugins := reva.GetPlugins("") grouped := groupByNamespace(plugins) + bi, ok := debug.ReadBuildInfo() + if !ok { + bi = &debug.BuildInfo{} + } + + namespaces := maps.Keys(grouped) + slices.Sort(namespaces) count := 0 - for ns, plugins := range grouped { + for _, ns := range namespaces { + plugins := grouped[ns] + fmt.Printf("[%s]\n", ns) for _, p := range plugins { - fmt.Printf("%s -> %s\n", p.ID.Name(), pkgOfFunction(p.New)) + pkgName := pkgOfFunction(p.New) + fmt.Printf("%s -> %s (%s)\n", p.ID.Name(), pkgName, pkgVersion(bi.Deps, pkgName)) } count++ if len(grouped) != count { @@ -148,6 +162,15 @@ func pkgOfFunction(f any) string { return name[:i] } +func pkgVersion(deps []*debug.Module, name string) string { + for _, dep := range deps { + if strings.HasPrefix(name, dep.Path) { + return dep.Version + } + } + return "" +} + func groupByNamespace(plugins []reva.PluginInfo) map[string][]reva.PluginInfo { m := make(map[string][]reva.PluginInfo) for _, p := range plugins { diff --git a/docker/Dockerfile.revad-ceph b/docker/Dockerfile.revad-ceph index 0c67918866..311b719634 100644 --- a/docker/Dockerfile.revad-ceph +++ b/docker/Dockerfile.revad-ceph @@ -26,12 +26,12 @@ RUN dnf update --exclude=ceph-iscsi -y && dnf install -y \ librbd-devel \ librados-devel -ADD https://golang.org/dl/go1.19.linux-amd64.tar.gz \ - go1.19.linux-amd64.tar.gz +ADD https://go.dev/dl/go1.21.3.linux-amd64.tar.gz \ + go1.21.3.linux-amd64.tar.gz RUN rm -rf /usr/local/go && \ - tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz && \ - rm go1.19.linux-amd64.tar.gz + tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz && \ + rm go1.21.3.linux-amd64.tar.gz ENV PATH /go/bin:/usr/local/go/bin:$PATH ENV GOPATH /go @@ -44,8 +44,8 @@ ARG VERSION ENV GIT_COMMIT=$GIT_COMMIT ENV VERSION=$VERSION RUN mkdir -p /go/bin && \ - make revad-ceph && \ - cp /go/src/github/cs3org/reva/cmd/revad/revad /usr/bin/revad + make revad-ceph && \ + cp /go/src/github/cs3org/reva/cmd/revad/revad /usr/bin/revad RUN cp -r examples/ceph /etc/