From 9de2f66f50e9a3e581e0803651988d5e361ee41d Mon Sep 17 00:00:00 2001 From: Chronophylos Date: Sat, 27 Jul 2019 21:26:11 +0200 Subject: [PATCH 1/4] drop lsb_release Signed-off-by: Chronophylos --- cmd/linux.go | 68 +++++++++++----------------------------------------- 1 file changed, 14 insertions(+), 54 deletions(-) diff --git a/cmd/linux.go b/cmd/linux.go index 61090238..5cf3d371 100644 --- a/cmd/linux.go +++ b/cmd/linux.go @@ -44,52 +44,11 @@ type DistroInfo struct { // GetLinuxDistroInfo returns information about the running linux distribution func GetLinuxDistroInfo() *DistroInfo { result := &DistroInfo{Distribution: Unknown} - program := NewProgramHelper() - // Does lsb_release exist? - lsbRelease := program.FindProgram("lsb_release") - if lsbRelease != nil { - stdout, _, _, err := lsbRelease.Run("-a") - if err != nil { - return result - } - result.DiscoveredBy = "lsb" - for _, line := range strings.Split(stdout, "\n") { - if strings.Contains(line, ":") { - // Iterate lines a - details := strings.Split(line, ":") - key := strings.TrimSpace(details[0]) - value := strings.TrimSpace(details[1]) - switch key { - case "Distributor ID": - result.DistributorID = value - switch value { - case "Ubuntu": - result.Distribution = Ubuntu - case "Arch", "ManjaroLinux": - result.Distribution = Arch - case "Debian": - result.Distribution = Debian - case "Gentoo": - result.Distribution = Gentoo - case "Zorin": - result.Distribution = Zorin - case "Fedora": - result.Distribution = RedHat - } - case "Description": - result.Description = value - case "Release": - result.Release = value - case "Codename": - result.Codename = value - } - } - } - // check if /etc/os-release exists - } else if _, err := os.Stat("/etc/os-release"); !os.IsNotExist(err) { + _, err := os.Stat("/etc/os-release") + if !os.IsNotExist(err) { // Default value - osName := "Unknown" + osID := "unknown" version := "" // read /etc/os-release osRelease, _ := ioutil.ReadFile("/etc/os-release") @@ -104,8 +63,8 @@ func GetLinuxDistroInfo() *DistroInfo { continue } switch splitLine[0] { - case "NAME": - osName = strings.Trim(splitLine[1], "\"") + case "ID": + osID = strings.Trim(splitLine[1], "\"") case "VERSION_ID": version = strings.Trim(splitLine[1], "\"") } @@ -114,21 +73,22 @@ func GetLinuxDistroInfo() *DistroInfo { // Check distro name against list of distros result.Release = version result.DiscoveredBy = "os-release" - switch osName { - case "Fedora": + switch osID { + case "fedora": result.Distribution = RedHat - case "CentOS": - result.Distribution = RedHat - case "Arch Linux": + case "arch": result.Distribution = Arch - case "Debian GNU/Linux": + case "debian": result.Distribution = Debian - case "Gentoo/Linux": + case "gentoo": result.Distribution = Gentoo + case "zorin": + result.Distribution = Zorin default: result.Distribution = Unknown - result.DistributorID = osName } + + result.DistributorID = osID } return result } From 67a8ad8e12e123f6c3ee8004f9b3128608bdd19e Mon Sep 17 00:00:00 2001 From: Chronophylos Date: Sun, 28 Jul 2019 00:44:46 +0200 Subject: [PATCH 2/4] change DistributionID to NAME= Signed-off-by: Chronophylos --- cmd/linux.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmd/linux.go b/cmd/linux.go index 5cf3d371..8d70eb9f 100644 --- a/cmd/linux.go +++ b/cmd/linux.go @@ -49,6 +49,7 @@ func GetLinuxDistroInfo() *DistroInfo { if !os.IsNotExist(err) { // Default value osID := "unknown" + osNAME := "Unknown" version := "" // read /etc/os-release osRelease, _ := ioutil.ReadFile("/etc/os-release") @@ -65,6 +66,8 @@ func GetLinuxDistroInfo() *DistroInfo { switch splitLine[0] { case "ID": osID = strings.Trim(splitLine[1], "\"") + case "NAME": + osNAME = strings.Trim(splitLine[1], "\"") case "VERSION_ID": version = strings.Trim(splitLine[1], "\"") } @@ -88,7 +91,7 @@ func GetLinuxDistroInfo() *DistroInfo { result.Distribution = Unknown } - result.DistributorID = osID + result.DistributorID = osNAME } return result } From 0bac20556506bc9a7451d27b279452a39e1fcbb3 Mon Sep 17 00:00:00 2001 From: Chronophylos Date: Sun, 28 Jul 2019 13:16:56 +0200 Subject: [PATCH 3/4] show distro id when creating a issue Signed-off-by: Chronophylos --- cmd/linux.go | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/cmd/linux.go b/cmd/linux.go index 8d70eb9f..9e9f34b8 100644 --- a/cmd/linux.go +++ b/cmd/linux.go @@ -33,12 +33,12 @@ const ( // DistroInfo contains all the information relating to a linux distribution type DistroInfo struct { - Distribution LinuxDistribution - Description string - Release string - Codename string - DistributorID string - DiscoveredBy string + Distribution LinuxDistribution + Name string + ID string + Description string + Release string + DiscoveredBy string } // GetLinuxDistroInfo returns information about the running linux distribution @@ -91,7 +91,8 @@ func GetLinuxDistroInfo() *DistroInfo { result.Distribution = Unknown } - result.DistributorID = osNAME + result.ID = osID + result.Name = osNAME } return result } @@ -144,16 +145,16 @@ func RpmInstalled(packageName string) (bool, error) { // currently unsupported distribution func RequestSupportForDistribution(distroInfo *DistroInfo, libraryName string) error { var logger = NewLogger() - defaultError := fmt.Errorf("unable to check libraries on distribution '%s'. Please ensure that the '%s' equivalent is installed", distroInfo.DistributorID, libraryName) + defaultError := fmt.Errorf("unable to check libraries on distribution '%s'. Please ensure that the '%s' equivalent is installed", distroInfo.Name, libraryName) - logger.Yellow("Distribution '%s' is not currently supported, but we would love to!", distroInfo.DistributorID) - q := fmt.Sprintf("Would you like to submit a request to support distribution '%s'?", distroInfo.DistributorID) + logger.Yellow("Distribution '%s' is not currently supported, but we would love to!", distroInfo.Name) + q := fmt.Sprintf("Would you like to submit a request to support distribution '%s'?", distroInfo.Name) result := Prompt(q, "yes") if strings.ToLower(result) != "yes" { return defaultError } - title := fmt.Sprintf("Support Distribution '%s'", distroInfo.DistributorID) + title := fmt.Sprintf("Support Distribution '%s'", distroInfo.Name) var str strings.Builder @@ -168,16 +169,16 @@ func RequestSupportForDistribution(distroInfo *DistroInfo, libraryName string) e str.WriteString(fmt.Sprintf("| Platform | %s |\n", runtime.GOOS)) str.WriteString(fmt.Sprintf("| Arch | %s |\n", runtime.GOARCH)) str.WriteString(fmt.Sprintf("| GO111MODULE | %s |\n", gomodule)) - str.WriteString(fmt.Sprintf("| Distribution ID | %s |\n", distroInfo.DistributorID)) + str.WriteString(fmt.Sprintf("| Distribution ID | %s |\n", distroInfo.ID)) + str.WriteString(fmt.Sprintf("| Distribution Name | %s |\n", distroInfo.Name)) str.WriteString(fmt.Sprintf("| Distribution Version | %s |\n", distroInfo.Release)) str.WriteString(fmt.Sprintf("| Discovered by | %s |\n", distroInfo.DiscoveredBy)) - body := fmt.Sprintf("**Description**\nDistribution '%s' is currently unsupported.\n\n**Further Information**\n\n%s\n\n*Please add any extra information here, EG: libraries that are needed to make the distribution work, or commands to install them*", distroInfo.DistributorID, str.String()) + body := fmt.Sprintf("**Description**\nDistribution '%s' is currently unsupported.\n\n**Further Information**\n\n%s\n\n*Please add any extra information here, EG: libraries that are needed to make the distribution work, or commands to install them*", distroInfo.ID, str.String()) fullURL := "https://github.com/wailsapp/wails/issues/new?" params := "title=" + title + "&body=" + body fmt.Println("Opening browser to file request.") browser.OpenURL(fullURL + url.PathEscape(params)) return nil - } From b36a3c4abb1320c0f6e3087987d1a591e207d88a Mon Sep 17 00:00:00 2001 From: Chronophylos Date: Sun, 28 Jul 2019 13:39:03 +0200 Subject: [PATCH 4/4] fix assumption Signed-off-by: Chronophylos --- cmd/linux.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/linux.go b/cmd/linux.go index 9e9f34b8..e5ba768d 100644 --- a/cmd/linux.go +++ b/cmd/linux.go @@ -77,11 +77,11 @@ func GetLinuxDistroInfo() *DistroInfo { result.Release = version result.DiscoveredBy = "os-release" switch osID { - case "fedora": + case "fedora", "centos": result.Distribution = RedHat case "arch": result.Distribution = Arch - case "debian": + case "debian", "ubuntu": result.Distribution = Debian case "gentoo": result.Distribution = Gentoo