Files
UEProjectManager/engine/jsonEdit.go

65 lines
1.7 KiB
Go

package engine
import (
"encoding/json"
"io/ioutil"
"os"
)
// This is the entire JSON File Struct so we can modify it as needed
type unrealProjectJSON struct {
FileVersion int `json:"FileVersion"`
EngineAssociation string `json:"EngineAssociation"`
Category string `json:"Category"`
Description string `json:"Description"`
Modules []struct {
Name string `json:"Name"`
Type string `json:"Type"`
LoadingPhase string `json:"LoadingPhase"`
AdditionalDependencies []string `json:"AdditionalDependencies,omitempty"`
} `json:"Modules"`
Plugins []struct {
Name string `json:"Name"`
Enabled bool `json:"Enabled"`
MarketplaceURL string `json:"MarketplaceURL,omitempty"`
SupportedTargetPlatforms []string `json:"SupportedTargetPlatforms,omitempty"`
} `json:"Plugins"`
}
func editProjectFile(projectFile os.FileInfo, enableRider bool) error {
byteValue, err := ioutil.ReadFile(projectFile.Name())
if err != nil {
return err
}
var projectStruct unrealProjectJSON
json.Unmarshal([]byte(byteValue), &projectStruct)
for i, plugin := range projectStruct.Plugins {
if plugin.Name == "OculusVR" {
projectStruct.Plugins[i].Enabled = false
}
if plugin.Name == "SteamVR" {
projectStruct.Plugins[i].Enabled = false
}
if plugin.Name == "RiderLink" {
if enableRider {
projectStruct.Plugins[i].Enabled = true
} else {
projectStruct.Plugins[i].Enabled = false
}
}
}
file, err := json.MarshalIndent(projectStruct, "", "\t")
if err != nil {
return err
}
err = ioutil.WriteFile(projectFile.Name(), file, 0644)
if err != nil {
return err
}
return nil
}