From a3a7b41179d8abe9edc705db6b14063e95c459fa Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Thu, 30 Jun 2022 20:15:05 +0530 Subject: added --query option to episodes and chapters command --- cmd/chapters.go | 33 ++++++++++++++++++++++++++------- cmd/episodes.go | 33 ++++++++++++++++++++++++++------- cmd/root.go | 6 +++++- cmd/search.go | 8 +++++++- cmd/status.go | 7 +++++-- 5 files changed, 69 insertions(+), 18 deletions(-) (limited to 'cmd') diff --git a/cmd/chapters.go b/cmd/chapters.go index c28bb8f..87cdd19 100644 --- a/cmd/chapters.go +++ b/cmd/chapters.go @@ -19,6 +19,7 @@ along with this program. If not, see . package cmd import ( + "os" "fmt" "strings" "github.com/MikunoNaka/macli/ui" @@ -41,20 +42,38 @@ var chaptersCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { searchInput := strings.Join(args, " ") if searchInput == "" { - searchInput = ui.TextInput("Search Manga To Set Chapters For: ", "Search can't be blank.") + var promptText string + if queryOnlyMode { + promptText = "Search Manga to Get Amount of Chapters Read For: " + } else { + promptText = "Search Manga to Set Chapters For: " + } + searchInput = ui.TextInput(promptText, "Search can't be blank.") } - chInput, err := cmd.Flags().GetString("set-value") - if err != nil { - fmt.Println("Error while reading --set-value flag.", err.Error()) + var ( + chInput string + err error + ) + if !queryOnlyMode { + chInput, err = cmd.Flags().GetString("set-value") + if err != nil { + fmt.Println("Error while reading \x1b[33m--set-value\x1b[0m flag.", err.Error()) + os.Exit(1) + } } manga := ui.MangaSearch("Select Manga:", searchInput) - mangaData := mal.GetMangaData(manga.Id, []string{"my_list_status"}) - prevChRead := mangaData.MyListStatus.ChaptersRead + selectedManga := mal.GetMangaData(manga.Id, []string{"my_list_status", "num_chapters"}) + prevChRead := selectedManga.MyListStatus.ChaptersRead + + if queryOnlyMode { + fmt.Printf("You Have read \x1b[1;36m%d\x1b[0m out of \x1b[1;33m%d\x1b[0m chapters from \x1b[35m%s\x1b[0m\n", prevChRead, selectedManga.NumChapters, manga.Title) + os.Exit(0) + } if chInput == "" { - ui.ChapterInput(manga) + ui.ChapterInput(selectedManga) } else { resp := mal.SetChapters(manga.Id, prevChRead, chInput) fmt.Println(ui.CreateChapterUpdateConfirmationMessage(manga.Title, prevChRead, resp.ChaptersRead)) diff --git a/cmd/episodes.go b/cmd/episodes.go index 203e6e3..e26e190 100644 --- a/cmd/episodes.go +++ b/cmd/episodes.go @@ -19,6 +19,7 @@ along with this program. If not, see . package cmd import ( + "os" "fmt" "strings" "github.com/MikunoNaka/macli/ui" @@ -41,20 +42,38 @@ var episodesCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { searchInput := strings.Join(args, " ") if searchInput == "" { - searchInput = ui.TextInput("Search Anime To Set Episodes For: ", "Search can't be blank.") + var promptText string + if queryOnlyMode { + promptText = "Search Anime to Get Amount of Episodes Watched for: " + } else { + promptText = "Search Anime To Set Episodes For: " + } + searchInput = ui.TextInput(promptText, "Search can't be blank.") } - epInput, err := cmd.Flags().GetString("set-value") - if err != nil { - fmt.Println("Error while reading --set-value flag.", err.Error()) + var ( + epInput string + err error + ) + if !queryOnlyMode { + epInput, err = cmd.Flags().GetString("set-value") + if err != nil { + fmt.Println("Error while reading \x1b[33m--set-value\x1b[0m flag.", err.Error()) + os.Exit(1) + } } anime := ui.AnimeSearch("Select Anime:", searchInput) - animeData := mal.GetAnimeData(anime.Id, []string{"my_list_status"}) - prevEpWatched := animeData.MyListStatus.EpWatched + selectedAnime := mal.GetAnimeData(anime.Id, []string{"my_list_status", "num_episodes"}) + prevEpWatched := selectedAnime.MyListStatus.EpWatched + + if queryOnlyMode { + fmt.Printf("You Have watched \x1b[1;36m%d\x1b[0m out of \x1b[1;33m%d\x1b[0m episodes from \x1b[35m%s\x1b[0m\n", prevEpWatched, selectedAnime.NumEpisodes, anime.Title) + os.Exit(0) + } if epInput == "" { - ui.EpisodeInput(anime) + ui.EpisodeInput(selectedAnime) } else { resp := mal.SetEpisodes(anime.Id, prevEpWatched, epInput) fmt.Println(ui.CreateEpisodeUpdateConfirmationMessage(anime.Title, prevEpWatched, resp.EpWatched)) diff --git a/cmd/root.go b/cmd/root.go index 2ac48d6..085dafa 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -24,6 +24,9 @@ import ( "github.com/spf13/cobra" ) +var queryOnlyMode bool +var mangaMode bool + var rootCmd = &cobra.Command{ Use: "macli", Short: "macli - Unofficial CLI-Based MyAnimeList Client.", @@ -48,5 +51,6 @@ func Execute() { } func init() { - rootCmd.PersistentFlags().BoolP("manga", "m", false, "use manga mode") + rootCmd.PersistentFlags().BoolVarP(&mangaMode, "manga", "m", false, "Use manga mode") + rootCmd.PersistentFlags().BoolVarP(&queryOnlyMode, "query", "q", false, "Query only (don't update data)") } diff --git a/cmd/search.go b/cmd/search.go index 2e485e3..89ab17f 100644 --- a/cmd/search.go +++ b/cmd/search.go @@ -19,6 +19,8 @@ along with this program. If not, see . package cmd import ( + "os" + "fmt" "strings" "github.com/spf13/cobra" "github.com/MikunoNaka/macli/ui" @@ -36,7 +38,11 @@ var searchCmd = &cobra.Command { Run: func(cmd *cobra.Command, args []string) { // read searchInput from command searchInput := strings.Join(args, " ") - mangaMode, _ := cmd.Flags().GetBool("manga") + mangaMode, err := cmd.Flags().GetBool("manga") + if err != nil { + fmt.Println("Error while reading \x1b[33m--manga\x1b[0m flag.", err.Error()) + os.Exit(1) + } if mangaMode { searchManga(searchInput) diff --git a/cmd/status.go b/cmd/status.go index 662ebf2..bd4307e 100644 --- a/cmd/status.go +++ b/cmd/status.go @@ -20,6 +20,7 @@ package cmd import ( "fmt" + "os" "strings" "github.com/MikunoNaka/macli/ui" "github.com/MikunoNaka/macli/mal" @@ -41,12 +42,14 @@ var statusCmd = &cobra.Command{ statusInput, err := cmd.Flags().GetString("set-value") if err != nil { - fmt.Println("Error while reading status flag.", err.Error()) + fmt.Println("Error while reading \x1b[33m--set-value\x1b[0m flag.", err.Error()) + os.Exit(1) } mangaMode, err := cmd.Flags().GetBool("manga") if err != nil { - fmt.Println("Error while reading manga flag.", err.Error()) + fmt.Println("Error while reading \x1b[33m--manga\x1b[0m flag.", err.Error()) + os.Exit(1) } if mangaMode { -- cgit v1.2.3