package main import ( "fmt" "os" "strings" prompt "github.com/c-bata/go-prompt" "github.com/deranjer/ForlornProjectManager/engine" ) func executor(in string) { in = strings.TrimSpace(in) blocks := strings.Split(in, " ") switch blocks[0] { case "exit": fmt.Println("Exiting!") os.Exit(0) case "rebuild": if len(blocks) > 1 { fmt.Println("Subcommand is: ", blocks[1]) switch blocks[1] { case "--rider": fmt.Println("Enabling rider plugin when cleaning") engine.RebuildProject(true, true, true) } } else { fmt.Println("Cleaning project with default settings...") engine.RebuildProject(false, true, true) } case "create-solution": if len(blocks) > 1 { fmt.Println("Flag is: ", blocks[1]) switch blocks[1] { case "--rider": fmt.Println("Enabling rider plugin when cleaning") engine.RebuildProject(true, false, true) } } else { fmt.Println("Cleaning project with default settings...") engine.RebuildProject(false, false, true) } case "clean": if len(blocks) > 1 { fmt.Println("Command does not accept flags, ignoring flag...") } fmt.Println("Cleaning project folders and files") engine.RebuildProject(false, false, false) case "help": fmt.Println("Use 'clean' or 'rebuild' with the optional flag '--rider' if you need the rider plugin enabled.") fmt.Println("Example Usage: 'clean --rider' or 'rebuild --rider'.") default: fmt.Println("Sorry, I don't understand") } } func completer(in prompt.Document) []prompt.Suggest { s := []prompt.Suggest{ {Text: "rebuild", Description: "cleans the project folder and regenerates all files, then builds"}, {Text: "clean", Description: "only cleans the project folder"}, {Text: "create-solution", Description: "only cleans the project folder and regenerates files, no build"}, {Text: "help", Description: "Shows the help for Unreal Project Manager"}, {Text: "exit", Description: "Exit the program"}, {Text: "--rider", Description: "FLAG: Enables the rider plugin after 'clean' or 'rebuild'"}, } return prompt.FilterHasPrefix(s, in.GetWordBeforeCursor(), true) } func main() { fmt.Println("Welcome to the Unreal Project Manager, run 'clean' to run a basic clean/regenerate or 'rebuild' to do a full rebuild.") fmt.Println("Make sure Unreal and Visual Studio are closed, this cannot run if they are open.") fmt.Println("NOTE: By default the rider plugin is disabled on rebuild user '--rider' flag to enable it on build or clean") fmt.Println("Type 'help' to display the full information") p := prompt.New( executor, completer, prompt.OptionPrefix(">>> "), //prompt.OptionParser() ) p.Run() }