- Issue #4: currently there is no official release yet so we cant download from installer - I added an installer debugger here to test (f091dbf13bdf109b631951e2558651f560ca8b84) - Issue #5: my another library [fuzzy](https://github.com/versenilvis/fuzzy/) has a logic bug so it causes crash, fix d479c6cb4d8453e50366c9839daaabb45a98a2df - Other: - remove unneeded comments (edd9d05fdd16e682b6b416913e2fa9c3f6599956) - Add some tests - Fix reload crash (3a76e78e655fd8daafb635ec0937667325f75ee4) - New optimized build command (56a4a815f836271b861f32795d2df3b25a3dffc0)
39 lines
691 B
Go
39 lines
691 B
Go
package core
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"sync"
|
|
)
|
|
|
|
var (
|
|
pathCmds = make(map[string]bool)
|
|
pathCmdsOnce sync.Once
|
|
)
|
|
|
|
// scanExternalCommands populates pathCmds with system executables
|
|
func scanExternalCommands() {
|
|
pathCmdsOnce.Do(func() {
|
|
scanPath()
|
|
})
|
|
}
|
|
|
|
// scanPath populates pathCmds with all executable files found in path environment variable
|
|
func scanPath() {
|
|
dirs := filepath.SplitList(os.Getenv("PATH"))
|
|
for _, dir := range dirs {
|
|
files, err := os.ReadDir(dir)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
for _, f := range files {
|
|
if !f.IsDir() {
|
|
info, err := f.Info()
|
|
if err == nil && info.Mode()&0111 != 0 {
|
|
pathCmds[f.Name()] = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|