main.go 1013 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "os"
  6. "time"
  7. "fbtop/internal/app"
  8. "fbtop/internal/shared"
  9. tea "charm.land/bubbletea/v2"
  10. )
  11. func main() {
  12. url := flag.String("u", "http://127.0.0.1:2020", "Fluent Bit URL")
  13. interval := flag.Duration("i", time.Second, "Poll interval")
  14. humanize := flag.Bool("H", true, "Humanize numbers")
  15. sortStr := flag.String("s", "id", "Sort column: id|records|bytes")
  16. sortDesc := flag.Bool("S", false, "Reverse sort order")
  17. kindStr := flag.String("k", "all", "Filter kind: input|filter|output|all")
  18. flag.Parse()
  19. sc := shared.SortID
  20. switch *sortStr {
  21. case "records":
  22. sc = shared.SortRecords
  23. case "bytes":
  24. sc = shared.SortBytes
  25. }
  26. k := shared.KindAll
  27. switch *kindStr {
  28. case "input":
  29. k = shared.KindInput
  30. case "filter":
  31. k = shared.KindFilter
  32. case "output":
  33. k = shared.KindOutput
  34. }
  35. m := app.New(*url, *interval, *humanize, sc, !*sortDesc, k)
  36. if _, err := tea.NewProgram(m).Run(); err != nil {
  37. fmt.Fprintf(os.Stderr, "error: %v\n", err)
  38. os.Exit(1)
  39. }
  40. }