Skip to content

Commit

Permalink
feat: 設定ファイルパス解決を実行ファイルから行うように変更 (#27)
Browse files Browse the repository at this point in the history
  • Loading branch information
book000 authored Nov 15, 2024
1 parent 12da7d9 commit f96c29d
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 12 deletions.
2 changes: 1 addition & 1 deletion cmd/splashscreen-changer/args.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{})
Expand Down
47 changes: 40 additions & 7 deletions cmd/splashscreen-changer/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()

// ヘルプメッセージを表示する
Expand All @@ -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
Expand Down
4 changes: 0 additions & 4 deletions cmd/splashscreen-changer/steam_other.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

0 comments on commit f96c29d

Please sign in to comment.