mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 16:51:29 +00:00
184 lines
6.3 KiB
Go
184 lines
6.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
// zone/command.cpp
|
|
commands, err := os.ReadFile("./zone/command.cpp")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
commandsString := string(commands)
|
|
|
|
s := strings.Split(commandsString, "void command_")
|
|
commandFiles := []string{}
|
|
if len(s) > 1 {
|
|
startListing := false
|
|
for i, chunk := range s {
|
|
if strings.Contains(chunk, "logcommand(Client *c") {
|
|
startListing = true
|
|
}
|
|
|
|
// get function name
|
|
functionName := ""
|
|
nameSplit := strings.Split(chunk, "(Client")
|
|
if len(nameSplit) > 0 {
|
|
functionName = strings.TrimSpace(nameSplit[0])
|
|
}
|
|
|
|
if startListing &&
|
|
len(s[i-1]) > 0 &&
|
|
!strings.Contains(s[i-1], "#ifdef") &&
|
|
!strings.Contains(chunk, "#ifdef") &&
|
|
!strings.Contains(chunk, "#ifdef BOTS") &&
|
|
!strings.Contains(chunk, "#ifdef EQPROFILE") &&
|
|
!strings.Contains(functionName, "bot") &&
|
|
!strings.Contains(functionName, "help") &&
|
|
!strings.Contains(functionName, "findaliases") {
|
|
|
|
fmt.Println(functionName)
|
|
|
|
// build command file name
|
|
commandFile := fmt.Sprintf("zone/gm_commands/%v.cpp", functionName)
|
|
|
|
// append command file nam eto list
|
|
commandFiles = append(commandFiles, commandFile)
|
|
|
|
includes := ""
|
|
if strings.Contains(chunk, "Client") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../client.h\"")
|
|
}
|
|
if strings.Contains(chunk, "parse->") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../quest_parser_collection.h\"")
|
|
}
|
|
if strings.Contains(chunk, "worldserver.") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../worldserver.h\"")
|
|
includes = fmt.Sprintf("%v%v\n", includes, "extern WorldServer worldserver;")
|
|
}
|
|
if strings.Contains(chunk, "RegionType") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../water_map.h\"")
|
|
}
|
|
if strings.Contains(chunk, "Corpse") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../corpse.h\"")
|
|
}
|
|
if strings.Contains(chunk, "Object") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../object.h\"")
|
|
}
|
|
if strings.Contains(chunk, "DoorManipulation") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"door_manipulation.h\"")
|
|
}
|
|
if strings.Contains(chunk, "Group") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../groups.h\"")
|
|
}
|
|
if strings.Contains(chunk, "httplib") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../common/http/httplib.h\"")
|
|
}
|
|
if strings.Contains(chunk, "guild_mgr") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../guild_mgr.h\"")
|
|
}
|
|
if strings.Contains(chunk, "expedition") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../expedition.h\"")
|
|
}
|
|
if strings.Contains(chunk, "DataBucket::") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../data_bucket.h\"")
|
|
}
|
|
if strings.Contains(chunk, "file_exists") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../common/file_util.h\"")
|
|
}
|
|
if strings.Contains(chunk, "std::thread") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include <thread>")
|
|
}
|
|
if strings.Contains(chunk, "Door") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../doors.h\"")
|
|
}
|
|
if strings.Contains(chunk, "NOW_INVISIBLE") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../string_ids.h\"")
|
|
}
|
|
if strings.Contains(chunk, "Expansion::") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../common/content/world_content_service.h\"")
|
|
}
|
|
if strings.Contains(chunk, "MobMovementManager::") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../mob_movement_manager.h\"")
|
|
}
|
|
if strings.Contains(chunk, "MobStuckBehavior::") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../mob_movement_manager.h\"")
|
|
}
|
|
if strings.Contains(chunk, "ReloadAllPatches") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../common/patches/patches.h\"")
|
|
}
|
|
if strings.Contains(chunk, "ProfanityManager") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../common/profanity_manager.h\"")
|
|
}
|
|
if strings.Contains(chunk, "npc_scale_manager") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../npc_scale_manager.h\"")
|
|
}
|
|
if strings.Contains(chunk, "g_Math") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../fastmath.h\"")
|
|
includes = fmt.Sprintf("%v%v\n", includes, "extern FastMath g_Math;")
|
|
}
|
|
if strings.Contains(chunk, "raid") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../raids.h\"")
|
|
}
|
|
if strings.Contains(chunk, "Raid") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../raids.h\"")
|
|
}
|
|
if strings.Contains(chunk, "GetOS") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../common/serverinfo.h\"")
|
|
}
|
|
if strings.Contains(chunk, "LANG_") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../common/languages.h\"")
|
|
}
|
|
if strings.Contains(chunk, "ServerOP_Shared") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../common/shared_tasks.h\"")
|
|
}
|
|
if strings.Contains(chunk, "title_manager") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../titles.h\"")
|
|
}
|
|
if strings.Contains(chunk, "CatchSignal") {
|
|
includes = fmt.Sprintf("%v%v\n", includes, "#include \"../../world/main.h\"")
|
|
}
|
|
|
|
// build the contents of the command file
|
|
commandString := fmt.Sprintf("%v\nvoid command_%v", includes, chunk)
|
|
|
|
//write file contents
|
|
err := ioutil.WriteFile(commandFile, []byte(commandString), 0777)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
commandOnly := fmt.Sprintf("void command_%v", chunk)
|
|
commandsString = strings.ReplaceAll(commandsString, commandOnly, "")
|
|
|
|
}
|
|
}
|
|
|
|
// rewrite commands.cpp with functions removed
|
|
err := ioutil.WriteFile("zone/command.cpp", []byte(commandsString), 0777)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
fmt.Println("# CmakeLists")
|
|
|
|
// sort a-z
|
|
sort.Slice(commandFiles, func(i, j int) bool {
|
|
return commandFiles[i] < commandFiles[j]
|
|
})
|
|
|
|
for _, file := range commandFiles {
|
|
file = strings.ReplaceAll(file, "zone/", "")
|
|
fmt.Println(file)
|
|
}
|
|
}
|
|
|
|
//fmt.Print(string(commands))
|
|
}
|