main.go 1.25 KB
Newer Older
1
2
3
package main

import (
4
	"fmt"
liming6's avatar
liming6 committed
5
	"get-container/cmd/hytop/backend"
6
7
8
9
10
11
	"get-container/cmd/hytop/tui"
	"log"
	"os"

	tea "github.com/charmbracelet/bubbletea"
	"github.com/charmbracelet/x/term"
12
13
14
15
16
17
	"github.com/spf13/pflag"
)

var (
	flagHelp    = pflag.BoolP("help", "h", false, "show help info of hytop")
	flagVersion = pflag.BoolP("version", "v", false, "show version info of hytop")
18
19
20
)

func main() {
21
22
23
24
25
26
27
28
29
30
31
32
33
34
	pflag.Parse()
	if *flagVersion {
		fmt.Printf("hytop version: %s\n", tui.DCUTopVersion)
		os.Exit(0)
	}
	if *flagHelp {
		fmt.Println("hytop: a tool that allows viewing the operation status of DCU from the command line")
		fmt.Println("Usage of hytop:")
		fmt.Println("  hytop [option]")
		fmt.Println("options: ")
		pflag.PrintDefaults()
		os.Exit(0)
	}

35
36
37
38
	w, h, err := term.GetSize(os.Stdout.Fd())
	if err != nil {
		log.Fatalf("error get terminal size: %v", err)
	}
liming6's avatar
liming6 committed
39
40
41
42
43

	err = backend.Init()
	if err != nil {
		log.Fatalf("error init data backend: %v", err)
	}
44
	model := tui.NewModelMain(w, h)
liming6's avatar
liming6 committed
45
46
47
48
49
50
51
52
	err = model.Prepare()
	if err == nil {
		if _, err := tea.NewProgram(&model, tea.WithAltScreen()).Run(); err != nil {
			backend.Shutdown()
			log.Fatalf("error create program; %v", err)
		}
	} else {
		log.Println("init model error, dcu may be unhealthy")
53
	}
liming6's avatar
liming6 committed
54
	backend.Shutdown()
55
56
	os.Exit(0)
}