104 lines
3.3 KiB
Go
104 lines
3.3 KiB
Go
package engine
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
var version = "4.25" //Need to manually set the UEVersion, don't know how to guess this
|
|
|
|
// RebuildProject is the main function to clean up the project, generate files and build
|
|
func RebuildProject(riderEnabled bool, doBuild bool, doRegenerate bool) {
|
|
_, err := os.Getwd()
|
|
if err != nil {
|
|
fmt.Println("Unable to get working dir, returned error: ", err)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
projectFile, err := os.Stat("ForlornOutcast.uproject")
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
fmt.Println("unable to locate project file, are you in the right directory?")
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
} else {
|
|
fmt.Println("Unknown error when trying to open ForlornOutcast.uproject... exiting")
|
|
}
|
|
}
|
|
fmt.Println("Found project file... continuing ")
|
|
projectABSPath, err := filepath.Abs("ForlornOutcast.uproject")
|
|
if err != nil {
|
|
fmt.Println("Unable to generate absolute file path to project file: ", err)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
checkPath(projectABSPath) // Verifying path, will exit if fail
|
|
fmt.Println("Using Project Absolute Path: ", projectABSPath)
|
|
// Setting the folders to remove //remove.go
|
|
folderRemove := []string{".vs", "Binaries", "Intermediate", "Saved", ".idea"}
|
|
fmt.Println("Removing Folders...")
|
|
err = removeFolders(folderRemove)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
// Setting the files to remove //remove.go
|
|
fileRemove := []string{"ForlornOutcast.sln"}
|
|
fmt.Println("Removing Files...")
|
|
err = removeFiles(fileRemove)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
if !doRegenerate { //if no need to generated, exit now
|
|
fmt.Println("Files/Folders deleted, complete... press <enter> to exit.")
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
// Editing the .uproject file //jsonEdit.go
|
|
err = editProjectFile(projectFile, riderEnabled)
|
|
if err != nil {
|
|
fmt.Printf("Error reading/modifying project file: %s", err)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println("Project file has been modified as requested")
|
|
// Generating the vs files //generateFiles.go
|
|
err = generateFiles(projectABSPath)
|
|
if err != nil {
|
|
fmt.Println("Unable to generate project files, please generate project files manually: ", err)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println("Project Files should have been generated...")
|
|
if !doBuild {
|
|
fmt.Println("Finished, press <enter> to exit!")
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
// Building the project //compile.go
|
|
err = buildProject(version, projectABSPath)
|
|
if err != nil {
|
|
fmt.Println("Unable to build project, please build the project manually: ", err)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println("Finished, press <enter> to exit!")
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
|
|
// checkPath is a generic function to just verify file exists
|
|
func checkPath(path string) {
|
|
_, err := os.Stat(path)
|
|
if err != nil {
|
|
fmt.Printf("Path for file %s does not appear to be correct, error: %s exiting...", path, err)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
os.Exit(1)
|
|
}
|
|
}
|