Compare commits
3 Commits
Author | SHA1 | Date |
---|---|---|
kayomn | 2ce3e36220 | |
kayomn | d44276a56e | |
kayomn | 4d0b24c46a |
30
main.go
30
main.go
|
@ -3,6 +3,7 @@ package main
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Command struct {
|
type Command struct {
|
||||||
|
@ -103,6 +104,35 @@ var commands = []Command{
|
||||||
return "cleaned", nil
|
return "cleaned", nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
Name: "list",
|
||||||
|
Description: "List all known game associations by name followed by data path in a newline-separated list",
|
||||||
|
Arguments: []string{},
|
||||||
|
IsVarargs: false,
|
||||||
|
|
||||||
|
Action: func(requiredArguments []string, arguments []string) (string, error) {
|
||||||
|
if len(arguments) != 0 {
|
||||||
|
return "", fmt.Errorf("expected zero arguments")
|
||||||
|
}
|
||||||
|
|
||||||
|
var gameDataPaths, loadError = LoadGames()
|
||||||
|
|
||||||
|
if loadError != nil {
|
||||||
|
return "", loadError
|
||||||
|
}
|
||||||
|
|
||||||
|
var stringBuilder = strings.Builder{}
|
||||||
|
|
||||||
|
for game, dataPath := range gameDataPaths {
|
||||||
|
if _, printError := fmt.Printf("%s %s\n", game, dataPath); printError != nil {
|
||||||
|
return "", printError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return stringBuilder.String(), nil
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
34
manager.go
34
manager.go
|
@ -117,10 +117,6 @@ func CreateGame(gameName string, gameDataPath string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if iniFile, openError := os.Open(gamesIniPath); openError == nil {
|
if iniFile, openError := os.Open(gamesIniPath); openError == nil {
|
||||||
if (openError != nil) && !(os.IsNotExist(openError)) {
|
|
||||||
return openError
|
|
||||||
}
|
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if closeError := iniFile.Close(); closeError != nil {
|
if closeError := iniFile.Close(); closeError != nil {
|
||||||
panic(closeError)
|
panic(closeError)
|
||||||
|
@ -321,6 +317,36 @@ func DeployGameMods(gameName string, modArchivePaths []string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func LoadGames() (map[string]string, error) {
|
||||||
|
var gameDataPaths = make(map[string]string)
|
||||||
|
|
||||||
|
if iniFile, openError := os.Open(gamesIniPath); openError == nil {
|
||||||
|
defer func() {
|
||||||
|
if closeError := iniFile.Close(); closeError != nil {
|
||||||
|
panic(closeError)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
var parser = ini.NewParser(iniFile)
|
||||||
|
|
||||||
|
for entry := parser.Parse(); !(parser.IsEnd()); entry = parser.Parse() {
|
||||||
|
var section = parser.Section()
|
||||||
|
|
||||||
|
if entry.Key == "path" {
|
||||||
|
gameDataPaths[section] = entry.Value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if parseError := parser.Err(); parseError != nil {
|
||||||
|
return gameDataPaths, parseError
|
||||||
|
}
|
||||||
|
} else if !(os.IsNotExist(openError)) {
|
||||||
|
return gameDataPaths, openError
|
||||||
|
}
|
||||||
|
|
||||||
|
return gameDataPaths, nil
|
||||||
|
}
|
||||||
|
|
||||||
func RemoveGame(gameName string) error {
|
func RemoveGame(gameName string) error {
|
||||||
if cleanError := CleanGameMods(gameName); cleanError != nil {
|
if cleanError := CleanGameMods(gameName); cleanError != nil {
|
||||||
return cleanError
|
return cleanError
|
||||||
|
|
Loading…
Reference in New Issue