From 9889b48b0d475f3bc29b80e7c901f7b5c9336da0 Mon Sep 17 00:00:00 2001 From: JaegyuDev <129481595+JaegyuDev@users.noreply.github.com> Date: Sat, 16 Sep 2023 12:26:10 -0400 Subject: [PATCH] Add --side argument to filter list command (#256) * added list command filter by side * changed error logging for --side flags * removed len checks on side flags * removed comments previous commit made useless --- cmd/list.go | 21 +++++++++++++++++++++ curseforge/export.go | 9 +++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/cmd/list.go b/cmd/list.go index cb4e07d..b0b0561 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -39,6 +39,24 @@ var listCmd = &cobra.Command{ os.Exit(1) } + // Filter mods by side + if viper.IsSet("list.side") { + side := viper.GetString("list.side") + if side != core.UniversalSide && side != core.ServerSide && side != core.ClientSide { + fmt.Printf("Invalid side %q, must be one of client, server, or both (default)\n", side) + os.Exit(1) + } + + i := 0 + for _, mod := range mods { + if mod.Side == side || mod.Side == core.EmptySide || mod.Side == core.UniversalSide || side == core.UniversalSide { + mods[i] = mod + i++ + } + } + mods = mods[:i] + } + sort.Slice(mods, func(i, j int) bool { return strings.ToLower(mods[i].Name) < strings.ToLower(mods[j].Name) }) @@ -61,4 +79,7 @@ func init() { listCmd.Flags().BoolP("version", "v", false, "Print name and version") _ = viper.BindPFlag("list.version", listCmd.Flags().Lookup("version")) + listCmd.Flags().StringP("side", "s", "", "Filter mods by side (e.g., client or server)") + _ = viper.BindPFlag("list.side", listCmd.Flags().Lookup("side")) + } diff --git a/curseforge/export.go b/curseforge/export.go index 6e3337e..98e2d35 100644 --- a/curseforge/export.go +++ b/curseforge/export.go @@ -4,13 +4,14 @@ import ( "archive/zip" "bufio" "fmt" + "os" + "strconv" + "github.com/packwiz/packwiz/cmdshared" "github.com/packwiz/packwiz/core" "github.com/packwiz/packwiz/curseforge/packinterop" "github.com/spf13/cobra" "github.com/spf13/viper" - "os" - "strconv" ) // exportCmd represents the export command @@ -20,8 +21,8 @@ var exportCmd = &cobra.Command{ Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { side := viper.GetString("curseforge.export.side") - if len(side) == 0 || (side != core.UniversalSide && side != core.ServerSide && side != core.ClientSide) { - fmt.Println("Invalid side!") + if side != core.UniversalSide && side != core.ServerSide && side != core.ClientSide { + fmt.Printf("Invalid side %q, must be one of client, server, or both (default)\n", side) os.Exit(1) }