A few various changes

- Fixed the '-local' flag to accept host and port
- Added a '-debug' flag to accept a file to write debug log messages
- Added some logic which will force the dark background flag on if MacOS is in dark mode
This commit is contained in:
Leon Mika 2022-06-16 22:00:25 +10:00
parent 47e404aff7
commit 41af399215
18 changed files with 191 additions and 68 deletions

View file

@ -10,18 +10,21 @@ import (
"github.com/charmbracelet/lipgloss"
"github.com/lmika/awstools/internal/common/ui/commandctrl"
"github.com/lmika/awstools/internal/common/ui/logging"
"github.com/lmika/awstools/internal/common/ui/osstyle"
"github.com/lmika/awstools/internal/dynamo-browse/controllers"
"github.com/lmika/awstools/internal/dynamo-browse/providers/dynamo"
"github.com/lmika/awstools/internal/dynamo-browse/services/tables"
"github.com/lmika/awstools/internal/dynamo-browse/ui"
"github.com/lmika/gopkgs/cli"
"log"
"net"
"os"
)
func main() {
var flagTable = flag.String("t", "", "dynamodb table name")
var flagLocal = flag.Bool("local", false, "local endpoint")
var flagLocal = flag.String("local", "", "local endpoint")
var flagDebug = flag.String("debug", "", "file to log debug messages")
flag.Parse()
ctx := context.Background()
@ -32,9 +35,19 @@ func main() {
}
var dynamoClient *dynamodb.Client
if *flagLocal {
if *flagLocal != "" {
host, port, err := net.SplitHostPort(*flagLocal)
if err != nil {
cli.Fatalf("invalid address '%v': %v", *flagLocal, err)
}
if host == "" {
host = "localhost"
}
if port == "" {
port = "8000"
}
dynamoClient = dynamodb.NewFromConfig(cfg,
dynamodb.WithEndpointResolver(dynamodb.EndpointResolverFromURL("http://localhost:18000")))
dynamodb.WithEndpointResolver(dynamodb.EndpointResolverFromURL(fmt.Sprintf("http://%v:%v", host, port))))
} else {
dynamoClient = dynamodb.NewFromConfig(cfg)
}
@ -50,14 +63,28 @@ func main() {
commandController := commandctrl.NewCommandController()
model := ui.NewModel(tableReadController, tableWriteController, commandController)
// Pre-determine if layout has dark background. This prevents calls for creating a list to hang.
lipgloss.HasDarkBackground()
p := tea.NewProgram(model, tea.WithAltScreen())
closeFn := logging.EnableLogging()
closeFn := logging.EnableLogging(*flagDebug)
defer closeFn()
// Pre-determine if layout has dark background. This prevents calls for creating a list to hang.
if lipgloss.HasDarkBackground() {
if colorScheme := osstyle.CurrentColorScheme(); colorScheme == osstyle.ColorSchemeLightMode {
log.Printf("terminal reads dark but really in light mode")
lipgloss.SetHasDarkBackground(true)
} else {
log.Printf("in dark background")
}
} else {
if colorScheme := osstyle.CurrentColorScheme(); colorScheme == osstyle.ColorSchemeDarkMode {
log.Printf("terminal reads light but really in dark mode")
lipgloss.SetHasDarkBackground(true)
} else {
log.Printf("cannot detect system darkmode")
}
}
log.Println("launching")
if err := p.Start(); err != nil {
fmt.Printf("Alas, there's been an error: %v", err)