ssm-browse: new utility to browse SSM parameters

This is more of an exercise to work out how best to use controllers
This commit is contained in:
Leon Mika 2022-03-29 08:41:27 +11:00
parent 46be54b5fb
commit 0b745a6dfa
14 changed files with 348 additions and 5 deletions

44
cmd/ssm-browse/main.go Normal file
View file

@ -0,0 +1,44 @@
package main
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/ssm"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
"github.com/lmika/awstools/internal/common/ui/logging"
"github.com/lmika/awstools/internal/ssm-browse/controllers"
"github.com/lmika/awstools/internal/ssm-browse/providers/awsssm"
"github.com/lmika/awstools/internal/ssm-browse/services/ssmparameters"
"github.com/lmika/awstools/internal/ssm-browse/ui"
"github.com/lmika/gopkgs/cli"
"os"
)
func main() {
// Pre-determine if layout has dark background. This prevents calls for creating a list to hang.
lipgloss.HasDarkBackground()
closeFn := logging.EnableLogging()
defer closeFn()
cfg, err := config.LoadDefaultConfig(context.Background())
if err != nil {
cli.Fatalf("cannot load AWS config: %v", err)
}
ssmClient := ssm.NewFromConfig(cfg)
provider := awsssm.NewProvider(ssmClient)
service := ssmparameters.NewService(provider)
ctrl := controllers.New(service)
model := ui.NewModel(ctrl)
p := tea.NewProgram(model, tea.WithAltScreen())
if err := p.Start(); err != nil {
fmt.Printf("Alas, there's been an error: %v", err)
os.Exit(1)
}
}