package ytdl import ( "bytes" "os/exec" "strings" "sync" "github.com/spf13/viper" ) var ( version string versionOnce sync.Once ) func GetVersion() string { var err error versionOnce.Do(func() { cmd := exec.Command( viper.GetString("ytdlp_path"), "--version", ) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() if err != nil { return } version = strings.TrimSpace(out.String()) }) if err != nil { return "Error getting version" } return version }