mirror of
https://github.com/foomo/posh-providers.git
synced 2025-10-16 12:35:41 +00:00
Merge pull request #217 from foomo/feature/squadron-bake
feat(foomo/squadron): add squadron bake
This commit is contained in:
commit
c4ab4bf3ff
@ -192,6 +192,10 @@ linters:
|
||||
disabled: true
|
||||
- name: unchecked-type-assertion
|
||||
disabled: true
|
||||
- name: var-naming
|
||||
disabled: true
|
||||
- name: enforce-switch-style
|
||||
disabled: true
|
||||
testifylint:
|
||||
disable:
|
||||
- float-compare
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
hooks:
|
||||
pre-commit:
|
||||
- golangci-lint run --fast
|
||||
- golangci-lint run --fast-only
|
||||
- husky lint-staged
|
||||
commit-msg:
|
||||
# only execute if not in a merge
|
||||
|
||||
@ -182,7 +182,7 @@ func (c *Command) edit(ctx context.Context, r *readline.Readline) error {
|
||||
if value := os.Getenv("EDITOR"); value != "" {
|
||||
d = value
|
||||
}
|
||||
editor := exec.Command(d, filename)
|
||||
editor := exec.CommandContext(ctx, d, filename)
|
||||
editor.Stdin = os.Stdin
|
||||
editor.Stdout = os.Stdout
|
||||
editor.Stderr = os.Stderr
|
||||
|
||||
@ -31,6 +31,7 @@ type (
|
||||
l log.Logger
|
||||
op *onepassword.OnePassword
|
||||
name string
|
||||
bake bool
|
||||
slack *slack.Slack
|
||||
slackWebhookID string
|
||||
slackChannelID string
|
||||
@ -66,6 +67,12 @@ func CommandWithName(v string) CommandOption {
|
||||
}
|
||||
}
|
||||
|
||||
func CommandWithBake(v bool) CommandOption {
|
||||
return func(o *Command) {
|
||||
o.bake = v
|
||||
}
|
||||
}
|
||||
|
||||
func CommandWithSlackChannelID(v string) CommandOption {
|
||||
return func(o *Command) {
|
||||
o.slackChannelID = v
|
||||
@ -154,6 +161,207 @@ func NewCommand(l log.Logger, squadron *Squadron, kubectl *kubectl.Kubectl, op *
|
||||
return suggests.List(ret)
|
||||
}
|
||||
|
||||
squadronCmds := tree.Nodes{
|
||||
{
|
||||
Name: "config",
|
||||
Description: "View generated squadron config",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("no-render", false, "don't render the config template")
|
||||
fs.Default().Bool("raw", false, "print raw output without highlighting")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "diff",
|
||||
Description: "Shows the diff between the installed and local chart",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
fs.Default().Bool("raw", false, "print raw output without highlighting")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "down",
|
||||
Description: "Uninstalls the squadron chart",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
slackFlag(fs)
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "list",
|
||||
Description: "List squadron units",
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("with-tags", false, "include tags")
|
||||
fs.Default().Bool("with-charts", false, "include charts")
|
||||
fs.Default().Bool("with-priority", false, "include priorities")
|
||||
fs.Default().Bool("with-builds", false, "include builds")
|
||||
fs.Default().Bool("with-bakes", false, "include bakes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "schema",
|
||||
Description: "Generate json schema",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("raw", false, "print raw output without highlighting")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
fs.Default().String("output", "", "output json file")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "push",
|
||||
Description: "Push squadron units",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
// build args
|
||||
fs.Internal().Bool("build", false, "build image")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
fs.Internal().StringSlice("push-args", nil, "additional docker push args")
|
||||
fs.Internal().StringSlice("build-args", nil, "additional docker buildx build args")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "rollback",
|
||||
Description: "Roll back the squadron chart",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
slackFlag(fs)
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("revision", "", "revision number to rollback to")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "status",
|
||||
Description: "Display the status of the units",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "template",
|
||||
Description: "Render chart templates locally and display the output",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("raw", false, "print raw output without highlighting")
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "up",
|
||||
Description: "Installs a squadron chart",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
slackFlag(fs)
|
||||
commonFlags(fs)
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
fs.Default().Bool("push", false, "push image")
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
// internal
|
||||
fs.Internal().Bool("build", false, "build image")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
fs.Internal().StringSlice("push-args", nil, "additional docker push args")
|
||||
fs.Internal().StringSlice("build-args", nil, "additional docker buildx build args")
|
||||
fs.Internal().Bool("create-namespace", false, "create namespace if not exist")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
}
|
||||
|
||||
if inst.bake {
|
||||
squadronCmds = append(squadronCmds, &tree.Node{
|
||||
Name: "build",
|
||||
Description: "Bake or rebake squadron units",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("push", false, "push image")
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
// bake args
|
||||
fs.Internal().StringSlice("push-args", nil, "additional docker push args")
|
||||
fs.Internal().StringSlice("build-args", nil, "additional docker buildx bake args")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
})
|
||||
} else {
|
||||
squadronCmds = append(squadronCmds, &tree.Node{
|
||||
Name: "build",
|
||||
Description: "Build or rebuild squadron units",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("push", false, "push image")
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
// build args
|
||||
fs.Internal().StringSlice("push-args", nil, "additional docker push args")
|
||||
fs.Internal().StringSlice("build-args", nil, "additional docker buildx build args")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
})
|
||||
}
|
||||
|
||||
inst.commandTree = tree.New(&tree.Node{
|
||||
Name: inst.name,
|
||||
Description: "Manage your squadron",
|
||||
@ -182,184 +390,7 @@ func NewCommand(l log.Logger, squadron *Squadron, kubectl *kubectl.Kubectl, op *
|
||||
return suggests.List(append(value, All))
|
||||
}
|
||||
},
|
||||
Nodes: tree.Nodes{
|
||||
{
|
||||
Name: "build",
|
||||
Description: "Build or rebuild squadron units",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("push", false, "push image")
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
// build args
|
||||
fs.Internal().StringSlice("push-args", nil, "additional docker push args")
|
||||
fs.Internal().StringSlice("build-args", nil, "additional docker buildx build args")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "config",
|
||||
Description: "View generated squadron config",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("no-render", false, "don't render the config template")
|
||||
fs.Default().Bool("raw", false, "print raw output without highlighting")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "diff",
|
||||
Description: "Shows the diff between the installed and local chart",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
fs.Default().Bool("raw", false, "print raw output without highlighting")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "down",
|
||||
Description: "Uninstalls the squadron chart",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
slackFlag(fs)
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "list",
|
||||
Description: "List squadron units",
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("with-tags", false, "include tags")
|
||||
fs.Default().Bool("with-charts", false, "include charts")
|
||||
fs.Default().Bool("with-priority", false, "include priorities")
|
||||
fs.Default().Bool("with-builds", false, "include builds")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "schema",
|
||||
Description: "Generate json schema",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("raw", false, "print raw output without highlighting")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
fs.Default().String("output", "", "output json file")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "push",
|
||||
Description: "Push squadron units",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("build", false, "build image")
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
// build args
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
fs.Internal().StringSlice("push-args", nil, "additional docker push args")
|
||||
fs.Internal().StringSlice("build-args", nil, "additional docker buildx build args")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "rollback",
|
||||
Description: "Roll back the squadron chart",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
slackFlag(fs)
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("revision", "", "revision number to rollback to")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "status",
|
||||
Description: "Display the status of the units",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "template",
|
||||
Description: "Render chart templates locally and display the output",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
commonFlags(fs)
|
||||
fs.Default().Bool("raw", false, "print raw output without highlighting")
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
{
|
||||
Name: "up",
|
||||
Description: "Installs a squadron chart",
|
||||
Args: tree.Args{unitsArg},
|
||||
Flags: func(ctx context.Context, r *readline.Readline, fs *readline.FlagSets) error {
|
||||
slackFlag(fs)
|
||||
commonFlags(fs)
|
||||
if err := profileFlag(ctx, r, fs); err != nil {
|
||||
return err
|
||||
}
|
||||
fs.Default().Bool("push", false, "push image")
|
||||
fs.Default().Bool("build", false, "build image")
|
||||
fs.Default().Int64("parallel", 1, "number of parallel processes")
|
||||
fs.Default().String("tags", "", "list of tags to include or exclude")
|
||||
// internal
|
||||
fs.Internal().String("tag", "", "image tag")
|
||||
fs.Internal().StringSlice("push-args", nil, "additional docker push args")
|
||||
fs.Internal().StringSlice("build-args", nil, "additional docker buildx build args")
|
||||
fs.Internal().Bool("create-namespace", false, "create namespace if not exist")
|
||||
return nil
|
||||
},
|
||||
Execute: inst.execute,
|
||||
},
|
||||
},
|
||||
Nodes: squadronCmds,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -416,11 +447,16 @@ func (c *Command) execute(ctx context.Context, r *readline.Readline) error {
|
||||
noOverride := log.MustGet(ifs.GetBool("no-override"))(c.l)
|
||||
|
||||
pushArgs, _ := ifs.GetStringSlice("push-args")
|
||||
withBuild, _ := ifs.GetBool("build")
|
||||
buildArgs, _ := ifs.GetStringSlice("build-args")
|
||||
|
||||
// try retrieve profile
|
||||
profile, _ := ifs.GetString("profile")
|
||||
|
||||
if cmd == "build" && c.bake {
|
||||
cmd = "bake"
|
||||
}
|
||||
|
||||
{ // handle 1password
|
||||
if c.op != nil {
|
||||
if ok, _ := c.op.IsAuthenticated(ctx); !ok {
|
||||
@ -481,8 +517,20 @@ func (c *Command) execute(ctx context.Context, r *readline.Readline) error {
|
||||
flags = append(flags, "--push-args", strconv.Quote(arg))
|
||||
}
|
||||
|
||||
if withBuild {
|
||||
if c.bake {
|
||||
flags = append(flags, "--bake")
|
||||
} else {
|
||||
flags = append(flags, "--build")
|
||||
}
|
||||
}
|
||||
|
||||
for _, arg := range buildArgs {
|
||||
flags = append(flags, "--build-args", strconv.Quote(arg))
|
||||
if c.bake {
|
||||
flags = append(flags, "--bake-args", strconv.Quote(arg))
|
||||
} else {
|
||||
flags = append(flags, "--build-args", strconv.Quote(arg))
|
||||
}
|
||||
}
|
||||
|
||||
if r.AdditionalArgs().Len() > 1 {
|
||||
|
||||
47
go.mod
47
go.mod
@ -11,32 +11,32 @@ require (
|
||||
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d
|
||||
github.com/c-bata/go-prompt v0.2.6
|
||||
github.com/cloudrecipes/packagejson v1.0.0
|
||||
github.com/digitalocean/godo v1.150.0
|
||||
github.com/digitalocean/godo v1.161.0
|
||||
github.com/foomo/go v0.0.3
|
||||
github.com/foomo/gokazi v0.1.5
|
||||
github.com/foomo/posh v0.12.0
|
||||
github.com/foomo/posh v0.13.0
|
||||
github.com/goccy/go-json v0.10.5
|
||||
github.com/golang-migrate/migrate/v4 v4.18.3
|
||||
github.com/google/go-github/v47 v47.1.0
|
||||
github.com/invopop/jsonschema v0.13.0
|
||||
github.com/joho/godotenv v1.5.1
|
||||
github.com/knadh/koanf/parsers/yaml v1.0.0
|
||||
github.com/knadh/koanf/parsers/yaml v1.1.0
|
||||
github.com/knadh/koanf/providers/file v1.2.0
|
||||
github.com/knadh/koanf/v2 v2.2.0
|
||||
github.com/knadh/koanf/v2 v2.2.2
|
||||
github.com/mitchellh/mapstructure v1.5.0
|
||||
github.com/muesli/go-app-paths v0.2.2
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/pterm/pterm v0.12.80
|
||||
github.com/samber/lo v1.50.0
|
||||
github.com/pterm/pterm v0.12.81
|
||||
github.com/samber/lo v1.51.0
|
||||
github.com/shirou/gopsutil/v3 v3.24.5
|
||||
github.com/slack-go/slack v0.17.0
|
||||
github.com/slack-go/slack v0.17.3
|
||||
github.com/spf13/viper v1.20.1
|
||||
github.com/stretchr/testify v1.10.0
|
||||
go.uber.org/zap v1.27.0
|
||||
golang.org/x/oauth2 v0.30.0
|
||||
golang.org/x/sync v0.14.0
|
||||
golang.org/x/sync v0.16.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979
|
||||
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
|
||||
)
|
||||
|
||||
require (
|
||||
@ -46,21 +46,21 @@ require (
|
||||
github.com/alecthomas/chroma v0.10.0 // indirect
|
||||
github.com/bahlo/generic-list-go v0.2.0 // indirect
|
||||
github.com/buger/jsonparser v1.1.1 // indirect
|
||||
github.com/charlievieth/fastwalk v1.0.10 // indirect
|
||||
github.com/charlievieth/fastwalk v1.0.12 // indirect
|
||||
github.com/containerd/console v1.0.5 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/dlclark/regexp2 v1.11.5 // indirect
|
||||
github.com/ebitengine/purego v0.8.3 // indirect
|
||||
github.com/ebitengine/purego v0.8.4 // indirect
|
||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
|
||||
github.com/google/go-querystring v1.1.0 // indirect
|
||||
github.com/gookit/color v1.5.4 // indirect
|
||||
github.com/gorilla/websocket v1.5.3 // indirect
|
||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
|
||||
github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
|
||||
github.com/knadh/koanf/maps v0.1.2 // indirect
|
||||
github.com/lithammer/fuzzysearch v1.1.8 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect
|
||||
@ -80,13 +80,13 @@ require (
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
|
||||
github.com/rivo/uniseg v0.4.7 // indirect
|
||||
github.com/rogpeppe/go-internal v1.14.1 // indirect
|
||||
github.com/sagikazarmark/locafero v0.9.0 // indirect
|
||||
github.com/shirou/gopsutil/v4 v4.25.4 // indirect
|
||||
github.com/sagikazarmark/locafero v0.10.0 // indirect
|
||||
github.com/shirou/gopsutil/v4 v4.25.7 // indirect
|
||||
github.com/shoenig/go-m1cpu v0.1.6 // indirect
|
||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
|
||||
github.com/spf13/afero v1.14.0 // indirect
|
||||
github.com/spf13/cast v1.8.0 // indirect
|
||||
github.com/spf13/pflag v1.0.6 // indirect
|
||||
github.com/spf13/cast v1.9.2 // indirect
|
||||
github.com/spf13/pflag v1.0.7 // indirect
|
||||
github.com/subosito/gotenv v1.6.0 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.15 // indirect
|
||||
github.com/tklauser/numcpus v0.10.0 // indirect
|
||||
@ -97,10 +97,11 @@ require (
|
||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||
go.uber.org/atomic v1.11.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
golang.org/x/crypto v0.38.0 // indirect
|
||||
golang.org/x/sys v0.33.0 // indirect
|
||||
golang.org/x/term v0.32.0 // indirect
|
||||
golang.org/x/text v0.25.0 // indirect
|
||||
golang.org/x/time v0.11.0 // indirect
|
||||
go.yaml.in/yaml/v3 v3.0.4 // indirect
|
||||
golang.org/x/crypto v0.40.0 // indirect
|
||||
golang.org/x/sys v0.34.0 // indirect
|
||||
golang.org/x/term v0.33.0 // indirect
|
||||
golang.org/x/text v0.27.0 // indirect
|
||||
golang.org/x/time v0.12.0 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||
)
|
||||
|
||||
102
go.sum
102
go.sum
@ -28,8 +28,8 @@ github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPn
|
||||
github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
|
||||
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
|
||||
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
|
||||
github.com/charlievieth/fastwalk v1.0.10 h1:0qUbvA2O+K+X+IrTfZTC0UH2DK5MOA+KjVfStAHUnGg=
|
||||
github.com/charlievieth/fastwalk v1.0.10/go.mod h1:yGy1zbxog41ZVMcKA/i8ojXLFsuayX5VvwhQVoj9PBI=
|
||||
github.com/charlievieth/fastwalk v1.0.12 h1:pwfxe1LajixViQqo7EFLXU2+mQxb6OaO0CeNdVwRKTg=
|
||||
github.com/charlievieth/fastwalk v1.0.12/go.mod h1:yGy1zbxog41ZVMcKA/i8ojXLFsuayX5VvwhQVoj9PBI=
|
||||
github.com/cloudrecipes/packagejson v1.0.0 h1:f6InIxXWQ9/u1XNk7pX2BeUIw7IOYZS5B26o685XbZk=
|
||||
github.com/cloudrecipes/packagejson v1.0.0/go.mod h1:ZENm9DGj5m+2WMImPunZuW3Qn2Ljw/0kHOP4BcWhrrA=
|
||||
github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
|
||||
@ -39,21 +39,21 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/digitalocean/godo v1.150.0 h1:nCWjjMixyFDmS6NrY0TajtP8bzYVk0+7tqcHk9MkanM=
|
||||
github.com/digitalocean/godo v1.150.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM=
|
||||
github.com/digitalocean/godo v1.161.0 h1:Q/3ImcotZp0GV9FY/dnLj9TmfOd+a7ZN/UNuhgDHI/Q=
|
||||
github.com/digitalocean/godo v1.161.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM=
|
||||
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
|
||||
github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
|
||||
github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/ebitengine/purego v0.8.3 h1:K+0AjQp63JEZTEMZiwsI9g0+hAMNohwUOtY0RPGexmc=
|
||||
github.com/ebitengine/purego v0.8.3/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||
github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw=
|
||||
github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
|
||||
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
||||
github.com/foomo/go v0.0.3 h1:5pGzcPC78dImuBTT7nsZZnH+GIQUylbCtMkFEH26uZk=
|
||||
github.com/foomo/go v0.0.3/go.mod h1:x6g64wiQusqaFElnh5rlk9unCgLKmfUWy0YFLejJxio=
|
||||
github.com/foomo/gokazi v0.1.5 h1:cqEB3o7TM3IzLkXgVtIx97V46zhOY2iL9HPfBgfKS/4=
|
||||
github.com/foomo/gokazi v0.1.5/go.mod h1:2aLwoCPC2ecwtqU/67qGWoYn7UcZwgCbSdrimVbF7Zc=
|
||||
github.com/foomo/posh v0.12.0 h1:A0rWQv33ZxUBI5uTbfgLnHtdRKzu8o7NN/nQI2QKsVg=
|
||||
github.com/foomo/posh v0.12.0/go.mod h1:h6Pq7wiEAU1+arsWp5v6VZWNzVEvmXI2MkkYKbFi6gE=
|
||||
github.com/foomo/posh v0.13.0 h1:1KCnsrM3byb5tcjHuImKPg/vAVEYJmtKgrwWMwV1zrw=
|
||||
github.com/foomo/posh v0.13.0/go.mod h1:BZsBvewZc9qHa/9Ukwyru375DR8ZvidHzi+24Qa31Mo=
|
||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||
github.com/franklinkim/go-prompt v0.2.7-0.20210427061716-a8f4995d7aa5 h1:kXNtle4AoQnngdm+gwt4ku6Llbzw3EFHgZYpL618JaI=
|
||||
@ -65,8 +65,8 @@ github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||
github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=
|
||||
github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
|
||||
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
|
||||
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||
github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
|
||||
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
|
||||
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||
github.com/golang-migrate/migrate/v4 v4.18.3 h1:EYGkoOsvgHHfm5U/naS1RP/6PL/Xv3S4B/swMiAmDLs=
|
||||
@ -95,8 +95,8 @@ github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB1
|
||||
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
|
||||
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
||||
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
||||
github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
|
||||
github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
|
||||
github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48=
|
||||
github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=
|
||||
github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E=
|
||||
github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0=
|
||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||
@ -108,12 +108,12 @@ github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y7
|
||||
github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
|
||||
github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo=
|
||||
github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI=
|
||||
github.com/knadh/koanf/parsers/yaml v1.0.0 h1:PXyeHCRhAMKyfLJaoTWsqUTxIFeDMmdAKz3XVEslZV4=
|
||||
github.com/knadh/koanf/parsers/yaml v1.0.0/go.mod h1:Q63VAOh/s6XaQs6a0TB2w9GFUuuPGvfYrCSWb9eWAQU=
|
||||
github.com/knadh/koanf/parsers/yaml v1.1.0 h1:3ltfm9ljprAHt4jxgeYLlFPmUaunuCgu1yILuTXRdM4=
|
||||
github.com/knadh/koanf/parsers/yaml v1.1.0/go.mod h1:HHmcHXUrp9cOPcuC+2wrr44GTUB0EC+PyfN3HZD9tFg=
|
||||
github.com/knadh/koanf/providers/file v1.2.0 h1:hrUJ6Y9YOA49aNu/RSYzOTFlqzXSCpmYIDXI7OJU6+U=
|
||||
github.com/knadh/koanf/providers/file v1.2.0/go.mod h1:bp1PM5f83Q+TOUu10J/0ApLBd9uIzg+n9UgthfY+nRA=
|
||||
github.com/knadh/koanf/v2 v2.2.0 h1:FZFwd9bUjpb8DyCWARUBy5ovuhDs1lI87dOEn2K8UVU=
|
||||
github.com/knadh/koanf/v2 v2.2.0/go.mod h1:PSFru3ufQgTsI7IF+95rf9s8XA1+aHxKuO/W+dPoHEY=
|
||||
github.com/knadh/koanf/v2 v2.2.2 h1:ghbduIkpFui3L587wavneC9e3WIliCgiCgdxYO/wd7A=
|
||||
github.com/knadh/koanf/v2 v2.2.2/go.mod h1:abWQc0cBXLSF/PSOMCB/SK+T13NXDsPvOksbpi5e/9Q=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||
@ -177,38 +177,38 @@ github.com/pterm/pterm v0.12.31/go.mod h1:32ZAWZVXD7ZfG0s8qqHXePte42kdz8ECtRyEej
|
||||
github.com/pterm/pterm v0.12.33/go.mod h1:x+h2uL+n7CP/rel9+bImHD5lF3nM9vJj80k9ybiiTTE=
|
||||
github.com/pterm/pterm v0.12.36/go.mod h1:NjiL09hFhT/vWjQHSj1athJpx6H8cjpHXNAK5bUw8T8=
|
||||
github.com/pterm/pterm v0.12.40/go.mod h1:ffwPLwlbXxP+rxT0GsgDTzS3y3rmpAO1NMjUkGTYf8s=
|
||||
github.com/pterm/pterm v0.12.80 h1:mM55B+GnKUnLMUSqhdINe4s6tOuVQIetQ3my8JGyAIg=
|
||||
github.com/pterm/pterm v0.12.80/go.mod h1:c6DeF9bSnOSeFPZlfs4ZRAFcf5SCoTwvwQ5xaKGQlHo=
|
||||
github.com/pterm/pterm v0.12.81 h1:ju+j5I2++FO1jBKMmscgh5h5DPFDFMB7epEjSoKehKA=
|
||||
github.com/pterm/pterm v0.12.81/go.mod h1:TyuyrPjnxfwP+ccJdBTeWHtd/e0ybQHkOS/TakajZCw=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
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/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
||||
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
||||
github.com/sagikazarmark/locafero v0.9.0 h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFTqyMTC9k=
|
||||
github.com/sagikazarmark/locafero v0.9.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk=
|
||||
github.com/samber/lo v1.50.0 h1:XrG0xOeHs+4FQ8gJR97zDz5uOFMW7OwFWiFVzqopKgY=
|
||||
github.com/samber/lo v1.50.0/go.mod h1:RjZyNk6WSnUFRKK6EyOhsRJMqft3G+pg7dCWHQCWvsc=
|
||||
github.com/sagikazarmark/locafero v0.10.0 h1:FM8Cv6j2KqIhM2ZK7HZjm4mpj9NBktLgowT1aN9q5Cc=
|
||||
github.com/sagikazarmark/locafero v0.10.0/go.mod h1:Ieo3EUsjifvQu4NZwV5sPd4dwvu0OCgEQV7vjc9yDjw=
|
||||
github.com/samber/lo v1.51.0 h1:kysRYLbHy/MB7kQZf5DSN50JHmMsNEdeY24VzJFu7wI=
|
||||
github.com/samber/lo v1.51.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=
|
||||
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||
github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
|
||||
github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||
github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
|
||||
github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk=
|
||||
github.com/shirou/gopsutil/v4 v4.25.4 h1:cdtFO363VEOOFrUCjZRh4XVJkb548lyF0q0uTeMqYPw=
|
||||
github.com/shirou/gopsutil/v4 v4.25.4/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA=
|
||||
github.com/shirou/gopsutil/v4 v4.25.7 h1:bNb2JuqKuAu3tRlPv5piSmBZyMfecwQ+t/ILq+1JqVM=
|
||||
github.com/shirou/gopsutil/v4 v4.25.7/go.mod h1:XV/egmwJtd3ZQjBpJVY5kndsiOO4IRqy9TQnmm6VP7U=
|
||||
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
|
||||
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
|
||||
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
|
||||
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
|
||||
github.com/slack-go/slack v0.17.0 h1:Vqd4GGIcwwgEu80GBs3cXoPPho5bkDGSFnuZbSG0NhA=
|
||||
github.com/slack-go/slack v0.17.0/go.mod h1:X+UqOufi3LYQHDnMG1vxf0J8asC6+WllXrVrhl8/Prk=
|
||||
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
||||
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
|
||||
github.com/slack-go/slack v0.17.3 h1:zV5qO3Q+WJAQ/XwbGfNFrRMaJ5T/naqaonyPV/1TP4g=
|
||||
github.com/slack-go/slack v0.17.3/go.mod h1:X+UqOufi3LYQHDnMG1vxf0J8asC6+WllXrVrhl8/Prk=
|
||||
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
|
||||
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
|
||||
github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA=
|
||||
github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo=
|
||||
github.com/spf13/cast v1.8.0 h1:gEN9K4b8Xws4EX0+a0reLmhq8moKn7ntRlQYgjPeCDk=
|
||||
github.com/spf13/cast v1.8.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
|
||||
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE=
|
||||
github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
|
||||
github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M=
|
||||
github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4=
|
||||
github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
@ -246,12 +246,14 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
|
||||
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
|
||||
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
|
||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
|
||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
|
||||
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
|
||||
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
|
||||
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4=
|
||||
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
@ -264,8 +266,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
|
||||
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
|
||||
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
@ -287,24 +289,24 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
|
||||
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
|
||||
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
|
||||
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
|
||||
golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
|
||||
golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
|
||||
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
|
||||
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
|
||||
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
||||
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
|
||||
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
|
||||
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
|
||||
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
@ -321,5 +323,5 @@ 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=
|
||||
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979 h1:jgJW5IePPXLGB8e/1wvd0Ich9QE97RvvF3a8J3fP/Lg=
|
||||
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
|
||||
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||
|
||||
@ -56,14 +56,14 @@ func RegistryChecker(inst *K3d) check.Checker {
|
||||
|
||||
for _, registry := range registries {
|
||||
if registry.Name == fmt.Sprintf("k3d-%s", inst.cfg.Registry.Name) {
|
||||
ips, err := net.LookupIP(registry.Name)
|
||||
ips, err := net.DefaultResolver.LookupIPAddr(ctx, registry.Name)
|
||||
if err != nil {
|
||||
return []check.Info{check.NewFailureInfo(title, fmt.Sprintf("Failed to lookup registry IP (%s)", err.Error()))}
|
||||
}
|
||||
|
||||
var configured bool
|
||||
for _, ip := range ips {
|
||||
if ip.String() == "127.0.0.1" {
|
||||
if ip.IP.String() == "127.0.0.1" {
|
||||
configured = true
|
||||
break
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user