Added utils.GetPath(pathKey) for getting paths that can be overriden by a .env for local dev
parent
59707b8abd
commit
2817628fef
|
@ -6,6 +6,9 @@
|
|||
*.dylib
|
||||
main
|
||||
|
||||
# Local .env file for overwriting info when doing local dev.
|
||||
.env
|
||||
|
||||
# Test binary, built with `go test -c`
|
||||
*.test
|
||||
|
||||
|
|
|
@ -32,12 +32,6 @@ type EdgeAppService struct {
|
|||
|
||||
const configFilename = "/edgebox-compose.yml"
|
||||
|
||||
// const edgeAppsPath = "/home/system/components/apps/"
|
||||
const edgeAppsPath = "/home/jpt/Repositories/edgebox/apps/"
|
||||
|
||||
// const wsPath = "/home/system/components/ws/"
|
||||
const wsPath = "/home/jpt/Repositories/edgebox/ws"
|
||||
|
||||
// GetEdgeApps : Returns a list of EdgeApp struct filled with information
|
||||
func GetEdgeApps() []EdgeApp {
|
||||
|
||||
|
@ -45,7 +39,7 @@ func GetEdgeApps() []EdgeApp {
|
|||
|
||||
// Building list of available edgeapps in the system with their status
|
||||
|
||||
files, err := ioutil.ReadDir(edgeAppsPath)
|
||||
files, err := ioutil.ReadDir(utils.GetPath("edgeAppsPath"))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
@ -54,7 +48,7 @@ func GetEdgeApps() []EdgeApp {
|
|||
if f.IsDir() {
|
||||
// It is a folder that most probably contains an EdgeApp.
|
||||
// To be fully sure, test that edgebox-compose.yml file exists in the target directory.
|
||||
_, err := os.Stat(edgeAppsPath + f.Name() + configFilename)
|
||||
_, err := os.Stat(utils.GetPath("edgeAppsPath") + f.Name() + configFilename)
|
||||
if !os.IsNotExist(err) {
|
||||
// File exists. Start digging!
|
||||
edgeAppName := "Nextcloud"
|
||||
|
@ -105,7 +99,7 @@ func GetEdgeAppServices(ID string) []EdgeAppService {
|
|||
|
||||
// strConfigFile := string(configFile) // convert content to a 'string'
|
||||
|
||||
cmdArgs := []string{"-r", ".services | keys[]", edgeAppsPath + ID + configFilename}
|
||||
cmdArgs := []string{"-r", ".services | keys[]", utils.GetPath("edgeAppsPath") + ID + configFilename}
|
||||
servicesString := utils.Exec("yq", cmdArgs)
|
||||
serviceSlices := strings.Split(servicesString, "\n")
|
||||
serviceSlices = utils.DeleteEmptySlices(serviceSlices)
|
||||
|
@ -113,7 +107,7 @@ func GetEdgeAppServices(ID string) []EdgeAppService {
|
|||
|
||||
for _, serviceID := range serviceSlices {
|
||||
log.Println(serviceID)
|
||||
cmdArgs = []string{"-f", wsPath + "/docker-compose.yml", "ps", "-q", serviceID}
|
||||
cmdArgs = []string{"-f", utils.GetPath("wsPath") + "/docker-compose.yml", "ps", "-q", serviceID}
|
||||
cmdResult := utils.Exec("docker-compose", cmdArgs)
|
||||
isRunning := false
|
||||
if cmdResult != "" {
|
||||
|
@ -129,7 +123,7 @@ func GetEdgeAppServices(ID string) []EdgeAppService {
|
|||
// RunEdgeApp : Run an EdgeApp and return its most current status
|
||||
func RunEdgeApp(ID string) EdgeAppStatus {
|
||||
|
||||
cmdArgs := []string{"-f", wsPath + "/docker-compose.yml", "up", ID}
|
||||
cmdArgs := []string{"-f", utils.GetPath("wsPath") + "/docker-compose.yml", "up", ID}
|
||||
utils.Exec("docker-compose", cmdArgs)
|
||||
|
||||
return GetEdgeAppStatus(ID)
|
||||
|
@ -139,7 +133,7 @@ func RunEdgeApp(ID string) EdgeAppStatus {
|
|||
// StopEdgeApp : Stops an EdgeApp and return its most current status
|
||||
func StopEdgeApp(ID string) EdgeAppStatus {
|
||||
|
||||
cmdArgs := []string{"-f", wsPath + "/docker-compose.yml", "down", ID}
|
||||
cmdArgs := []string{"-f", utils.GetPath("wsPath") + "/docker-compose.yml", "down", ID}
|
||||
utils.Exec("docker-compose", cmdArgs)
|
||||
|
||||
return GetEdgeAppStatus(ID)
|
||||
|
|
|
@ -41,11 +41,8 @@ func DeleteEmptySlices(s []string) []string {
|
|||
// GetMySQLDbConnectionDetails : Returns the necessary string as connection info for SQL.db()
|
||||
func GetMySQLDbConnectionDetails() string {
|
||||
|
||||
// const apiEnvFileLocation = "/home/system/components/api/edgebox.env"
|
||||
const apiEnvFileLocation = "/home/jpt/Repositories/edgebox/api/edgebox.env"
|
||||
|
||||
var apiEnv map[string]string
|
||||
apiEnv, err := godotenv.Read(apiEnvFileLocation)
|
||||
apiEnv, err := godotenv.Read(GetPath("apiEnvFileLocation"))
|
||||
|
||||
if err != nil {
|
||||
log.Fatal("Error loading .env file")
|
||||
|
@ -59,3 +56,50 @@ func GetMySQLDbConnectionDetails() string {
|
|||
return Dbuser + ":" + Dbpass + "@tcp(" + Dbhost + ")/" + Dbname
|
||||
|
||||
}
|
||||
|
||||
// GetPath : Returns either the hardcoded path, or a overwritten value via .env file at project root. Register paths here for seamless working code between dev and prod environments ;)
|
||||
func GetPath(pathKey string) string {
|
||||
|
||||
// Read whole of .env file to map.
|
||||
var env map[string]string
|
||||
env, err := godotenv.Read()
|
||||
targetPath := ""
|
||||
|
||||
if err != nil {
|
||||
log.Println("Project .env file not found withing project root. Using only hardcoded path variables.")
|
||||
}
|
||||
|
||||
switch pathKey {
|
||||
case "apiEnvFileLocation":
|
||||
|
||||
if env["API_ENV_FILE_LOCATION"] != "" {
|
||||
targetPath = env["API_ENV_FILE_LOCATION"]
|
||||
} else {
|
||||
targetPath = "/home/system/components/api/edgebox.env"
|
||||
}
|
||||
|
||||
case "edgeAppsPath":
|
||||
|
||||
if env["EDGEAPPS_PATH"] != "" {
|
||||
targetPath = env["EDGEAPPS_PATH"]
|
||||
} else {
|
||||
targetPath = "/home/system/components/apps/"
|
||||
}
|
||||
|
||||
case "wsPath":
|
||||
|
||||
if env["WS_PATH"] != "" {
|
||||
targetPath = env["WS_PATH"]
|
||||
} else {
|
||||
targetPath = "/home/system/components/ws/"
|
||||
}
|
||||
|
||||
default:
|
||||
|
||||
log.Printf("path_key %s nonexistant in GetPath().\n", pathKey)
|
||||
|
||||
}
|
||||
|
||||
return targetPath
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue