github.com/drellem2/pogo@v0.0.0-20240503070746-2c2b76da329a/cmd/pogo/main.go (about) 1 //////////////////////////////////////////////////////////////////////////////// 2 ///////////// Main file for the CLI tool /////////////////////////////////////// 3 //////////////////////////////////////////////////////////////////////////////// 4 5 package main 6 7 import ( 8 "fmt" 9 "log" 10 11 "github.com/spf13/cobra" 12 13 "github.com/drellem2/pogo/internal/client" 14 ) 15 16 func main() { 17 18 var cmdVisit = &cobra.Command{ 19 Use: "visit [file]", 20 Short: "Visit file or directory", 21 Long: `Checks if the file is contained in a repository, and if 22 so indexes the repository.`, 23 Args: cobra.MinimumNArgs(0), 24 Run: func(cmd *cobra.Command, args []string) { 25 _, err := client.Visit(args[0]) 26 if err != nil { 27 log.Fatal(err) 28 } 29 }, 30 } 31 32 var cmdServer = &cobra.Command{ 33 Use: "server", 34 Short: "Control the pogo server", 35 Long: `server provides commands to control the pogo daemon. 36 Child commands include start, stop, and status.`, 37 } 38 var cmdServerStart = &cobra.Command{ 39 Use: "start", 40 Short: "Start the pogo server", 41 Long: `Start the pogo server.`, 42 Args: cobra.MinimumNArgs(0), 43 Run: func(cmd *cobra.Command, args []string) { 44 err := client.HealthCheck() 45 if err != nil { 46 fmt.Println("Starting pogo server...") 47 err = client.StartServer() 48 if err != nil { 49 log.Fatal(err) 50 } 51 } 52 fmt.Println("The server is already running") 53 }, 54 } 55 56 var cmdServerStop = &cobra.Command{ 57 Use: "stop", 58 Short: "Stop the pogo server", 59 Long: `Stop the pogo server.`, 60 Args: cobra.MinimumNArgs(0), 61 Run: func(cmd *cobra.Command, args []string) { 62 // Stop the process "pogod" 63 }, 64 } 65 66 var rootCmd = &cobra.Command{Use: "pogo"} 67 68 rootCmd.AddCommand(cmdVisit) 69 cmdServer.AddCommand(cmdServerStart) 70 cmdServer.AddCommand(cmdServerStop) 71 rootCmd.AddCommand(cmdServer) 72 rootCmd.Execute() 73 }