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