diff --git a/data.go b/data.go index 525b785..cd4b650 100644 --- a/data.go +++ b/data.go @@ -11,7 +11,7 @@ import ( func loadData() { // Read data from 'devices.json' file - devicesFile, fileErr := os.Open("devices.json") + devicesFile, fileErr := os.Open(args.DevicesPath) if fileErr != nil { log.Fatalf("Error loading devices.json file. \"%s\"", fileErr) } diff --git a/main.go b/main.go index 8409845..1b22242 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "flag" "log" "net" "net/http" @@ -18,9 +19,15 @@ import ( // Global variables var appConfig AppConfig var appData AppData +var args Args -func main() { +type Args struct { + ConfigPath string + DevicesPath string +} +func main() { + processArgs() setWorkingDir() loadConfig() loadData() @@ -42,7 +49,7 @@ func setWorkingDir() { func loadConfig() { - err := cleanenv.ReadConfig("config.json", &appConfig) + err := cleanenv.ReadConfig(args.ConfigPath, &appConfig) if err != nil { log.Fatalf("Error loading config.json file. \"%s\"", err) } @@ -104,3 +111,28 @@ func CacheControlWrapper(h http.Handler) http.Handler { h.ServeHTTP(w, r) }) } + +func processArgs() { + var configPath string + var devicesPath string + + f := flag.NewFlagSet("wolweb", 1) + + f.StringVar(&configPath, "c", "config.json", "Path to configuration file") + f.StringVar(&devicesPath, "d", "devices.json", "Path to devices file") + + f.Parse(os.Args[1:]) + + configPath, err := filepath.Abs(configPath) + if err != nil { + log.Fatal(err) + } + + devicesPath, err = filepath.Abs(devicesPath) + if err != nil { + log.Fatal(err) + } + + args.ConfigPath = configPath + args.DevicesPath = devicesPath +}