package main import ( "github.com/spf13/cobra" ) func main() { var isMovie bool var isSeries bool var isEpisode bool cmdLog := &cobra.Command{ Use: "add", Short: "log media", Long: `kind of like a movie diary with required information about the watched movies`, Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { LOGMedia(isMovie, isSeries, isEpisode) }, } cmdList := &cobra.Command{ Use: "list", Short: "list media", Long: `kind of like a movie diary with required information about the watched movies`, Run: func(cmd *cobra.Command, args []string) { Listmovies(isMovie, isSeries, isEpisode) }, } cmdLog.Flags().BoolVarP(&isMovie, "movie", "m", false, "log a movie") cmdLog.Flags().BoolVarP(&isSeries, "series", "t", false, "log a tv show") cmdLog.Flags().BoolVarP(&isEpisode, "episode", "e", false, "log an epiosdes") cmdLog.MarkFlagsOneRequired("movie", "series", "episode") cmdLog.MarkFlagsMutuallyExclusive("movie", "series") cmdList.Flags().BoolVarP(&isMovie, "movie", "m", false, "list logged movies") cmdList.Flags().BoolVarP(&isSeries, "series", "t", false, "list logged tv shows") cmdList.Flags().BoolVarP(&isEpisode, "episodes", "e", false, "list logged episodes") cmdList.MarkFlagsOneRequired("movie", "series", "episodes") cmdList.MarkFlagsMutuallyExclusive("movie", "series") rootCmd := &cobra.Command{ Use: "boxd", Short: "keep track of media within the comfort of the command line", Long: "boxd allows you to log movies, tv shows and episodes that you watched. boxd can also display a nice looking diary about your media", } rootCmd.AddCommand(cmdLog) rootCmd.AddCommand(cmdList) rootCmd.Execute() }