diff --git a/standard_paths_darwin.go b/standard_paths_darwin.go new file mode 100644 index 0000000..b56d48f --- /dev/null +++ b/standard_paths_darwin.go @@ -0,0 +1,41 @@ +//go:build darwin + +/* + * Copyright (c) 2013-2021 Utkan Güngördü + * Copyright (c) 2021-2023 Piotr Grabowski + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package gomicsv + +import ( + "errors" + "os" + "path/filepath" +) + +func getConfigLocation(appName string) (string, error) { + return getUserDataLocation(appName) +} + +func getUserDataLocation(appName string) (string, error) { + if appName == "" { + return "", errors.New("'appName' is empty") + } + if envHome := os.Getenv("HOME"); envHome != "" { + return filepath.Join(envHome, "Library", "Application Support", appName), nil + } + return "", errors.New("getting user appdata directory") +} diff --git a/standard_paths_windows.go b/standard_paths_windows.go new file mode 100644 index 0000000..6900128 --- /dev/null +++ b/standard_paths_windows.go @@ -0,0 +1,41 @@ +//go:build windows + +/* + * Copyright (c) 2013-2021 Utkan Güngördü + * Copyright (c) 2021-2023 Piotr Grabowski + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package gomicsv + +import ( + "errors" + "os" + "path/filepath" +) + +func getConfigLocation(appName string) (string, error) { + return getUserDataLocation(appName) +} + +func getUserDataLocation(appName string) (string, error) { + if appName == "" { + return "", errors.New("'appName' is empty") + } + if envAppdata := os.Getenv("APPDATA"); envAppdata != "" { + return filepath.Join(envAppdata, appName), nil + } + return "", errors.New("getting user appdata directory") +} diff --git a/standard_paths_linux.go b/standard_paths_xdg.go similarity index 96% rename from standard_paths_linux.go rename to standard_paths_xdg.go index c3cde81..21091f6 100644 --- a/standard_paths_linux.go +++ b/standard_paths_xdg.go @@ -1,5 +1,4 @@ -//go:build linux -// +build linux +//go:build freebsd || linux || netbsd || openbsd || solaris /* * Copyright (c) 2013-2021 Utkan Güngördü