z_mirror/fmm

git clone https://git.raiguard.me/z_mirror/fmm

Caleb HeuerUpdate module root to codeberg.orgf083d4e

trunk
1.4 KiB69 linesraw
1package cli
2
3import (
4	"fmt"
5	"os"
6	"strings"
7
8	fmm "codeberg.org/raiguard/fmm/lib"
9)
10
11func abort(msg ...any) {
12	errorln(msg...)
13	os.Exit(1)
14}
15
16func errorln(msg ...any) {
17	fmt.Fprintln(os.Stderr, msg...)
18}
19
20func errorf(format string, msg ...any) {
21	fmt.Fprintf(os.Stderr, format, msg...)
22}
23
24func printUsage(msg ...any) {
25	if len(msg) > 0 {
26		errorln(msg...)
27	}
28	errorln(usageStr)
29	os.Exit(1)
30}
31
32func getMods(args []string) ([]fmm.ModIdent, fmm.PropertyTree) {
33	var mods []fmm.ModIdent
34	var settings fmm.PropertyTree
35
36	for _, input := range args {
37		var thisMods []fmm.ModIdent
38		var err error
39		if strings.HasSuffix(input, ".zip") {
40			var fileInfo fmm.SaveFileInfo
41			fileInfo, err = fmm.ParseSaveFile(input)
42			if settings == nil {
43				settings = fileInfo.StartupModSettings
44			}
45			thisMods = fileInfo.ActiveMods
46		} else if strings.HasSuffix(input, ".log") {
47			thisMods = fmm.ParseLogFile(input)
48		} else if strings.HasSuffix(input, ".json") {
49			var mlj *fmm.ModListJson
50			mlj, err = fmm.ParseModListJson(input)
51			if mlj != nil {
52				for _, mod := range mlj.Mods {
53					if mod.Enabled {
54						thisMods = append(thisMods, fmm.ModIdent{Name: mod.Name, Version: mod.Version})
55					}
56				}
57			}
58		} else {
59			thisMods = append(thisMods, fmm.NewModIdent(input))
60		}
61		if err != nil {
62			fmt.Println(err)
63			continue
64		}
65		mods = append(mods, thisMods...)
66	}
67
68	return mods, settings
69}