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