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
|
*.dylib
|
||||||
main
|
main
|
||||||
|
|
||||||
|
# Local .env file for overwriting info when doing local dev.
|
||||||
|
.env
|
||||||
|
|
||||||
# Test binary, built with `go test -c`
|
# Test binary, built with `go test -c`
|
||||||
*.test
|
*.test
|
||||||
|
|
||||||
|
|
|
@ -32,12 +32,6 @@ type EdgeAppService struct {
|
||||||
|
|
||||||
const configFilename = "/edgebox-compose.yml"
|
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
|
// GetEdgeApps : Returns a list of EdgeApp struct filled with information
|
||||||
func GetEdgeApps() []EdgeApp {
|
func GetEdgeApps() []EdgeApp {
|
||||||
|
|
||||||
|
@ -45,7 +39,7 @@ func GetEdgeApps() []EdgeApp {
|
||||||
|
|
||||||
// Building list of available edgeapps in the system with their status
|
// 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 {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -54,7 +48,7 @@ func GetEdgeApps() []EdgeApp {
|
||||||
if f.IsDir() {
|
if f.IsDir() {
|
||||||
// It is a folder that most probably contains an EdgeApp.
|
// 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.
|
// 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) {
|
if !os.IsNotExist(err) {
|
||||||
// File exists. Start digging!
|
// File exists. Start digging!
|
||||||
edgeAppName := "Nextcloud"
|
edgeAppName := "Nextcloud"
|
||||||
|
@ -105,7 +99,7 @@ func GetEdgeAppServices(ID string) []EdgeAppService {
|
||||||
|
|
||||||
// strConfigFile := string(configFile) // convert content to a 'string'
|
// 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)
|
servicesString := utils.Exec("yq", cmdArgs)
|
||||||
serviceSlices := strings.Split(servicesString, "\n")
|
serviceSlices := strings.Split(servicesString, "\n")
|
||||||
serviceSlices = utils.DeleteEmptySlices(serviceSlices)
|
serviceSlices = utils.DeleteEmptySlices(serviceSlices)
|
||||||
|
@ -113,7 +107,7 @@ func GetEdgeAppServices(ID string) []EdgeAppService {
|
||||||
|
|
||||||
for _, serviceID := range serviceSlices {
|
for _, serviceID := range serviceSlices {
|
||||||
log.Println(serviceID)
|
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)
|
cmdResult := utils.Exec("docker-compose", cmdArgs)
|
||||||
isRunning := false
|
isRunning := false
|
||||||
if cmdResult != "" {
|
if cmdResult != "" {
|
||||||
|
@ -129,7 +123,7 @@ func GetEdgeAppServices(ID string) []EdgeAppService {
|
||||||
// RunEdgeApp : Run an EdgeApp and return its most current status
|
// RunEdgeApp : Run an EdgeApp and return its most current status
|
||||||
func RunEdgeApp(ID string) EdgeAppStatus {
|
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)
|
utils.Exec("docker-compose", cmdArgs)
|
||||||
|
|
||||||
return GetEdgeAppStatus(ID)
|
return GetEdgeAppStatus(ID)
|
||||||
|
@ -139,7 +133,7 @@ func RunEdgeApp(ID string) EdgeAppStatus {
|
||||||
// StopEdgeApp : Stops an EdgeApp and return its most current status
|
// StopEdgeApp : Stops an EdgeApp and return its most current status
|
||||||
func StopEdgeApp(ID string) EdgeAppStatus {
|
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)
|
utils.Exec("docker-compose", cmdArgs)
|
||||||
|
|
||||||
return GetEdgeAppStatus(ID)
|
return GetEdgeAppStatus(ID)
|
||||||
|
|
|
@ -41,11 +41,8 @@ func DeleteEmptySlices(s []string) []string {
|
||||||
// GetMySQLDbConnectionDetails : Returns the necessary string as connection info for SQL.db()
|
// GetMySQLDbConnectionDetails : Returns the necessary string as connection info for SQL.db()
|
||||||
func GetMySQLDbConnectionDetails() string {
|
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
|
var apiEnv map[string]string
|
||||||
apiEnv, err := godotenv.Read(apiEnvFileLocation)
|
apiEnv, err := godotenv.Read(GetPath("apiEnvFileLocation"))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Error loading .env file")
|
log.Fatal("Error loading .env file")
|
||||||
|
@ -59,3 +56,50 @@ func GetMySQLDbConnectionDetails() string {
|
||||||
return Dbuser + ":" + Dbpass + "@tcp(" + Dbhost + ")/" + Dbname
|
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