risk/main.go
2021-01-24 18:12:33 -04:00

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.")
}
}