From b03b3c31cc7d44cf6f5f1e07db37f572b890eba2 Mon Sep 17 00:00:00 2001 From: Dan Anglin Date: Sat, 29 Jun 2024 16:02:19 +0100 Subject: [PATCH] fix: set absolute path to the credentials file When creating the configuration file during the initialisation process calculate the absolute path to the credentials file instead of the relative path. --- internal/config/config.go | 16 +++++++++++----- internal/utilities/absolute.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 internal/utilities/absolute.go diff --git a/internal/config/config.go b/internal/config/config.go index 348640a..18ec1a6 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -71,7 +71,15 @@ func SaveDefaultConfigToFile(configDir string) error { } defer file.Close() - config := defaultConfig(configDir) + config := defaultConfig() + + credentialsFilePath, err := utilities.AbsolutePath(defaultCredentialsConfigFile(configDir)) + if err != nil { + return fmt.Errorf("unable to calculate the path to the credentials file: %w", err) + } + + config.CredentialsFile = credentialsFilePath + encoder := json.NewEncoder(file) encoder.SetIndent("", " ") @@ -86,11 +94,9 @@ func configFile(configDir string) string { return filepath.Join(utilities.CalculateConfigDir(configDir), configFileName) } -func defaultConfig(configDir string) Config { - credentialsFilePath := defaultCredentialsConfigFile(configDir) - +func defaultConfig() Config { return Config{ - CredentialsFile: credentialsFilePath, + CredentialsFile: "", CacheDirectory: "", HTTP: HTTPConfig{ Timeout: 5, diff --git a/internal/utilities/absolute.go b/internal/utilities/absolute.go new file mode 100644 index 0000000..81c9a41 --- /dev/null +++ b/internal/utilities/absolute.go @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2024 Dan Anglin +// +// SPDX-License-Identifier: GPL-3.0-or-later + +package utilities + +import ( + "fmt" + "os" + "path/filepath" + "strings" +) + +func AbsolutePath(path string) (string, error) { + if strings.HasPrefix(path, "~") { + homeDir, err := os.UserHomeDir() + if err != nil { + return "", fmt.Errorf("unable to get user's home directory; %w", err) + } + + path = filepath.Join(homeDir, path[1:]) + } + + absPath, err := filepath.Abs(path) + if err != nil { + return "", fmt.Errorf("unable to get the absolute path: %w", err) + } + + return absPath, nil +}