diff options
| -rw-r--r-- | cmd/root.go | 2 | ||||
| -rw-r--r-- | cmd/search.go | 6 | ||||
| -rw-r--r-- | cmd/status.go | 64 | ||||
| -rw-r--r-- | mal/status.go | 12 | 
4 files changed, 77 insertions, 7 deletions
| 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 <EMAIL ADDRESS> + +*/ +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 <http://www.gnu.org/licenses/>.  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)    }  } |