diff --git a/cmd/splashscreen-changer/args.go b/cmd/splashscreen-changer/args.go index 71683f1..49b3636 100644 --- a/cmd/splashscreen-changer/args.go +++ b/cmd/splashscreen-changer/args.go @@ -15,7 +15,7 @@ func printHelp() { fmt.Println("Options:") flag.PrintDefaults() fmt.Println("Environment Variables:") - fmt.Printf(" %-20s %s\n", "CONFIG_PATH", "Path to the configuration file (default: data/config.yaml)") + fmt.Printf(" %-20s %s\n", "CONFIG_PATH", "Path to the configuration file (default: data/config.yml)") // Config 構造体のフィールドから環境変数のキーを生成して表示 configType := reflect.TypeOf(Config{}) diff --git a/cmd/splashscreen-changer/main.go b/cmd/splashscreen-changer/main.go index 669020e..022c20f 100644 --- a/cmd/splashscreen-changer/main.go +++ b/cmd/splashscreen-changer/main.go @@ -131,11 +131,45 @@ func resizePNGFile(srcPath, destPath string, width, height int) error { return nil } +func isGoRun() bool { + executable, err := os.Executable() + if err != nil { + return false + } + + goTmpDir := os.Getenv("GOTMPDIR") + if goTmpDir != "" { + return strings.HasPrefix(executable, goTmpDir) + } + + return strings.HasPrefix(executable, os.TempDir()) +} + +func getConfigPath(configParamPath *string) string { + // 設定ファイルパスは環境変数 CONFIG_PATH または引数 -config で指定し、指定されていない場合は "data/config.yaml" とする。 + // "data/config.yml" の場所は、実行ファイルと同じディレクトリにあるものとする。go runで実行する場合は、カレントディレクトリにあるものとする。 + if *configParamPath != "" { + return *configParamPath + } + + exePath, err := os.Executable() + if err != nil { + return filepath.Join("data", "config.yml") + } + + if isGoRun() { + return filepath.Join("data", "config.yml") + } + + exeDir := filepath.Dir(exePath) + return filepath.Join(exeDir, "data", "config.yml") +} + func main() { // コマンドライン引数を解析する helpFlag := flag.Bool("help", false, "Show help message") versionFlag := flag.Bool("version", false, "Show version") - configPath := flag.String("config", os.Getenv("CONFIG_PATH"), "Path to the configuration file") + configParamPath := flag.String("config", os.Getenv("CONFIG_PATH"), "Path to the configuration file") flag.Parse() // ヘルプメッセージを表示する @@ -152,12 +186,11 @@ func main() { return } - // 設定ファイルを読み込む。設定ファイルパスは環境変数 CONFIG_PATH または引数 -config で指定し、指定されていない場合は "data/config.yaml" とする。 - if *configPath == "" { - *configPath = "data/config.yaml" - } - fmt.Println("Loading config file:", *configPath) - config, err := LoadConfig(*configPath) + // 設定ファイルを読み込む。 + configPath := getConfigPath(configParamPath) + + fmt.Println("Loading config file:", configPath) + config, err := LoadConfig(configPath) if err != nil { fmt.Println("Failed to load configuration file:", err) return diff --git a/cmd/splashscreen-changer/steam_other.go b/cmd/splashscreen-changer/steam_other.go index 85a3ed8..abff4ac 100644 --- a/cmd/splashscreen-changer/steam_other.go +++ b/cmd/splashscreen-changer/steam_other.go @@ -12,10 +12,6 @@ func GetSteamInstallFolder() (string, error) { return "", fmt.Errorf("unsupported OS: %s", runtime.GOOS) } -func getSteamLibraryFolders(_ string) ([]string, error) { - return nil, fmt.Errorf("unsupported OS: %s", runtime.GOOS) -} - func findSteamGameDirectory(_ string) (string, error) { return "", fmt.Errorf("unsupported OS: %s", runtime.GOOS) }