This is an automated email from the ASF dual-hosted git repository.
zhongxjian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-kubernetes.git
The following commit(s) were added to refs/heads/master by this push:
new 5eb1d224 [dubboctl] replenishment repo logic (#545)
5eb1d224 is described below
commit 5eb1d2241e69e8240ac054866de5457d51940dc7
Author: Jian Zhong <[email protected]>
AuthorDate: Thu Jan 16 14:44:43 2025 +0800
[dubboctl] replenishment repo logic (#545)
---
dubboctl/cmd/create.go | 2 +-
dubboctl/mydubbo/.gitignore | 5 ++
dubboctl/pkg/sdk/client.go | 20 ++---
dubboctl/pkg/sdk/dubbo/config.go | 41 +++++-----
dubboctl/pkg/sdk/dubbo/dockerfile.go | 8 +-
dubboctl/pkg/sdk/repositories.go | 2 +-
dubboctl/pkg/sdk/repository.go | 153 +++++++++++++++++++++++++++++++----
dubboctl/pkg/sdk/template.go | 32 +++++---
dubboctl/pkg/sdk/templates.go | 35 ++++++--
dubboctl/pkg/{fs => util}/fs.go | 2 +-
go.mod | 19 ++++-
go.sum | 60 +++++++++++---
12 files changed, 291 insertions(+), 88 deletions(-)
diff --git a/dubboctl/cmd/create.go b/dubboctl/cmd/create.go
index 7fd298d4..1c156c6b 100644
--- a/dubboctl/cmd/create.go
+++ b/dubboctl/cmd/create.go
@@ -37,7 +37,7 @@ func CreateCmd(_ cli.Context, cmd *cobra.Command,
clientFactory ClientFactory) *
return cc
}
-func sdkGenerateCmd(cmd *cobra.Command, clientFactory ClientFactory)
*cobra.Command {
+func sdkGenerateCmd(_ *cobra.Command, clientFactory ClientFactory)
*cobra.Command {
return &cobra.Command{
Use: "sdk",
Short: "Generate sdk samples for Dubbo supported languages",
diff --git a/dubboctl/mydubbo/.gitignore b/dubboctl/mydubbo/.gitignore
new file mode 100644
index 00000000..fbffce1f
--- /dev/null
+++ b/dubboctl/mydubbo/.gitignore
@@ -0,0 +1,5 @@
+
+# Applications use the .dubbo directory for local runtime data which should
+# generally not be tracked in source control. To instruct the system to track
+# .dubbo in source control, comment the following line (prefix it with '# ').
+/.dubbo
diff --git a/dubboctl/pkg/sdk/client.go b/dubboctl/pkg/sdk/client.go
index 602f1875..7fb00f93 100644
--- a/dubboctl/pkg/sdk/client.go
+++ b/dubboctl/pkg/sdk/client.go
@@ -80,10 +80,10 @@ func (c *Client) Initialize(dcfg *dubbo.DubboConfig,
initialized bool, cmd *cobr
return dcfg, err
}
}
-
+ // TODO remove initiallized
f := dubbo.NewDubboConfigWithTemplate(dcfg, initialized)
- if err = EnsureRunDataDir(f.Root); err != nil {
+ if err = RunDataDir(f.Root); err != nil {
return f, err
}
@@ -95,11 +95,11 @@ func (c *Client) Initialize(dcfg *dubbo.DubboConfig,
initialized bool, cmd *cobr
}
f.Created = time.Now()
- err = f.Write()
+ err = f.WriteYamlfile()
if err != nil {
return f, err
}
- err = f.EnsureDockerfile(cmd)
+ err = f.WriteDockerfile(cmd)
if err != nil {
return f, err
}
@@ -169,7 +169,6 @@ func contentiousFilesIn(dir string) (contentious []string,
err error) {
}
func isEffectivelyEmpty(dir string) (bool, error) {
- // Check for any non-hidden files
files, err := os.ReadDir(dir)
if err != nil {
return false, err
@@ -182,7 +181,7 @@ func isEffectivelyEmpty(dir string) (bool, error) {
return true, nil
}
-func EnsureRunDataDir(root string) error {
+func RunDataDir(root string) error {
if err := os.MkdirAll(filepath.Join(root, dubbo.DataDir), os.ModePerm);
err != nil {
return err
}
@@ -192,9 +191,9 @@ func EnsureRunDataDir(root string) error {
return err
}
defer roFile.Close()
- if !os.IsNotExist(err) { // if no error openeing it
- s := bufio.NewScanner(roFile) // create a scanner
- for s.Scan() { // scan each line
+ if !os.IsNotExist(err) {
+ s := bufio.NewScanner(roFile)
+ for s.Scan() {
if strings.HasPrefix(s.Text(), "# /"+dubbo.DataDir) {
// if it was commented
return nil // user wants it
}
@@ -220,9 +219,6 @@ func EnsureRunDataDir(root string) error {
`); err != nil {
return err
}
-
- // Flush to disk immediately since this may affect subsequent
calculations
- // of the build stamp
if err = rwFile.Sync(); err != nil {
fmt.Fprintf(os.Stderr, "warning: error when syncing .gitignore.
%s\n", err)
}
diff --git a/dubboctl/pkg/sdk/dubbo/config.go b/dubboctl/pkg/sdk/dubbo/config.go
index d592d4fb..674015c9 100644
--- a/dubboctl/pkg/sdk/dubbo/config.go
+++ b/dubboctl/pkg/sdk/dubbo/config.go
@@ -33,6 +33,7 @@ func NewDubboConfig(path string) (*DubboConfig, error) {
}
}
f.Root = path
+
fd, err := os.Stat(path)
if err != nil {
return f, err
@@ -40,6 +41,7 @@ func NewDubboConfig(path string) (*DubboConfig, error) {
if !fd.IsDir() {
return nil, fmt.Errorf("function path must be a directory")
}
+
filename := filepath.Join(path, DubboYamlFile)
if _, err = os.Stat(filename); err != nil {
if os.IsNotExist(err) {
@@ -56,43 +58,44 @@ func NewDubboConfig(path string) (*DubboConfig, error) {
if err != nil {
return f, err
}
+
return f, nil
}
-func NewDubboConfigWithTemplate(defaults *DubboConfig, initialized bool)
*DubboConfig {
+func NewDubboConfigWithTemplate(dc *DubboConfig, initialized bool)
*DubboConfig {
if !initialized {
- if defaults.Template == "" {
- defaults.Template = DefaultTemplate
+ if dc.Template == "" {
+ dc.Template = DefaultTemplate
}
}
- return defaults
-}
-
-func (dc *DubboConfig) Initialized() bool {
- return !dc.Created.IsZero()
+ return dc
}
-func (f *DubboConfig) EnsureDockerfile(cmd *cobra.Command) (err error) {
- dockerfilepath := filepath.Join(f.Root, Dockerfile)
- dockerfilebytes, ok := DockerfileByRuntime[f.Runtime]
- if !ok {
- fmt.Fprintln(cmd.OutOrStdout(), "The runtime of your current
project is not one of Java or go. We cannot help you generate a Dockerfile
template.")
+func (dc *DubboConfig) WriteYamlfile() (err error) {
+ file := filepath.Join(dc.Root, DubboYamlFile)
+ var bytes []byte
+ if bytes, err = yaml.Marshal(dc); err != nil {
return
}
- if err = os.WriteFile(dockerfilepath, []byte(dockerfilebytes), 0o644);
err != nil {
+ if err = os.WriteFile(file, bytes, 0o644); err != nil {
return
}
return
}
-func (f *DubboConfig) Write() (err error) {
- dubboyamlpath := filepath.Join(f.Root, DubboYamlFile)
- var dubbobytes []byte
- if dubbobytes, err = yaml.Marshal(f); err != nil {
+func (dc *DubboConfig) WriteDockerfile(cmd *cobra.Command) (err error) {
+ path := filepath.Join(dc.Root, Dockerfile)
+ bytes, ok := DockerfileByRuntime[dc.Runtime]
+ if !ok {
+ fmt.Fprintln(cmd.OutOrStdout(), "The runtime of your current
project is not one of Java or go. We cannot help you generate a Dockerfile
template.")
return
}
- if err = os.WriteFile(dubboyamlpath, dubbobytes, 0o644); err != nil {
+ if err = os.WriteFile(path, []byte(bytes), 0o644); err != nil {
return
}
return
}
+
+func (dc *DubboConfig) Initialized() bool {
+ return !dc.Created.IsZero()
+}
diff --git a/dubboctl/pkg/sdk/dubbo/dockerfile.go
b/dubboctl/pkg/sdk/dubbo/dockerfile.go
index 63b7d1e2..adf97032 100644
--- a/dubboctl/pkg/sdk/dubbo/dockerfile.go
+++ b/dubboctl/pkg/sdk/dubbo/dockerfile.go
@@ -18,7 +18,7 @@
package dubbo
var (
- DockerfileGolang = `
+ golang = `
# Please modify your template according to your business needs!!!
FROM golang:alpine AS builder
@@ -48,7 +48,7 @@ ENV DUBBO_GO_CONFIG_PATH=/app/conf/dubbogo.yaml
CMD ["./dubbogo"]
`
- DockerfileJava = `
+ java = `
# Please modify your template according to your business needs!!!
FROM openjdk:8-jdk-alpine
@@ -59,7 +59,7 @@ ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar
`
DockerfileByRuntime = map[string]string{
- "go": DockerfileGolang,
- "java": DockerfileJava,
+ "go": golang,
+ "java": java,
}
)
diff --git a/dubboctl/pkg/sdk/repositories.go b/dubboctl/pkg/sdk/repositories.go
index d30c4f01..aae5db37 100644
--- a/dubboctl/pkg/sdk/repositories.go
+++ b/dubboctl/pkg/sdk/repositories.go
@@ -79,7 +79,7 @@ func (r *Repositories) Get(name string) (repo Repository, err
error) {
if err != nil {
return
}
- if len(all) == 0 { // should not be possible because embedded always
exists.
+ if len(all) == 0 {
err = errors.New("internal error: no repositories loaded")
return
}
diff --git a/dubboctl/pkg/sdk/repository.go b/dubboctl/pkg/sdk/repository.go
index bce0c195..4016059f 100644
--- a/dubboctl/pkg/sdk/repository.go
+++ b/dubboctl/pkg/sdk/repository.go
@@ -2,17 +2,23 @@ package sdk
import (
"fmt"
- "github.com/apache/dubbo-kubernetes/dubboctl/pkg/fs"
+ "github.com/apache/dubbo-kubernetes/dubboctl/pkg/util"
+ "github.com/go-git/go-billy/v5/memfs"
+ "github.com/go-git/go-git/v5"
+ "github.com/go-git/go-git/v5/plumbing"
+ "github.com/go-git/go-git/v5/storage/memory"
"net/url"
"os"
"path"
+ "path/filepath"
"strings"
)
type Repository struct {
Name string
Runtimes []Runtime
- fs fs.Filesystem
+ fs util.Filesystem
+ uri string
}
type repositoryConfig struct {
@@ -21,7 +27,14 @@ type repositoryConfig struct {
}
func NewRepository(name, uri string) (r Repository, err error) {
- r = Repository{}
+ r = Repository{
+ uri: uri,
+ }
+ fs, err := filesystemFromURI(uri)
+ if err != nil {
+ return Repository{}, fmt.Errorf("failed to get repository from
URI (%q): %w", uri, err)
+ }
+ r.fs = fs
repoConfig := repositoryConfig{}
if repoConfig.TemplatesPath != "" {
if err = checkDir(r.fs, repoConfig.TemplatesPath); err != nil {
@@ -40,7 +53,7 @@ func NewRepository(name, uri string) (r Repository, err
error) {
if name != "" {
r.Name = name
}
- r.Runtimes, err = repositoryRuntimes(nil, r.Name, repoConfig)
+ r.Runtimes, err = repositoryRuntimes(fs, r.Name, repoConfig)
return
}
@@ -61,7 +74,7 @@ func repositoryDefaultName(name, uri string) (string, error) {
return DefaultRepositoryName, nil
}
-func repositoryRuntimes(fs fs.Filesystem, repoName string, repoConfig
repositoryConfig) (runtimes []Runtime, err error) {
+func repositoryRuntimes(fs util.Filesystem, repoName string, repoConfig
repositoryConfig) (runtimes []Runtime, err error) {
runtimes = []Runtime{}
fis, err := fs.ReadDir(repoConfig.TemplatesPath)
@@ -85,7 +98,7 @@ func repositoryRuntimes(fs fs.Filesystem, repoName string,
repoConfig repository
return
}
-func runtimeTemplates(fs fs.Filesystem, templatesPath, repoName, runtimeName
string) (templates []Template, err error) {
+func runtimeTemplates(fs util.Filesystem, templatesPath, repoName, runtimeName
string) (templates []Template, err error) {
runtimePath := path.Join(templatesPath, runtimeName)
if err = checkDir(fs, runtimePath); err != nil {
err = fmt.Errorf("runtime path '%v' not found. %v",
runtimePath, err)
@@ -103,23 +116,13 @@ func runtimeTemplates(fs fs.Filesystem, templatesPath,
repoName, runtimeName str
t := template{
name: fi.Name(),
runtime: runtimeName,
+ fs: util.NewSubFS(path.Join(runtimePath,
fi.Name()), fs),
}
-
templates = append(templates, t)
}
return
}
-func checkDir(fs fs.Filesystem, path string) error {
- fi, err := fs.Stat(path)
- if err != nil && os.IsNotExist(err) {
- err = fmt.Errorf("path '%v` not found", path)
- } else if err == nil && !fi.IsDir() {
- err = fmt.Errorf("path '%v' is not a directory", path)
- }
- return err
-}
-
type Runtime struct {
Name string
Templates []Template
@@ -138,6 +141,15 @@ func (r *Repository) Template(runtimeName, name string) (t
Template, err error)
return nil, fmt.Errorf("template not found")
}
+func (r *Repository) Templates(runtimeName string) ([]Template, error) {
+ for _, runtime := range r.Runtimes {
+ if runtime.Name == runtimeName {
+ return runtime.Templates, nil
+ }
+ }
+ return nil, nil
+}
+
func (r *Repository) Runtime(name string) (runtime Runtime, err error) {
if name == "" {
return Runtime{}, fmt.Errorf("language runtime required")
@@ -149,3 +161,110 @@ func (r *Repository) Runtime(name string) (runtime
Runtime, err error) {
}
return Runtime{}, fmt.Errorf("language runtime not found")
}
+
+func filesystemFromURI(uri string) (fs util.Filesystem, err error) {
+ if uri == "" {
+ }
+ if isNonBareGitRepo(uri) {
+ return filesystemFromPath(uri)
+ }
+
+ fs, err = FilesystemFromRepo(uri)
+ if fs != nil || err != nil {
+ return
+ }
+
+ return filesystemFromPath(uri)
+}
+
+func isNonBareGitRepo(uri string) bool {
+ parsed, err := url.Parse(uri)
+ if err != nil {
+ return false
+ }
+ if parsed.Scheme != "file" {
+ return false
+ }
+ p := filepath.Join(filepath.FromSlash(uri[7:]), ".git")
+ fi, err := os.Stat(p)
+ if err != nil {
+ return false
+ }
+ return fi.IsDir()
+}
+
+func filesystemFromPath(uri string) (fs util.Filesystem, err error) {
+ parsed, err := url.Parse(uri)
+ if err != nil {
+ return
+ }
+
+ if parsed.Scheme != "file" {
+ return nil, fmt.Errorf("only file scheme is supported")
+ }
+
+ path := filepath.FromSlash(uri[7:])
+
+ if _, err := os.Stat(path); os.IsNotExist(err) {
+ return nil, fmt.Errorf("path does not exist: %v", path)
+ }
+ return util.NewOsFilesystem(path), nil
+}
+
+func FilesystemFromRepo(uri string) (util.Filesystem, error) {
+ clone, err := git.Clone(memory.NewStorage(),
+ memfs.New(),
+ getGitCloneOptions(uri),
+ )
+ if err != nil {
+ if isRepoNotFoundError(err) {
+ return nil, nil
+ }
+
+ if isBranchNotFoundError(err) {
+ return nil, fmt.Errorf("failed to clone repository:
branch not found for uri %s", uri)
+ }
+ return nil, fmt.Errorf("failed to clone repository: %w", err)
+ }
+ wt, err := clone.Worktree()
+ if err != nil {
+ return nil, err
+ }
+ return util.NewBillyFilesystem(wt.Filesystem), nil
+}
+
+func getGitCloneOptions(uri string) *git.CloneOptions {
+ branch := ""
+ splitUri := strings.Split(uri, "#")
+ if len(splitUri) > 1 {
+ uri = splitUri[0]
+ branch = splitUri[1]
+ }
+
+ opt := &git.CloneOptions{
+ URL: uri, Depth: 1, Tags: git.NoTags,
+ RecurseSubmodules: git.NoRecurseSubmodules,
+ }
+ if branch != "" {
+ opt.ReferenceName = plumbing.NewBranchReferenceName(branch)
+ }
+ return opt
+}
+
+func isRepoNotFoundError(err error) bool {
+ return err != nil && err.Error() == "repository not found"
+}
+
+func isBranchNotFoundError(err error) bool {
+ return err != nil && err.Error() == "reference not found"
+}
+
+func checkDir(fs util.Filesystem, path string) error {
+ fi, err := fs.Stat(path)
+ if err != nil && os.IsNotExist(err) {
+ err = fmt.Errorf("path '%v` not found", path)
+ } else if err == nil && !fi.IsDir() {
+ err = fmt.Errorf("path '%v' is not a directory", path)
+ }
+ return err
+}
diff --git a/dubboctl/pkg/sdk/template.go b/dubboctl/pkg/sdk/template.go
index 0013e53c..61671efe 100644
--- a/dubboctl/pkg/sdk/template.go
+++ b/dubboctl/pkg/sdk/template.go
@@ -2,36 +2,42 @@ package sdk
import (
"context"
- "github.com/apache/dubbo-kubernetes/dubboctl/pkg/fs"
"github.com/apache/dubbo-kubernetes/dubboctl/pkg/sdk/dubbo"
+ "github.com/apache/dubbo-kubernetes/dubboctl/pkg/util"
"path"
)
type template struct {
- name string
- runtime string
- fs fs.Filesystem
+ name string
+ runtime string
+ repository string
+ fs util.Filesystem
}
type Template interface {
Name() string
+ Fullname() string
Runtime() string
Write(ctx context.Context, f *dubbo.DubboConfig) error
}
-func (t template) Write(ctx context.Context, f *dubbo.DubboConfig) error {
- mask := func(p string) bool {
- _, f := path.Split(p)
- return f == "manifest.yaml"
- }
-
- return fs.CopyFromFS(".", f.Root, fs.NewMaskingFS(mask, t.fs))
-}
-
func (t template) Name() string {
return t.name
}
+func (t template) Fullname() string {
+ return t.repository + "/" + t.name
+}
+
func (t template) Runtime() string {
return t.runtime
}
+
+func (t template) Write(ctx context.Context, dc *dubbo.DubboConfig) error {
+ mask := func(p string) bool {
+ _, f := path.Split(p)
+ return f == "sdk.yaml"
+ }
+
+ return util.CopyFromFS(".", dc.Root, util.NewMaskingFS(mask, t.fs))
+}
diff --git a/dubboctl/pkg/sdk/templates.go b/dubboctl/pkg/sdk/templates.go
index 3e37d2e0..97234c0d 100644
--- a/dubboctl/pkg/sdk/templates.go
+++ b/dubboctl/pkg/sdk/templates.go
@@ -14,21 +14,34 @@ type Templates struct {
}
func newTemplates(client *Client) *Templates {
- return &Templates{client: client}
+ return &Templates{
+ client: client,
+ }
}
func (t *Templates) List(runtime string) ([]string, error) {
var names []string
extended := util.NewSortedSet()
- return append(names, extended.Items()...), nil
-}
-func (t *Templates) Write(f *dubbo.DubboConfig) error {
- template, err := t.Get(f.Runtime, f.Template)
+ rr, err := t.client.Repositories().All()
if err != nil {
- return err
+ return []string{}, err
+ }
+
+ for _, r := range rr {
+ tt, err := r.Templates(runtime)
+ if err != nil {
+ return []string{}, err
+ }
+ for _, t := range tt {
+ if r.Name == DefaultRepositoryName {
+ names = append(names, t.Name())
+ } else {
+ extended.Add(t.Fullname())
+ }
+ }
}
- return template.Write(context.TODO(), f)
+ return append(names, extended.Items()...), nil
}
func (t *Templates) Get(runtime, fullname string) (Template, error) {
@@ -48,6 +61,14 @@ func (t *Templates) Get(runtime, fullname string) (Template,
error) {
return repo.Template(runtime, tplName)
}
+func (t *Templates) Write(dc *dubbo.DubboConfig) error {
+ template, err := t.Get(dc.Runtime, dc.Template)
+ if err != nil {
+ return err
+ }
+ return template.Write(context.TODO(), dc)
+}
+
func splitTemplateFullname(name string) (repoName, tplName string) {
cc := strings.Split(name, "/")
if len(cc) == 1 {
diff --git a/dubboctl/pkg/fs/fs.go b/dubboctl/pkg/util/fs.go
similarity index 99%
rename from dubboctl/pkg/fs/fs.go
rename to dubboctl/pkg/util/fs.go
index 908d8572..4923b392 100644
--- a/dubboctl/pkg/fs/fs.go
+++ b/dubboctl/pkg/util/fs.go
@@ -1,4 +1,4 @@
-package fs
+package util
import (
"archive/zip"
diff --git a/go.mod b/go.mod
index 14eb4d83..06254950 100644
--- a/go.mod
+++ b/go.mod
@@ -23,6 +23,7 @@ require (
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
github.com/bakito/go-log-logr-adapter v0.0.2
github.com/cheggaaa/pb/v3 v3.1.5
+ github.com/docker/docker v23.0.1+incompatible
github.com/dubbogo/go-zookeeper v1.0.4-0.20211212162352-f9d2183d89d5
github.com/dubbogo/gost v1.14.0
github.com/emicklei/go-restful/v3 v3.11.0
@@ -32,6 +33,8 @@ require (
github.com/fullstorydev/grpcurl v1.9.1
github.com/gin-gonic/gin v1.9.1
github.com/go-co-op/gocron v1.9.0
+ github.com/go-git/go-billy/v5 v5.6.2
+ github.com/go-git/go-git/v5 v5.13.1
github.com/go-logr/logr v1.4.2
github.com/go-logr/zapr v1.3.0
github.com/go-sql-driver/mysql v1.7.0
@@ -92,10 +95,13 @@ require (
require (
cel.dev/expr v0.18.0 // indirect
cloud.google.com/go/compute/metadata v0.3.0 // indirect
+ dario.cat/mergo v1.0.0 // indirect
github.com/BurntSushi/toml v1.3.2 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
+ github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/OneOfOne/xxhash v1.2.8 // indirect
+ github.com/ProtonMail/go-crypto v1.1.3 // indirect
github.com/RoaringBitmap/roaring v1.2.3 // indirect
github.com/VividCortex/ewma v1.2.0 // indirect
github.com/Workiva/go-datastructures v1.0.52 // indirect
@@ -115,6 +121,7 @@ require (
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 //
indirect
+ github.com/cloudflare/circl v1.3.7 // indirect
github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe // indirect
github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b // indirect
github.com/coreos/go-semver v0.3.1 // indirect
@@ -128,6 +135,7 @@ require (
github.com/dubbogo/grpc-go v1.42.10 // indirect
github.com/dubbogo/triple v1.2.2-rc3 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
+ github.com/emirpasic/gods v1.18.1 // indirect
github.com/evanphx/json-patch v5.7.0+incompatible // indirect
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
@@ -135,7 +143,7 @@ require (
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-errors/errors v1.4.2 // indirect
- github.com/go-git/go-billy/v5 v5.6.2 // indirect
+ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
@@ -150,6 +158,7 @@ require (
github.com/gobuffalo/flect v1.0.3 // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/goccy/go-json v0.10.2 // indirect
+ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da //
indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/btree v1.0.1 // indirect
github.com/google/gnostic-models v0.6.9 // indirect
@@ -167,6 +176,7 @@ require (
github.com/imdario/mergo v0.3.16 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/influxdata/tdigest v0.0.1 // indirect
+ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 //
indirect
github.com/jinzhu/copier v0.3.5 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
@@ -174,6 +184,7 @@ require (
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/k0kubun/pp v3.0.1+incompatible // indirect
+ github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
github.com/knadh/koanf v1.5.0 // indirect
@@ -188,6 +199,7 @@ require (
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
+ github.com/moby/sys/symlink v0.3.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd //
indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/monochromegane/go-gitignore
v0.0.0-20200626010858-205db1a8cc00 // indirect
@@ -202,6 +214,7 @@ require (
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pierrec/lz4 v2.6.1+incompatible // indirect
+ github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 //
indirect
github.com/polarismesh/polaris-go v1.3.0 // indirect
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c //
indirect
@@ -213,6 +226,7 @@ require (
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 //
indirect
github.com/shirou/gopsutil/v3 v3.22.2 // indirect
github.com/shopspring/decimal v1.3.1 // indirect
+ github.com/skeema/knownhosts v1.3.0 // indirect
github.com/smartystreets/assertions v1.0.0 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
@@ -226,6 +240,7 @@ require (
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
github.com/x448/float16 v0.8.4 // indirect
+ github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb //
indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415
// indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
@@ -258,7 +273,9 @@ require (
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
+ gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
+ gotest.tools/v3 v3.5.1 // indirect
k8s.io/cli-runtime v0.32.0 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
diff --git a/go.sum b/go.sum
index abe27870..f1628a04 100644
--- a/go.sum
+++ b/go.sum
@@ -35,6 +35,8 @@ cloud.google.com/go/storage v1.5.0/go.mod
h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
cloud.google.com/go/storage v1.6.0/go.mod
h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod
h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod
h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
+dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
+dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod
h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
dubbo.apache.org/dubbo-go/v3 v3.2.0-rc1.0.20240926033233-f03922ab1bcb
h1:pcd2OAuo5NZuglupBFpXEjvH6NlWyHy6pwlPDAwVUFw=
dubbo.apache.org/dubbo-go/v3 v3.2.0-rc1.0.20240926033233-f03922ab1bcb/go.mod
h1:ECpY0g32XJMG2irWj6wttH94zA5QU70Alc5hmOyXgu4=
@@ -52,9 +54,14 @@ github.com/Masterminds/semver/v3 v3.2.1
h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0
github.com/Masterminds/semver/v3 v3.2.1/go.mod
h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
github.com/Masterminds/sprig/v3 v3.2.3
h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
github.com/Masterminds/sprig/v3 v3.2.3/go.mod
h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
+github.com/Microsoft/go-winio v0.5.2/go.mod
h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
+github.com/Microsoft/go-winio v0.6.1
h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
+github.com/Microsoft/go-winio v0.6.1/go.mod
h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/OneOfOne/xxhash v1.2.2/go.mod
h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OneOfOne/xxhash v1.2.8
h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
github.com/OneOfOne/xxhash v1.2.8/go.mod
h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
+github.com/ProtonMail/go-crypto v1.1.3
h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
+github.com/ProtonMail/go-crypto v1.1.3/go.mod
h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/RoaringBitmap/roaring v1.2.3
h1:yqreLINqIrX22ErkKI0vY47/ivtJr6n+kMhVOVmhWBY=
github.com/RoaringBitmap/roaring v1.2.3/go.mod
h1:plvDsJQpxOC5bw8LRteu/MLWHsHez/3y6cubLI4/1yE=
github.com/Shopify/sarama v1.19.0/go.mod
h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
@@ -83,6 +90,8 @@ github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod
h1:v8ESoHo4SyHmuB4b1tJqDH
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704/go.mod
h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU=
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1800
h1:ie/8RxBOfKZWcrbYSJi2Z8uX8TcOlSMwPlEJh83OeOw=
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1800/go.mod
h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU=
+github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be
h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
+github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod
h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/antihax/optional v1.0.0/go.mod
h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/apache/dubbo-getty v1.4.10
h1:ZmkpHJa/qgS0evX2tTNqNCz6rClI/9Wwp7ctyMml82w=
github.com/apache/dubbo-getty v1.4.10/go.mod
h1:V64WqLIxksEgNu5aBJBOxNIvpOZyfUJ7J/DXBlKSUoA=
@@ -96,6 +105,8 @@ github.com/armon/circbuf
v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod
h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod
h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-radix v1.0.0/go.mod
h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
+github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
+github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod
h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod
h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod
h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
@@ -160,6 +171,8 @@ github.com/chzyer/test
v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn
github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod
h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod
h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod
h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudflare/circl v1.3.7
h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
+github.com/cloudflare/circl v1.3.7/go.mod
h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod
h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod
h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod
h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
@@ -199,8 +212,6 @@ github.com/creack/pty v1.1.9/go.mod
h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
github.com/creack/pty v1.1.11/go.mod
h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/creasty/defaults v1.5.2
h1:/VfB6uxpyp6h0fr7SPp7n8WJBoV8jfxQXPCnkVSjyls=
github.com/creasty/defaults v1.5.2/go.mod
h1:FPZ+Y0WNrbqOVw+c6av63eyHUAl6pMHZwqLPvXUZGfY=
-github.com/cyphar/filepath-securejoin v0.2.4
h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
-github.com/cyphar/filepath-securejoin v0.2.4/go.mod
h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
github.com/cyphar/filepath-securejoin v0.3.6
h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
github.com/cyphar/filepath-securejoin v0.3.6/go.mod
h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
github.com/davecgh/go-spew v1.1.0/go.mod
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -216,6 +227,8 @@ github.com/dgryski/go-sip13
v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8
github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod
h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
github.com/dlclark/regexp2 v1.7.0
h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo=
github.com/dlclark/regexp2 v1.7.0/go.mod
h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/docker/docker v23.0.1+incompatible
h1:vjgvJZxprTTE1A37nm+CLNAdwu6xZekyoiVlUZEINcY=
+github.com/docker/docker v23.0.1+incompatible/go.mod
h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod
h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk=
github.com/dop251/goja v0.0.0-20240220182346-e401ed450204
h1:O7I1iuzEA7SG+dK8ocOBSlYAA9jBUmCYl/Qa7ey7JAM=
github.com/dop251/goja v0.0.0-20240220182346-e401ed450204/go.mod
h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4=
@@ -247,8 +260,12 @@ github.com/eapache/go-resiliency v1.2.0/go.mod
h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod
h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
github.com/eapache/queue v1.1.0/go.mod
h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
github.com/edsrzf/mmap-go v1.0.0/go.mod
h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
+github.com/elazarl/goproxy v1.2.3
h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ=
+github.com/elazarl/goproxy v1.2.3/go.mod
h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64=
github.com/emicklei/go-restful/v3 v3.11.0
h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
github.com/emicklei/go-restful/v3 v3.11.0/go.mod
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emirpasic/gods v1.18.1
h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
+github.com/emirpasic/gods v1.18.1/go.mod
h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/envoyproxy/go-control-plane v0.6.9/go.mod
h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod
h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane
v0.9.1-0.20191026205805-5f8ba28d4473/go.mod
h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@@ -299,13 +316,21 @@ github.com/gin-contrib/sse v0.1.0
h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE
github.com/gin-contrib/sse v0.1.0/go.mod
h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod
h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
+github.com/gliderlabs/ssh v0.3.8
h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
+github.com/gliderlabs/ssh v0.3.8/go.mod
h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
github.com/go-co-op/gocron v1.9.0
h1:+V+DDenw3ryB7B+tK1bAIC5p0ruw4oX9IqAsdRnGIf0=
github.com/go-co-op/gocron v1.9.0/go.mod
h1:DbJm9kdgr1sEvWpHCA7dFFs/PGHPMil9/97EXCRPr4k=
github.com/go-errors/errors v1.0.1/go.mod
h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
github.com/go-errors/errors v1.4.2
h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod
h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
+github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376
h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
+github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod
h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
github.com/go-git/go-billy/v5 v5.6.2
h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM=
github.com/go-git/go-billy/v5 v5.6.2/go.mod
h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
+github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399
h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
+github.com/go-git/go-git-fixtures/v4
v4.3.2-0.20231010084843-55a94097c399/go.mod
h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
+github.com/go-git/go-git/v5 v5.13.1
h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M=
+github.com/go-git/go-git/v5 v5.13.1/go.mod
h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod
h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod
h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod
h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -383,6 +408,8 @@ github.com/golang/groupcache
v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod
h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
@@ -569,6 +596,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod
h1:vpF70FUmC8bwa3OWnCshd2FqLf
github.com/influxdata/influxdb1-client
v0.0.0-20191209144304-8bf82d3c094d/go.mod
h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/influxdata/tdigest v0.0.1
h1:XpFptwYmnEKUqmkcDjrzffswZ3nvNeevbUSLPP/ZzIY=
github.com/influxdata/tdigest v0.0.1/go.mod
h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y=
+github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99
h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
+github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod
h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jcmturner/aescts/v2 v2.0.0/go.mod
h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod
h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM=
github.com/jcmturner/gofork v1.0.0/go.mod
h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
@@ -620,6 +649,8 @@ github.com/k0kubun/pp v3.0.1+incompatible
h1:3tqvf7QgUnZ5tXO6pNAZlrvHgl6DvifjDrd
github.com/k0kubun/pp v3.0.1+incompatible/go.mod
h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg=
github.com/kelseyhightower/envconfig v1.4.0
h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
github.com/kelseyhightower/envconfig v1.4.0/go.mod
h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
+github.com/kevinburke/ssh_config v1.2.0
h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
+github.com/kevinburke/ssh_config v1.2.0/go.mod
h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
github.com/kisielk/errcheck v1.1.0/go.mod
h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod
h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod
h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
@@ -707,6 +738,8 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod
h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR
github.com/mitchellh/reflectwalk v1.0.0/go.mod
h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.2
h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod
h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
+github.com/moby/sys/symlink v0.3.0
h1:GZX89mEZ9u53f97npBy4Rc3vJKj7JBDj/PN2I22GrNU=
+github.com/moby/sys/symlink v0.3.0/go.mod
h1:3eNdhduHmYPcgsJtZXW1W4XUJdZGBIkttZ8xKqPUJq0=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -794,6 +827,8 @@ github.com/pierrec/lz4
v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod
h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pierrec/lz4 v2.6.1+incompatible
h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM=
github.com/pierrec/lz4 v2.6.1+incompatible/go.mod
h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
+github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
+github.com/pjbgf/sha1cd v0.3.0/go.mod
h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
github.com/pkg/errors v0.8.0/go.mod
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -895,6 +930,8 @@ github.com/sirupsen/logrus v1.7.0/go.mod
h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic
github.com/sirupsen/logrus v1.8.1/go.mod
h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3
h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod
h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/skeema/knownhosts v1.3.0
h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
+github.com/skeema/knownhosts v1.3.0/go.mod
h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
github.com/slok/go-http-metrics v0.11.0
h1:ABJUpekCZSkQT1wQrFvS4kGbhea/w6ndFJaWJeh3zL0=
github.com/slok/go-http-metrics v0.11.0/go.mod
h1:ZGKeYG1ET6TEJpQx18BqAJAvxw9jBAZXCHU7bWQqqAc=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod
h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
@@ -952,8 +989,7 @@ github.com/stretchr/testify v1.8.0/go.mod
h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
github.com/stretchr/testify v1.8.1/go.mod
h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.2/go.mod
h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4/go.mod
h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0
h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod
h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/stretchr/testify v1.10.0
h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod
h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.2.0/go.mod
h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/subosito/gotenv v1.6.0
h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
@@ -989,6 +1025,8 @@ github.com/urfave/cli v1.22.1/go.mod
h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX
github.com/urfave/cli/v2 v2.3.0/go.mod
h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod
h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
+github.com/xanzy/ssh-agent v0.3.3
h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
+github.com/xanzy/ssh-agent v0.3.3/go.mod
h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod
h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
github.com/xdg-go/scram v1.0.2/go.mod
h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
github.com/xdg-go/stringprep v1.0.2/go.mod
h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
@@ -1119,9 +1157,8 @@ golang.org/x/crypto
v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.0/go.mod
h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod
h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
golang.org/x/crypto v0.32.0/go.mod
h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod
h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1214,11 +1251,10 @@ golang.org/x/net
v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211105192438-b53810dc28af/go.mod
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod
h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod
h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -1324,19 +1360,16 @@ golang.org/x/sys
v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
-golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
-golang.org/x/term v0.27.0/go.mod
h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
golang.org/x/term v0.28.0/go.mod
h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod
h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1577,6 +1610,7 @@ gopkg.in/resty.v1 v1.12.0/go.mod
h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/square/go-jose.v2 v2.3.1/go.mod
h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod
h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/warnings.v0 v0.1.2/go.mod
h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod
h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -1600,6 +1634,8 @@ gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod
h1:hbnx/Oo0ChWMn1BIhpy
gorm.io/gorm v1.25.7 h1:VsD6acwRjz2zFxGO50gPO6AkNs7KKnvfzUjHQhZDz/A=
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gotest.tools v2.2.0+incompatible/go.mod
h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
+gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
+gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
helm.sh/helm/v3 v3.12.3 h1:5y1+Sbty12t48T/t/CGNYUIME5BJ0WKfmW/sobYqkFg=
helm.sh/helm/v3 v3.12.3/go.mod h1:KPKQiX9IP5HX7o5YnnhViMnNuKiL/lJBVQ47GHe1R0k=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod
h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=