From 22616d31955426c048cab78dbde40ac111321032 Mon Sep 17 00:00:00 2001 From: Kevin Franklin Kim Date: Fri, 1 Dec 2023 07:06:02 +0100 Subject: [PATCH 1/2] feat: add logout --- go.mod | 2 +- go.sum | 4 ++-- gravitational/teleport/command.go | 21 +++++++++++++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 86a1d15..27dce07 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/c-bata/go-prompt v0.2.6 github.com/cloudrecipes/packagejson v1.0.0 github.com/digitalocean/godo v1.106.0 - github.com/foomo/posh v0.5.1 + github.com/foomo/posh v0.5.2 github.com/google/go-github/v47 v47.1.0 github.com/joho/godotenv v1.5.1 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 420c5b5..3bd37f3 100644 --- a/go.sum +++ b/go.sum @@ -92,8 +92,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= -github.com/foomo/posh v0.5.1 h1:KH40t4XmykL6r4xHbooBF6jYqQbrusA1Ut4Z9N9aegs= -github.com/foomo/posh v0.5.1/go.mod h1:r+8JfqSxwZhROoL4teWvjoA47bDjATPtTxq1MEkyAhM= +github.com/foomo/posh v0.5.2 h1:EyKd/JZdz/KEA1RXP97FU35lPNd2mJh8B/4GdHlkyGQ= +github.com/foomo/posh v0.5.2/go.mod h1:ZAPH4wZaRPrDL/RZYH31C6O7L4+N0Al6Sse5jks1skc= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/franklinkim/go-prompt v0.2.7-0.20210427061716-a8f4995d7aa5 h1:kXNtle4AoQnngdm+gwt4ku6Llbzw3EFHgZYpL618JaI= diff --git a/gravitational/teleport/command.go b/gravitational/teleport/command.go index c7984a2..a052fde 100644 --- a/gravitational/teleport/command.go +++ b/gravitational/teleport/command.go @@ -60,8 +60,9 @@ func NewCommand(l log.Logger, cache cache.Cache, teleport *Teleport, kubectl *ku Execute: inst.auth, Nodes: tree.Nodes{ { - Name: "auth", - Execute: inst.auth, + Name: "auth", + Description: "Log in to a cluster and retrieve the session certificate", + Execute: inst.auth, }, { Name: "kubeconfig", @@ -95,6 +96,11 @@ func NewCommand(l log.Logger, cache cache.Cache, teleport *Teleport, kubectl *ku }, Execute: inst.database, }, + { + Name: "logout", + Description: "Log out", + Execute: inst.logout, + }, }, }) @@ -180,3 +186,14 @@ func (c *Command) auth(ctx context.Context, r *readline.Readline) error { } return nil } + +func (c *Command) logout(ctx context.Context, r *readline.Readline) error { + if err := shell.New(ctx, c.l, "tsh", "logout"). + Args(r.Flags()...). + Args(r.AdditionalArgs()...). + Args(r.AdditionalFlags()...). + Run(); err != nil { + return err + } + return nil +} From 2c0936b570cd7b85ced2e9b3aa41629ea8ec4c7a Mon Sep 17 00:00:00 2001 From: Kevin Franklin Kim Date: Fri, 1 Dec 2023 07:06:16 +0100 Subject: [PATCH 2/2] docs: update README --- digitalocean/doctl/README.md | 2 +- stern/stern/README.md | 62 ++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/digitalocean/doctl/README.md b/digitalocean/doctl/README.md index 5016884..2c4b24f 100644 --- a/digitalocean/doctl/README.md +++ b/digitalocean/doctl/README.md @@ -33,7 +33,7 @@ func New(l log.Logger) (plugin.Plugin, error) { // ... - inst.kubectl, err = kubectl.New(l, inst.c) + inst.kubectl, err = kubectl.New(l, inst.cache) if err != nil { return nil, errors.Wrap(err, "failed to create kubectl") } diff --git a/stern/stern/README.md b/stern/stern/README.md index 9e8c82a..0b70324 100644 --- a/stern/stern/README.md +++ b/stern/stern/README.md @@ -2,3 +2,65 @@ ## Usage +### Plugin + +```go +package main + +import ( + "github.com/foomo/posh/provider/foomo/gotsrpc" + "github.com/foomo/posh/pkg/command" + "github.com/foomo/posh/pkg/log" + "github.com/foomo/posh/pkg/plugin" + "github.com/spf13/viper" +) + +type Plugin struct { + l log.Logger + cache cache.Cache + kubectl *kubectl.Kubectl + commands command.Commands +} + +func New(l log.Logger) (plugin.Plugin, error) { + var err error + inst := &Plugin{ + l: l, + cache: &cache.MemoryCache{}, + commands: command.Commands{}, + } + + // ... + + inst.kubectl, err = kubectl.New(l, inst.cache) + if err != nil { + return nil, errors.Wrap(err, "failed to create kubectl") + } + + inst.squadron, err = squadron.New(l, inst.kubectl) + if err != nil { + return nil, errors.Wrap(err, "failed to create squadron") + } + + // ... + + inst.commands.Add(stern.NewCommand(l, inst.kubectl, inst.squadron)) + + // ... + + return inst, nil +} +``` + +### Ownbrew + +To install binary locally, add: + +```yaml +ownbrew: + packages: + ## https://github.com/stern/stern/releases + - name: stern + tap: foomo/tap/stern/stern + version: 1.27.0 +```