98 lines
2.3 KiB
Go
98 lines
2.3 KiB
Go
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.")
|
|
}
|
|
}
|