From 5eb7a3cd41826fccdc432d049dd85a31b4b56073 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Wed, 15 Jun 2022 00:39:23 +0530 Subject: added status command to directly set status for an anime --- cmd/root.go | 2 +- cmd/search.go | 6 +++--- cmd/status.go | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mal/status.go | 12 ++++++++--- 4 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 cmd/status.go diff --git a/cmd/root.go b/cmd/root.go index b9967b4..e23a221 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -37,5 +37,5 @@ func Execute() { } func init() { - rootCmd.PersistentFlags().BoolP("manga", "m", false, "Use Manga Mode.") + rootCmd.PersistentFlags().BoolP("manga", "m", false, "use manga mode") } diff --git a/cmd/search.go b/cmd/search.go index 463b109..28be82c 100644 --- a/cmd/search.go +++ b/cmd/search.go @@ -27,7 +27,7 @@ import ( var searchCmd = &cobra.Command { Use: "search", - Short: "Search for an anime.", + Short: "Search for an anime/manga", Long: ` -- help/description to be added later `, @@ -54,9 +54,9 @@ func searchManga(searchInput string) { func searchAnime(searchInput string) { animeIsAdded := false if searchInput == "" { - searchInput = ui.TextInput("Search Anime:", "Search can't be blank.") + searchInput = ui.TextInput("Search Anime", "Search can't be blank.") } - anime := ui.AnimeSearch("Select Anime", searchInput) + anime := ui.AnimeSearch("Select Anime:", searchInput) if anime.MyListStatus.Status != "" { animeIsAdded = true } diff --git a/cmd/status.go b/cmd/status.go new file mode 100644 index 0000000..d1b45c2 --- /dev/null +++ b/cmd/status.go @@ -0,0 +1,64 @@ +/* +Copyright © 2022 NAME HERE + +*/ +package cmd + +import ( + "fmt" + "strings" + "github.com/MikunoNaka/macli/ui" + "github.com/MikunoNaka/macli/mal" + + "github.com/spf13/cobra" +) + +// statusCmd represents the status command +var statusCmd = &cobra.Command{ + Use: "status", + Short: "Set an anime/manga's status", + Long: ` +-- help/description to be added later +`, + Run: func(cmd *cobra.Command, args []string) { + searchInput := strings.Join(args, " ") + + statusInput, err := cmd.Flags().GetString("status") + if err != nil { + fmt.Println("Error while reading status flag.", err.Error()) + } + + mangaMode, err := cmd.Flags().GetBool("manga") + if err != nil { + fmt.Println("Error while reading manga flag.", err.Error()) + } + + if mangaMode { + // setMangaStatus(statusInput, searchInput) + fmt.Println("Manga mode coming soon") + } else { + setAnimeStatus(statusInput, searchInput) + } + + }, +} + +func setAnimeStatus(statusInput, searchInput string) { + if searchInput == "" { + searchInput = ui.TextInput("Search Anime To Update", "Search can't be blank.") + } + + anime := ui.AnimeSearch("Select Anime:", searchInput) + + if statusInput == "" { + ui.StatusMenu(anime) + } else { + mal.SetStatus(anime.Id, statusInput) + fmt.Printf("Successfully set \"%s\" to \"%s\"", anime.Title, statusInput) + } +} + +func init() { + rootCmd.AddCommand(statusCmd) + statusCmd.Flags().StringP("status", "s", "", "status to be set") +} diff --git a/mal/status.go b/mal/status.go index 06d7773..422a838 100644 --- a/mal/status.go +++ b/mal/status.go @@ -19,12 +19,18 @@ along with this program. If not, see . package mal import ( - "log" + "fmt" + "os" ) func SetStatus(animeId int, status string) { - resp, _ := userAnimeClient.SetStatus(animeId, status) + resp, err := userAnimeClient.SetStatus(animeId, status) + if err != nil { + fmt.Println("Error while parsing status:", err.Error()) + os.Exit(1) + } if resp.Error != "" { - log.Println("MyAnimeList reported error on SetStatus", resp.Error, resp.Message) + fmt.Println("MyAnimeList reported error on SetStatus", resp.Error, resp.Message) + os.Exit(1) } } -- cgit v1.2.3