package cmd import ( "fmt" "os" "sort" "github.com/packwiz/packwiz/core" "github.com/spf13/cobra" "github.com/spf13/viper" ) // listCmd represents the list command var listCmd = &cobra.Command{ Use: "list", Short: "List all the mods in the modpack", Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { // Load pack pack, err := core.LoadPack() if err != nil { fmt.Println(err) os.Exit(1) } // Load index index, err := pack.LoadIndex() if err != nil { fmt.Println(err) os.Exit(1) } // Load mods mods, err := index.LoadAllMods() if err != nil { fmt.Println(err) os.Exit(1) } sort.Slice(mods, func(i, j int) bool { return mods[i].Name < mods[j].Name }) // Print mods if viper.GetBool("list.version") { for _, mod := range mods { fmt.Printf("%s\t[%s]\n", mod.Name, mod.FileName) } } else { for _, mod := range mods { fmt.Println(mod.Name) } } }, } func init() { rootCmd.AddCommand(listCmd) listCmd.Flags().BoolP("version", "v", false, "Print name and version") _ = viper.BindPFlag("list.version", listCmd.Flags().Lookup("version")) }