From a6381320ead08575f6b322a3fddc3e1040cf0b0d Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Mon, 21 Oct 2024 17:40:01 +0200 Subject: [PATCH] Remove git depth to include full git history in package --- Makefile | 2 +- cmd/launchr/main.go | 4 +- compose/builder.go | 7 +-- compose/compose.go | 29 +++-------- compose/downloadManager.go | 2 +- compose/forms.go | 20 ++++---- compose/git.go | 15 +++--- compose/http.go | 35 +++++++------- compose/yaml.go | 18 ++++++- go.mod | 28 ++++------- go.sum | 98 +++++++++++++++++--------------------- compose.go => plugin.go | 20 ++++---- 12 files changed, 128 insertions(+), 150 deletions(-) rename compose.go => plugin.go (91%) diff --git a/Makefile b/Makefile index 88483bc..a2c4fa6 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -export GOSUMDB=off +#export GOSUMDB=off GOPATH?=$(HOME)/go FIRST_GOPATH:=$(firstword $(subst :, ,$(GOPATH))) diff --git a/cmd/launchr/main.go b/cmd/launchr/main.go index 1a74cd2..88d6d2f 100644 --- a/cmd/launchr/main.go +++ b/cmd/launchr/main.go @@ -2,13 +2,11 @@ package main import ( - "os" - "github.com/launchrctl/launchr" _ "github.com/launchrctl/compose" ) func main() { - os.Exit(launchr.Run()) + launchr.RunAndExit() } diff --git a/compose/builder.go b/compose/builder.go index 85beb11..5e91f1c 100644 --- a/compose/builder.go +++ b/compose/builder.go @@ -10,6 +10,7 @@ import ( "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing/object" + "github.com/launchrctl/launchr" "github.com/stevenle/topsort" ) @@ -150,7 +151,7 @@ func getVersionedMap(gitDir string) (map[string]bool, error) { } func (b *Builder) build() error { - fmt.Println("Creating composition...") + launchr.Term().Println("Creating composition...") err := EnsureDirExists(b.targetDir) if err != nil { return err @@ -221,7 +222,7 @@ func (b *Builder) build() error { targetsMap := getTargetsMap(b.packages) if b.logConflicts { - fmt.Print("Conflicting files:\n") + launchr.Term().Info().Printf("Conflicting files:\n") } for i := 0; i < len(items); i++ { @@ -312,7 +313,7 @@ func logConflictResolve(resolveto mergeConflictResolve, path, pkgName string, en return } - fmt.Printf("[%s] - %s > Selected from %s\n", pkgName, path, entry.From) + launchr.Term().Info().Printfln("[%s] - %s > Selected from %s", pkgName, path, entry.From) } func addEntries(entriesTree []*fsEntry, entriesMap map[string]*fsEntry, entry *fsEntry, path string) ([]*fsEntry, mergeConflictResolve) { diff --git a/compose/compose.go b/compose/compose.go index 5d73bdb..6c57293 100644 --- a/compose/compose.go +++ b/compose/compose.go @@ -3,14 +3,11 @@ package compose import ( "errors" - "fmt" - "io/fs" "os" "path/filepath" - "github.com/launchrctl/launchr/pkg/log" - "github.com/launchrctl/keyring" + "github.com/launchrctl/launchr" ) const ( @@ -44,7 +41,7 @@ type ComposerOptions struct { // CreateComposer instance func CreateComposer(pwd string, opts ComposerOptions, k keyring.Keyring) (*Composer, error) { - config, err := composeLookup(os.DirFS(pwd)) + config, err := Lookup(os.DirFS(pwd)) if err != nil { return nil, err } @@ -64,7 +61,7 @@ func (kw *keyringWrapper) getForURL(url string) (keyring.CredentialsItem, error) if errors.Is(errGet, keyring.ErrEmptyPass) { return ci, errGet } else if !errors.Is(errGet, keyring.ErrNotFound) { - log.Debug("%s", errGet) + launchr.Log().Debug(errGet.Error()) return ci, errors.New("the keyring is malformed or wrong passphrase provided") } @@ -92,7 +89,7 @@ func (kw *keyringWrapper) getForURL(url string) (keyring.CredentialsItem, error) func (kw *keyringWrapper) fillCredentials(ci keyring.CredentialsItem) (keyring.CredentialsItem, error) { if ci.URL != "" { - fmt.Printf("Please add login and password for URL - %s\n", ci.URL) + launchr.Term().Printfln("Please add login and password for URL - %s", ci.URL) } err := keyring.RequestCredentialsFromTty(&ci) if err != nil { @@ -131,14 +128,14 @@ func (c *Composer) prepareInstall() (string, string, error) { buildPath := c.getPath(BuildDir) packagesPath := c.getPath(c.options.WorkingDir) - fmt.Printf("Cleaning build dir: %s\n", BuildDir) + launchr.Term().Printfln("Cleaning build dir: %s", BuildDir) err := os.RemoveAll(buildPath) if err != nil { return "", "", err } if c.options.Clean { - fmt.Printf("Cleaning packages dir: %s\n", packagesPath) + launchr.Term().Printfln("Cleaning packages dir: %s", packagesPath) err = os.RemoveAll(packagesPath) if err != nil { return "", "", err @@ -157,20 +154,6 @@ func EnsureDirExists(path string) error { return os.MkdirAll(path, dirPermissions) } -func composeLookup(fsys fs.FS) (*YamlCompose, error) { - f, err := fs.ReadFile(fsys, composeFile) - if err != nil { - return &YamlCompose{}, errComposeNotExists - } - - cfg, err := parseComposeYaml(f) - if err != nil { - return &YamlCompose{}, errComposeBadStructure - } - - return cfg, nil -} - func (c *Composer) getCompose() *YamlCompose { return c.compose } diff --git a/compose/downloadManager.go b/compose/downloadManager.go index 3569073..eea59ae 100644 --- a/compose/downloadManager.go +++ b/compose/downloadManager.go @@ -95,7 +95,7 @@ func (m DownloadManager) recursiveDownload(yc *YamlCompose, kw *keyringWrapper, // If package has plasma-compose.yaml, proceed with it if _, err := os.Stat(filepath.Join(packagePath, composeFile)); !os.IsNotExist(err) { - cfg, err := composeLookup(os.DirFS(packagePath)) + cfg, err := Lookup(os.DirFS(packagePath)) if err == nil { packages, err = m.recursiveDownload(cfg, kw, packages, pkg, targetDir) if err != nil { diff --git a/compose/forms.go b/compose/forms.go index a0b65b3..def51fd 100644 --- a/compose/forms.go +++ b/compose/forms.go @@ -9,7 +9,7 @@ import ( "dario.cat/mergo" "github.com/charmbracelet/huh" - "github.com/launchrctl/launchr/pkg/cli" + "github.com/launchrctl/launchr" ) // RawStrategies represents collection of submitted flags for strategies. @@ -20,7 +20,7 @@ type RawStrategies struct { // AddPackage adds a new package to plasma-compose. func AddPackage(doCreate bool, newDependency *Dependency, rawStrategies *RawStrategies, dir string) error { - config, err := composeLookup(os.DirFS(dir)) + config, err := Lookup(os.DirFS(dir)) if err != nil { if !errors.Is(err, errComposeNotExists) { return err @@ -73,7 +73,7 @@ func AddPackage(doCreate bool, newDependency *Dependency, rawStrategies *RawStra sanitizeDependency(newDependency) config.Dependencies = append(config.Dependencies, *newDependency) - cli.Println("Saving plasma-compose...") + launchr.Term().Println("Saving plasma-compose...") sortPackages(config) err = writeComposeYaml(config) @@ -82,7 +82,7 @@ func AddPackage(doCreate bool, newDependency *Dependency, rawStrategies *RawStra // UpdatePackage updates a single package in plasma-compose. func UpdatePackage(dependency *Dependency, rawStrategies *RawStrategies, dir string) error { - config, err := composeLookup(os.DirFS(dir)) + config, err := Lookup(os.DirFS(dir)) if err != nil { return err } @@ -114,7 +114,7 @@ func UpdatePackage(dependency *Dependency, rawStrategies *RawStrategies, dir str } sanitizeDependency(toUpdate) - cli.Println("Saving plasma-compose...") + launchr.Term().Println("Saving plasma-compose...") sortPackages(config) err = writeComposeYaml(config) @@ -123,7 +123,7 @@ func UpdatePackage(dependency *Dependency, rawStrategies *RawStrategies, dir str // UpdatePackages updates packages in plasma-compose in interactive way. func UpdatePackages(dir string) error { - config, err := composeLookup(os.DirFS(dir)) + config, err := Lookup(os.DirFS(dir)) if err != nil { return err } @@ -178,7 +178,7 @@ func UpdatePackages(dir string) error { } } - cli.Println("Saving plasma-compose...") + launchr.Term().Println("Saving plasma-compose...") var newDeps []Dependency for _, dep := range packagesMap { newDeps = append(newDeps, *dep) @@ -193,7 +193,7 @@ func UpdatePackages(dir string) error { // DeletePackages removes packages plasma-compose. func DeletePackages(packages []string, dir string) error { - config, err := composeLookup(os.DirFS(dir)) + config, err := Lookup(os.DirFS(dir)) if err != nil { return err } @@ -238,12 +238,12 @@ OUTER: } if saveRequired { - cli.Println("Updating plasma-compose...") + launchr.Term().Println("Updating plasma-compose...") config.Dependencies = dependencies sortPackages(config) err = writeComposeYaml(config) } else { - cli.Println("Nothing to update, quiting") + launchr.Term().Println("Nothing to update, quiting") } return err diff --git a/compose/git.go b/compose/git.go index a4374c9..43ff84b 100644 --- a/compose/git.go +++ b/compose/git.go @@ -2,8 +2,6 @@ package compose import ( "errors" - "fmt" - "log" "os" "github.com/go-git/go-git/v5" @@ -11,6 +9,7 @@ import ( "github.com/go-git/go-git/v5/plumbing/transport" "github.com/go-git/go-git/v5/plumbing/transport/http" "github.com/launchrctl/keyring" + "github.com/launchrctl/launchr" ) type gitDownloader struct{} @@ -21,7 +20,7 @@ func newGit() Downloader { // Download implements Downloader.Download interface func (g *gitDownloader) Download(pkg *Package, targetDir string, kw *keyringWrapper) error { - fmt.Println(fmt.Sprintf("git fetch: " + pkg.GetURL())) + launchr.Term().Printfln("git fetch: %s", pkg.GetURL()) url := pkg.GetURL() if url == "" { @@ -29,9 +28,9 @@ func (g *gitDownloader) Download(pkg *Package, targetDir string, kw *keyringWrap } options := &git.CloneOptions{ - URL: url, - Progress: os.Stdout, - Depth: 1, + URL: url, + Progress: os.Stdout, + SingleBranch: true, } if pkg.GetRef() != "" { options.ReferenceName = plumbing.NewBranchReferenceName(pkg.GetRef()) @@ -45,7 +44,7 @@ func (g *gitDownloader) Download(pkg *Package, targetDir string, kw *keyringWrap _, err := git.PlainClone(targetDir, false, options) if err != nil { if errors.Is(err, transport.ErrAuthenticationRequired) { - log.Println("auth required, trying keyring authorisation") + launchr.Term().Println("auth required, trying keyring authorisation") continue } @@ -68,7 +67,7 @@ func (g *gitDownloader) Download(pkg *Package, targetDir string, kw *keyringWrap if err != nil { if errors.Is(err, transport.ErrAuthorizationFailed) || errors.Is(err, transport.ErrAuthenticationRequired) { if kw.interactive { - log.Println("invalid auth, trying manual authorisation") + launchr.Term().Println("invalid auth, trying manual authorisation") continue } } diff --git a/compose/http.go b/compose/http.go index d3add7c..b593dc6 100644 --- a/compose/http.go +++ b/compose/http.go @@ -14,12 +14,11 @@ import ( "strings" "github.com/launchrctl/keyring" - "github.com/launchrctl/launchr/pkg/cli" - "github.com/launchrctl/launchr/pkg/log" + "github.com/launchrctl/launchr" ) var ( - errInvalidaFilepath = errors.New("invalid filepath") + errInvalidFilepath = errors.New("invalid filepath") errNoURL = errors.New("invalid url") errFailedClose = errors.New("failed to close stream") errRepositoryNotFound = errors.New("repository not found") @@ -48,7 +47,7 @@ func (h *httpDownloader) Download(pkg *Package, targetDir string, kw *keyringWra return errNoURL } - fmt.Println(fmt.Sprintf("http download: " + name)) + launchr.Term().Printfln("http download: %s", name) fpath := filepath.Clean(filepath.Join(targetDir, name)) err := os.MkdirAll(targetDir, dirPermissions) @@ -63,7 +62,7 @@ func (h *httpDownloader) Download(pkg *Package, targetDir string, kw *keyringWra defer func() { if err = out.Close(); err != nil { - fmt.Println(errFailedClose.Error()) + launchr.Log().Debug(errFailedClose.Error()) } }() @@ -83,11 +82,11 @@ func (h *httpDownloader) Download(pkg *Package, targetDir string, kw *keyringWra resp, err = doRequest(client, req) if err != nil { if errors.Is(err, errAuthenticationRequired) { - cli.Println("auth required, trying keyring authorisation") + launchr.Term().Println("auth required, trying keyring authorisation") continue } - log.Debug(err.Error()) + launchr.Log().Debug(err.Error()) return errDownloadFailed } } @@ -103,12 +102,12 @@ func (h *httpDownloader) Download(pkg *Package, targetDir string, kw *keyringWra if err != nil { if errors.Is(err, errAuthorizationFailed) { if kw.interactive { - cli.Println("invalid auth, trying manual authorisation") + launchr.Term().Println("invalid auth, trying manual authorisation") continue } } - log.Debug(err.Error()) + launchr.Log().Debug(err.Error()) return errDownloadFailed } } @@ -124,7 +123,7 @@ func (h *httpDownloader) Download(pkg *Package, targetDir string, kw *keyringWra req.SetBasicAuth(ci.Username, ci.Password) resp, err = doRequest(client, req) if err != nil { - log.Debug(err.Error()) + launchr.Log().Debug(err.Error()) return errDownloadFailed } } @@ -134,7 +133,7 @@ func (h *httpDownloader) Download(pkg *Package, targetDir string, kw *keyringWra defer func() { if err = resp.Body.Close(); err != nil { - fmt.Println(errFailedClose.Error()) + launchr.Log().Debug(errFailedClose.Error()) } }() @@ -232,17 +231,17 @@ func untar(fpath, tpath string) (string, error) { // the target location where the dir/file should be created target, err := sanitizeArchivePath(tpath, header.Name) if err != nil { - return rootDir, errInvalidaFilepath + return rootDir, errInvalidFilepath } if !strings.HasPrefix(target, filepath.Clean(tpath)) { - return rootDir, errInvalidaFilepath + return rootDir, errInvalidFilepath } // check the file type switch header.Typeflag { - // if its a dir and it doesn't exist create it + // if it's a dir, and it doesn't exist create it case tar.TypeDir: rootDir = header.Name if _, err := os.Stat(target); err != nil { @@ -253,7 +252,7 @@ func untar(fpath, tpath string) (string, error) { // if it's a file create it case tar.TypeReg: - f, err := os.OpenFile(filepath.Clean(target), os.O_CREATE|os.O_RDWR, os.FileMode(header.Mode)) + f, err := os.OpenFile(filepath.Clean(target), os.O_CREATE|os.O_RDWR, header.FileInfo().Mode()) if err != nil { return rootDir, err } @@ -291,18 +290,18 @@ func unzip(fpath, tpath string) (string, error) { for _, f := range archive.File { filePath, err := sanitizeArchivePath(tpath, f.Name) if err != nil || !strings.HasPrefix(filePath, filepath.Clean(tpath)+string(os.PathSeparator)) { - return rootDir, errInvalidaFilepath + return rootDir, errInvalidFilepath } if f.FileInfo().IsDir() { rootDir = f.Name - err = os.MkdirAll(filePath, os.ModePerm) + err = os.MkdirAll(filePath, os.ModePerm) //nolint if err != nil { return rootDir, err } continue } - if err = os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil { + if err = os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil { //nolint return rootDir, err } diff --git a/compose/yaml.go b/compose/yaml.go index db7aa71..d02531f 100644 --- a/compose/yaml.go +++ b/compose/yaml.go @@ -2,6 +2,7 @@ package compose import ( "fmt" + "io/fs" "os" "strings" @@ -9,7 +10,7 @@ import ( ) var ( - composePermissions = 0644 + composePermissions uint32 = 0644 ) // YamlCompose stores compose definition @@ -107,6 +108,21 @@ func (p *Package) GetTarget() string { return target } +// Lookup allows to search compose file, read and parse it. +func Lookup(fsys fs.FS) (*YamlCompose, error) { + f, err := fs.ReadFile(fsys, composeFile) + if err != nil { + return &YamlCompose{}, errComposeNotExists + } + + cfg, err := parseComposeYaml(f) + if err != nil { + return &YamlCompose{}, errComposeBadStructure + } + + return cfg, nil +} + func parseComposeYaml(input []byte) (*YamlCompose, error) { cfg := YamlCompose{} err := yaml.Unmarshal(input, &cfg) diff --git a/go.mod b/go.mod index c9a808f..4fcb47d 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module github.com/launchrctl/compose -go 1.23.1 +go 1.23.2 require ( dario.cat/mergo v1.0.1 github.com/charmbracelet/huh v0.6.0 github.com/go-git/go-git/v5 v5.12.0 - github.com/launchrctl/keyring v0.2.4 - github.com/launchrctl/launchr v0.16.0 + github.com/launchrctl/keyring v0.2.5 + github.com/launchrctl/launchr v0.16.2 github.com/spf13/cobra v1.8.1 github.com/stevenle/topsort v0.2.0 gopkg.in/yaml.v3 v3.0.1 @@ -21,11 +21,9 @@ require ( github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect - github.com/a8m/envsubst v1.4.2 // indirect github.com/atotto/clipboard v0.1.4 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/catppuccin/go v0.2.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/charmbracelet/bubbles v0.20.0 // indirect github.com/charmbracelet/bubbletea v1.1.1 // indirect github.com/charmbracelet/lipgloss v0.13.0 // indirect @@ -50,12 +48,12 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/gookit/color v1.5.4 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.17.10 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/knadh/koanf v1.5.0 // indirect github.com/lithammer/fuzzysearch v1.1.8 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect @@ -67,7 +65,6 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/moby v27.3.1+incompatible // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/signal v0.7.1 // indirect @@ -93,12 +90,9 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect - go.opentelemetry.io/otel v1.30.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect - go.opentelemetry.io/otel/metric v1.30.0 // indirect - go.opentelemetry.io/otel/sdk v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.30.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.opentelemetry.io/otel v1.31.0 // indirect + go.opentelemetry.io/otel/metric v1.31.0 // indirect + go.opentelemetry.io/otel/trace v1.31.0 // indirect go.uber.org/mock v0.4.0 // indirect golang.org/x/crypto v0.28.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect @@ -108,9 +102,7 @@ require ( golang.org/x/sys v0.26.0 // indirect golang.org/x/term v0.25.0 // indirect golang.org/x/text v0.19.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect - google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index b9efe83..a0ca83d 100644 --- a/go.sum +++ b/go.sum @@ -14,8 +14,8 @@ dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/age v1.2.0 h1:vRDp7pUMaAJzXNIWJVAZnEf/Dyi4Vu4wI8S1LBzufhE= filippo.io/age v1.2.0/go.mod h1:JL9ew2lTN+Pyft4RiNGguFfOpewKwSHm5ayKD/A4004= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -35,8 +35,6 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/a8m/envsubst v1.4.2 h1:4yWIHXOLEJHQEFd4UjrWDrYeYlV7ncFWJOCBRLOZHQg= -github.com/a8m/envsubst v1.4.2/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -73,8 +71,8 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/catppuccin/go v0.2.0 h1:ktBeIrIP42b/8FGiScP9sgrWOss3lw0Z5SktRoithGA= github.com/catppuccin/go v0.2.0/go.mod h1:8IHJuMGaUUjQM82qBrGNBv7LFq6JI3NnQCF6MOlZjpc= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbles v0.20.0 h1:jSZu6qD8cRQ6k9OMfR1WlM+ruM8fkPWkHvQWD9LIutE= @@ -105,8 +103,8 @@ github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3 github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0= -github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= +github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.3.4 h1:VBWugsJh2ZxJmLFSM06/0qzQyiQX2Qs0ViKrUAcqdZ8= github.com/cyphar/filepath-securejoin v0.3.4/go.mod h1:8s/MCNJREmFK0H02MF6Ihv1nakJe4L/w3WZLHNkvlYM= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -139,9 +137,8 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= @@ -189,8 +186,6 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -206,15 +201,16 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -269,8 +265,8 @@ github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4 github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0= -github.com/klauspost/compress v1.17.10/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= @@ -289,10 +285,10 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/launchrctl/keyring v0.2.4 h1:RLzmc5FCIFlWKldDrMnD3iSwEOykCunAkQp+8bubeok= -github.com/launchrctl/keyring v0.2.4/go.mod h1:/jdzj6fbw/idyd0AsragVSri4I0BUhT5596mU5rQ8OI= -github.com/launchrctl/launchr v0.16.0 h1:IVOkyndNrXwAO7IbrnDvQhTR2hCgq16KHCERkAUo2MY= -github.com/launchrctl/launchr v0.16.0/go.mod h1:NWhcqR4HdwzeHfGUdf+879rfMoX2UKvi8yOLD55NCck= +github.com/launchrctl/keyring v0.2.5 h1:NbGquLfWNwydL0+oHV2ltUj9Dj+W+2v5PeqFBHaIEKY= +github.com/launchrctl/keyring v0.2.5/go.mod h1:uBHC4ekh6hJikEA8YGlY1LDCi3iF3RBCvty0E4oZebA= +github.com/launchrctl/launchr v0.16.2 h1:5eyB1jVs2fjJg/iGaP3DF6/gjiWp8tBfEJMGugxoK2E= +github.com/launchrctl/launchr v0.16.2/go.mod h1:EHcl8EVllzMRwJ1kHJz0OYA11GEKMLLrSCzCHqBenkE= github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8LFgLN4= github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= @@ -335,8 +331,6 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/moby v27.3.1+incompatible h1:KQbXBjo7PavKpzIl7UkHT31y9lw/e71Uvrqhr4X+zMA= -github.com/moby/moby v27.3.1+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= @@ -377,9 +371,8 @@ github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pierrec/lz4 v2.0.5+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= @@ -420,8 +413,8 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -470,20 +463,20 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3 go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 h1:ZIg3ZT/aQ7AfKqdwp7ECpOK6vHqquXXuyTjIO8ZdmPs= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0/go.mod h1:DQAwmETtZV00skUwgD6+0U89g80NKsJE3DCKeLLPQMI= -go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= -go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= -go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= -go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= -go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= +go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= +go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= +go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= +go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= +go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= +go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= @@ -623,9 +616,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -651,10 +643,10 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 h1:QCqS/PdaHTSWGvupk2F/ehwHtGc0/GYkT+3GAcR1CCc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= @@ -663,8 +655,8 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -676,8 +668,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -699,8 +691,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/compose.go b/plugin.go similarity index 91% rename from compose.go rename to plugin.go index afa768f..9d05dd3 100644 --- a/compose.go +++ b/plugin.go @@ -7,8 +7,6 @@ import ( "os" "path/filepath" - "github.com/launchrctl/launchr/pkg/cli" - "github.com/launchrctl/keyring" "github.com/launchrctl/launchr" "github.com/launchrctl/launchr/pkg/action" @@ -21,18 +19,18 @@ func init() { launchr.RegisterPlugin(&Plugin{}) } -// Plugin implements launchr.Plugin to provide compose functionality. +// Plugin is [launchr.Plugin] plugin providing compose. type Plugin struct { wd string k keyring.Keyring } -// PluginInfo implements launchr.Plugin interface. +// PluginInfo implements [launchr.Plugin] interface. func (p *Plugin) PluginInfo() launchr.PluginInfo { return launchr.PluginInfo{Weight: 10} } -// OnAppInit implements launchr.Plugin interface. +// OnAppInit implements [launchr.Plugin] interface. func (p *Plugin) OnAppInit(app launchr.App) error { app.GetService(&p.k) p.wd = app.GetWD() @@ -52,7 +50,7 @@ func (p *Plugin) CobraAddCommands(rootCmd *cobra.Command) error { var composeCmd = &cobra.Command{ Use: "compose", Short: "Composes filesystem (files & dirs)", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { // Don't show usage help on a runtime error. cmd.SilenceUsage = true @@ -90,7 +88,7 @@ func (p *Plugin) CobraAddCommands(rootCmd *cobra.Command) error { PreRunE: func(cmd *cobra.Command, args []string) error { return packagePreRunValidate(cmd, args) }, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { // Don't show usage help on a runtime error. cmd.SilenceUsage = true @@ -104,7 +102,7 @@ func (p *Plugin) CobraAddCommands(rootCmd *cobra.Command) error { PreRunE: func(cmd *cobra.Command, args []string) error { return packagePreRunValidate(cmd, args) }, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { // Don't show usage help on a runtime error. cmd.SilenceUsage = true @@ -120,7 +118,7 @@ func (p *Plugin) CobraAddCommands(rootCmd *cobra.Command) error { var deleteCmd = &cobra.Command{ Use: "compose:delete", Short: "Remove a package from plasma-compose", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { // Don't show usage help on a runtime error. cmd.SilenceUsage = true @@ -167,11 +165,11 @@ func packagePreRunValidate(cmd *cobra.Command, _ []string) error { if typeFlag == compose.HTTPType { if tagChanged { - cli.Println("Tag can't be used with HTTP source") + launchr.Term().Warning().Println("Tag can't be used with HTTP source") err = cmd.Flags().Set("tag", "") } if refChanged { - cli.Println("Ref can't be used with HTTP source") + launchr.Term().Warning().Println("Ref can't be used with HTTP source") err = cmd.Flags().Set("ref", "") } }