diff --git a/README.md b/README.md index 2997391c..cb8b94d5 100644 --- a/README.md +++ b/README.md @@ -48,17 +48,19 @@ Make sure you have the xcode command line tools installed. This can be done by r #### Ubuntu 18.04, Debian 9, Zorin 15 -`sudo apt install pkg-config build-essential libgtk-3-dev libwebkit2gtk-4.0-dev` +`sudo apt install libgtk-3-dev libwebkit2gtk-4.0-dev` #### Arch Linux `sudo pacman -S webkit2gtk gtk3` -#### Red Hat Based Distros +#### Fedora 30 -`sudo yum install webkit2gtk-devel gtk3-devel` +`sudo yum install webkit2gtk3-devel gtk3-devel` -Note: If you have successfully installed these dependencies on a different flavour of Linux, please consider submitting a PR. +#### Centos 7 + +`sudo yum install webkitgtk3-devel gtk3-devel` ### Windows @@ -121,4 +123,3 @@ This project was mainly coded to the following albums: * [Bloc Party - Silent Alarm](https://open.spotify.com/album/6SsIdN05HQg2GwYLfXuzLB) * [Maxthor - Another World](https://open.spotify.com/album/3tklE2Fgw1hCIUstIwPBJF) * [Alun Tan Lan - Y Distawrwydd](https://open.spotify.com/album/0c32OywcLpdJCWWMC6vB8v) - diff --git a/cmd/linux.go b/cmd/linux.go index 9a1e55ae..0b8a393f 100644 --- a/cmd/linux.go +++ b/cmd/linux.go @@ -79,10 +79,8 @@ func GetLinuxDistroInfo() *DistroInfo { } // Check distro name against list of distros result.Release = version - result.DiscoveredBy = "os-release" + result.DiscoveredBy = "/etc/os-release" switch osID { - case "rhel": - result.Distribution = RedHat case "fedora": result.Distribution = Fedora case "centos": diff --git a/cmd/prerequisites.go b/cmd/prerequisites.go index affe16b0..e5c7533a 100644 --- a/cmd/prerequisites.go +++ b/cmd/prerequisites.go @@ -49,15 +49,30 @@ func getRequiredProgramsLinux() *Prerequisites { result := &Prerequisites{} distroInfo := GetLinuxDistroInfo() switch distroInfo.Distribution { - case Ubuntu, Debian, Zorin: + case Debian: + result.Add(newPrerequisite("gcc", "Please install with `sudo apt install build-essentials` and try again")) + result.Add(newPrerequisite("pkg-config", "Please install with `sudo apt install pkg-config` and try again")) + result.Add(newPrerequisite("npm", "Please install with `curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - && sudo apt-get install -y nodejs` and try again")) + case Ubuntu: + result.Add(newPrerequisite("gcc", "Please install with `sudo apt install build-essentials` and try again")) + result.Add(newPrerequisite("pkg-config", "Please install with `sudo apt install pkg-config` and try again")) + result.Add(newPrerequisite("npm", "Please install with `curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - && sudo apt-get install -y nodejs` and try again")) + case Zorin: result.Add(newPrerequisite("gcc", "Please install with `sudo apt install build-essentials` and try again")) result.Add(newPrerequisite("pkg-config", "Please install with `sudo apt install pkg-config` and try again")) result.Add(newPrerequisite("npm", "Please install with `sudo snap install node --channel=12/stable --classic` and try again")) + case Fedora: + result.Add(newPrerequisite("gcc", "Please install with `sudo yum install gcc-c++ make` and try again")) + result.Add(newPrerequisite("pkg-config", "Please install with `sudo yum install pkgconf-pkg-config` and try again")) + result.Add(newPrerequisite("npm", "Please install with `curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash - && sudo yum install -y nodejs` and try again")) + case CentOS: + result.Add(newPrerequisite("gcc", "Please install with `sudo yum install gcc gcc-c++ make` and try again")) + result.Add(newPrerequisite("pkg-config", "Please install with `sudo yum install pkgconfig` and try again")) + result.Add(newPrerequisite("npm", "Please install with `curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash - && sudo yum install -y nodejs` and try again")) default: result.Add(newPrerequisite("gcc", "Please install with your system package manager and try again")) result.Add(newPrerequisite("pkg-config", "Please install with your system package manager and try again")) result.Add(newPrerequisite("npm", "Please install from https://nodejs.org/en/download/ and try again")) - } return result } @@ -93,7 +108,13 @@ func getRequiredLibrariesLinux() (*Prerequisites, error) { result := &Prerequisites{} distroInfo := GetLinuxDistroInfo() switch distroInfo.Distribution { - case Ubuntu, Debian, Zorin: + case Debian: + result.Add(newPrerequisite("libgtk-3-dev", "Please install with `sudo apt install libgtk-3-dev` and try again")) + result.Add(newPrerequisite("libwebkit2gtk-4.0-dev", "Please install with `sudo apt install libwebkit2gtk-4.0-dev` and try again")) + case Ubuntu: + result.Add(newPrerequisite("libgtk-3-dev", "Please install with `sudo apt install libgtk-3-dev` and try again")) + result.Add(newPrerequisite("libwebkit2gtk-4.0-dev", "Please install with `sudo apt install libwebkit2gtk-4.0-dev` and try again")) + case Zorin: result.Add(newPrerequisite("libgtk-3-dev", "Please install with `sudo apt install libgtk-3-dev` and try again")) result.Add(newPrerequisite("libwebkit2gtk-4.0-dev", "Please install with `sudo apt install libwebkit2gtk-4.0-dev` and try again")) case Gentoo: @@ -102,9 +123,12 @@ func getRequiredLibrariesLinux() (*Prerequisites, error) { case Arch: result.Add(newPrerequisite("gtk3", "Please install with `sudo pacman -S gtk3` and try again")) result.Add(newPrerequisite("webkit2gtk", "Please install with `sudo pacman -S webkit2gtk` and try again")) - case RedHat, Fedora, CentOS: + case Fedora: result.Add(newPrerequisite("gtk3-devel", "Please install with `sudo yum install gtk3-devel` and try again")) result.Add(newPrerequisite("webkit2gtk3-devel", "Please install with `sudo yum install webkit2gtk3-devel` and try again")) + case CentOS: + result.Add(newPrerequisite("gtk3-devel", "Please install with `sudo yum install gtk3-devel` and try again")) + result.Add(newPrerequisite("webkitgtk3-devel", "Please install with `sudo yum install webkitgtk3-devel` and try again")) default: result.Add(newPrerequisite("libgtk-3-dev", "Please install with your system package manager and try again")) result.Add(newPrerequisite("libwebkit2gtk-4.0-dev", "Please install with your system package manager and try again")) diff --git a/cmd/prompt.go b/cmd/prompt.go index 3a3adba4..dac324fe 100644 --- a/cmd/prompt.go +++ b/cmd/prompt.go @@ -4,7 +4,6 @@ import ( "bufio" "fmt" "os" - "runtime" "strconv" "strings" ) @@ -20,11 +19,7 @@ func Prompt(question string, defaultValue ...string) string { fmt.Printf(question + ": ") reader := bufio.NewReader(os.Stdin) input, _ := reader.ReadString('\n') - EOL := "\n" - if runtime.GOOS == "windows" { - EOL = "\r\n" - } - input = strings.Replace(input, EOL, "", -1) + input = strings.TrimSpace(input) if input != "" { answer = input diff --git a/cmd/version.go b/cmd/version.go index 6e06c26d..78c1333e 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -1,4 +1,4 @@ package cmd // Version - Wails version -const Version = "v0.17.7-pre" +const Version = "v0.17.9-pre" diff --git a/cmd/wails/9_issue.go b/cmd/wails/9_issue.go index 596363c8..3bc77977 100644 --- a/cmd/wails/9_issue.go +++ b/cmd/wails/9_issue.go @@ -42,12 +42,51 @@ To help you in this process, we will ask for some information, add Go/Wails deta gomodule = "(Not Set)" } + // Get versions for GCC, node & npm + program := cmd.NewProgramHelper() + var gccVersion, nodeVersion, npmVersion string + + switch runtime.GOOS { + case "darwin": + gcc := program.FindProgram("gcc") + if gcc != nil { + stdout, _, _, _ := gcc.Run("-dumpversion") + gccVersion = strings.TrimSpace(stdout) + } + case "linux": + gcc := program.FindProgram("gcc") + if gcc != nil { + gccVersion, _, _, _ := gcc.Run("-dumpfullversion") + gccVersion = gccVersion[:len(gccVersion)-1] + gccVersion = strings.TrimSpace(gccVersion) + } + + // TODO: windows support + } + + npm := program.FindProgram("npm") + if npm != nil { + stdout, _, _, _ := npm.Run("--version") + nodeVersion = stdout + nodeVersion = nodeVersion[:len(nodeVersion)-1] + } + + node := program.FindProgram("node") + if node != nil { + stdout, _, _, _ := node.Run("--version") + npmVersion = stdout + npmVersion = npmVersion[:len(npmVersion)-1] + } + str.WriteString("\n| Name | Value |\n| ----- | ----- |\n") str.WriteString(fmt.Sprintf("| Wails Version | %s |\n", cmd.Version)) str.WriteString(fmt.Sprintf("| Go Version | %s |\n", runtime.Version())) 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("| GCC | %s |\n", gccVersion)) + str.WriteString(fmt.Sprintf("| Npm | %s |\n", npmVersion)) + str.WriteString(fmt.Sprintf("| Node | %s |\n", nodeVersion)) fmt.Println() fmt.Println("Processing template and preparing for upload.")