Skip to content

Commit a369222

Browse files
committed
Enhance configuration loading to support Windows shortcuts for executable paths
1 parent 1a4ec53 commit a369222

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

cmd/utils/config.go

+17-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"strconv"
99

1010
"github.com/kardianos/osext"
11+
shortcut "github.com/nyaosorg/go-windows-shortcut"
1112
"github.com/spf13/viper"
1213
)
1314

@@ -65,15 +66,27 @@ func LoadConfig() (*Config, error) {
6566
if err != nil {
6667
return nil, err
6768
}
68-
execDir, direrr := osext.ExecutableFolder()
69-
if direrr != nil {
70-
return nil, fmt.Errorf("error getting executable folder: %w", direrr)
69+
exe, exeerr := osext.Executable()
70+
var exeDir string
71+
if exeerr != nil {
72+
return nil, fmt.Errorf("error getting executable: %w", exeerr)
73+
}
74+
if filepath.Ext(exe) == ".lnk" {
75+
exePath, _, direrr := shortcut.Read(exe)
76+
if direrr != nil {
77+
return nil, fmt.Errorf("error reading shortcut: %w", direrr)
78+
}
79+
if exePath != "" {
80+
exeDir = filepath.Dir(exePath)
81+
} else {
82+
exeDir = ""
83+
}
7184
}
7285

7386
configPaths := []string{
7487
".",
7588
UserConfigDir,
76-
execDir,
89+
exeDir,
7790
}
7891

7992
// Log the configuration files found

go.mod

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ require (
2121
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
2222
github.com/fsnotify/fsnotify v1.7.0 // indirect
2323
github.com/go-logfmt/logfmt v0.6.0 // indirect
24+
github.com/go-ole/go-ole v1.2.6 // indirect
2425
github.com/hashicorp/hcl v1.0.0 // indirect
2526
github.com/inconshreveable/mousetrap v1.1.0 // indirect
2627
github.com/josephspurrier/goversioninfo v1.4.1 // indirect
@@ -34,6 +35,7 @@ require (
3435
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
3536
github.com/muesli/cancelreader v0.2.2 // indirect
3637
github.com/muesli/termenv v0.15.2 // indirect
38+
github.com/nyaosorg/go-windows-shortcut v0.0.0-20220529122037-8b0c89bca4c4 // indirect
3739
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
3840
github.com/rivo/uniseg v0.4.7 // indirect
3941
github.com/sagikazarmark/locafero v0.4.0 // indirect

go.sum

+5
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos
2929
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
3030
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
3131
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
32+
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
33+
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
3234
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
3335
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
3436
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
@@ -63,6 +65,8 @@ github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELU
6365
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
6466
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
6567
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
68+
github.com/nyaosorg/go-windows-shortcut v0.0.0-20220529122037-8b0c89bca4c4 h1:+3bXHpIl3RiBuPKlqeCZZeShGHC9RFhR/P2OJfOLRyA=
69+
github.com/nyaosorg/go-windows-shortcut v0.0.0-20220529122037-8b0c89bca4c4/go.mod h1:9YR30vCq/4djj0WO7AvLm48YvNs7M094LWRieEFDE4A=
6670
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
6771
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
6872
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -113,6 +117,7 @@ golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM
113117
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
114118
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
115119
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
120+
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
116121
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
117122
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
118123
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=

0 commit comments

Comments
 (0)