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  }