package main import ( "fmt" "io/ioutil" "log" "os" "r2mod-go/api" "r2mod-go/tools" "r2mod-go/utils" "github.com/fatih/color" ) func main() { logFile, err := os.OpenFile(utils.SystemInfo.TmpDir+"/r2mod-go.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644) utils.CheckErr(err) defer logFile.Close() log.SetOutput(logFile) // Setup CLI switch var operation string if len(os.Args) >= 2 { operation = os.Args[1] } else { operation = "help" } // Color white := color.New(color.FgWhite).SprintFunc() // CLI Operations switch operation { case "help": fmt.Println(`Commands: > info -- get info about a mod > install, ins, i -- install mod(s) > remove, rem, r -- remove mod(s) > list, ls, li -- list mods > update, upgrade, up -- update mods and API cache > toggle, tg, togglemods -- toggle mods > filter -- remove version numbers using regex from stdin `) case "info": var selectedmod api.Mod = api.GetModData(os.Args[2]) color.Cyan("Mod Info: %s", os.Args[2]) fmt.Println(" Name: " + selectedmod.Versions[0].FullName) fmt.Println(" Desc: " + selectedmod.Versions[0].Description) fmt.Println(" Version: " + selectedmod.Versions[0].VersionNumber) fmt.Println(" Download URL: " + selectedmod.Versions[0].DownloadURL) case "install", "ins", "i": api.CheckAPICache() for _, m := range os.Args[2:] { fmt.Println(" >", tools.ExposeModString(m)) tools.DownloadMod(tools.ExposeModString(m)) } case "remove", "rem", "r": api.CheckAPICache() for _, m := range os.Args[2:] { fmt.Println(" >", tools.ExposeModString(m)) tools.RemoveMod(tools.ExposeModString(m)) } case "list", "ls", "li": files, err := ioutil.ReadDir(utils.SystemInfo.PluginDir) if err != nil { log.Fatal(err) } for i, f := range files { color.Blue("%3v %s", i, white(f.Name())) } case "update", "upgrade", "up": color.Cyan("> Updating") api.CheckAPICache() files, err := ioutil.ReadDir(utils.SystemInfo.PluginDir) if err != nil { log.Fatal(err) } for _, f := range files { fmt.Println(" >", tools.ExposeModString(f.Name())) tools.DownloadMod(tools.ExposeModString(f.Name())) } color.Green("> Complete!") case "toggle", "tm", "togglemods": tools.ToggleMods() case "filter": fmt.Println(tools.ExposeModString(os.Args[2])) default: fmt.Println("Unknown command, use 'r2go help' for a list of commands.") } }