提交 625b4fec 编写于 作者: yanghye's avatar yanghye

U: energy command line, support linux select gtk2 or gtk3 framework

上级 84e506f9
......@@ -2,18 +2,18 @@ SET CGO_ENABLED=1
set GOARCH=386
set GOOS=windows
go build -o energy-32.exe energy.go
go build -ldflags "-s -w" -o energy-32.exe energy.go
set GOARCH=amd64
set GOOS=windows
go build -o energy-64.exe energy.go
go build -ldflags "-s -w" -o energy-64.exe energy.go
set GOARCH=amd64
set GOOS=darwin
go build -o energy-darwin-64 energy.go
go build -ldflags "-s -w" -o energy-darwin-64 energy.go
set GOARCH=amd64
set GOOS=linux
go build -o energy-linux-64 energy.go
go build -ldflags "-s -w" -o energy-linux-64 energy.go
pause
\ No newline at end of file
......@@ -10,10 +10,19 @@
package internal
import "runtime"
const (
cefKey = "cef"
energyKey = "energy"
download_version_config_url = "https://energy.yanghy.cn/autoconfig/edv.json"
download_extract_url = "https://energy.yanghy.cn/autoconfig/extract.json"
frameworkCache = "EnergyFrameworkDownloadCache"
ENERGY_HOME_KEY = "ENERGY_HOME"
)
const (
isWindows = runtime.GOOS == "windows" //support
isLinux = runtime.GOOS == "linux" //support
isDarwin = runtime.GOOS == "darwin" //support
)
......@@ -18,8 +18,7 @@ import (
"encoding/json"
"fmt"
progressbar "github.com/energye/energy/v2/cmd/internal/progress-bar"
"github.com/energye/energy/v2/common"
"github.com/energye/energy/v2/consts"
"github.com/energye/golcl/energy/homedir"
"github.com/energye/golcl/tools/command"
"io"
"io/fs"
......@@ -65,9 +64,40 @@ func init() {
CmdInstall.Run = runInstall
}
const (
GTK3 = iota + 1
GTK2
)
// https://cef-builds.spotifycdn.com/cef_binary_107.1.11%2Bg26c0b5e%2Bchromium-107.0.5304.110_windows64.tar.bz2
// 运行安装
func runInstall(c *CommandConfig) error {
var (
gtk int
)
if isLinux { // linux, gtk2, gtk3 install
var gtksel = []string{"", "GTK3", "GTK2"}
println(`
Your current installation environment is Linux and there are two GTK solutions available, namely GTK2 GTK3
GTK2: Supports LCL window and can use various LCL controls. The CEF<=106 version supports by default
GTK3: does not support LCL windows and most LCL controls, CEF>=107 version default support
Enter the number to select the installation support for different versions of GTK framework
Number Description
1: GTK3
2: GTK2`)
// 输入选择GTK支持框架
for {
print("Please enter the number: ")
fmt.Scan(&gtk)
if gtk == GTK3 || gtk == GTK2 {
break
} else {
println("Number input error, please re-enter. Only 1: GTK3 or 2: GTK2 are supported")
}
}
println("Support framework selected:", gtksel[gtk])
}
if c.Install.Path == "" {
c.Install.Path = c.Wd
}
......@@ -112,8 +142,19 @@ func runInstall(c *CommandConfig) error {
println("Invalid version number:", c.Install.Version)
os.Exit(1)
}
var versionCEF = version["cef"].(string)
var versionENERGY = version["energy"].(string)
var (
versionCEF, versionENERGY string
)
if isLinux {
if gtk == GTK3 {
versionCEF = ToRNilString(version["cef"], "")
} else {
versionCEF = ToRNilString(version["cefgtk2"], "")
}
} else {
versionCEF = ToString(version["cef"])
}
versionENERGY = version["energy"].(string)
var downloadURL map[string]interface{}
if c.Install.Download == "gitee" {
downloadURL = edv["gitee"].(map[string]interface{})
......@@ -124,7 +165,7 @@ func runInstall(c *CommandConfig) error {
os.Exit(1)
}
libCEFOS, isSupport := cefOS()
libEnergyOS, isSupport := energyOS()
libEnergyOS, isSupport := energyOS(gtk)
var downloadCefURL = downloadURL["cefURL"].(string)
var downloadEnergyURL = downloadURL["energyURL"].(string)
downloadCefURL = strings.ReplaceAll(downloadCefURL, "{version}", versionCEF)
......@@ -194,8 +235,8 @@ func runInstall(c *CommandConfig) error {
println("Remove file", rmFile)
os.Remove(rmFile)
}
setEnergyHomeEnv(consts.ENERGY_HOME_KEY, installPathName)
println("\n", CmdInstall.Short, "SUCCESS \nVersion:", c.Install.Version)
setEnergyHomeEnv(ENERGY_HOME_KEY, installPathName)
println("\n", CmdInstall.Short, "SUCCESS \nVersion:", c.Install.Version, "=>", versionENERGY)
return nil
}
......@@ -205,20 +246,21 @@ func setEnergyHomeEnv(key, value string) {
cmd.MessageCallback = func(s []byte, e error) {
fmt.Println("CMD", s, " error", e)
}
if common.IsWindows() {
if isWindows {
var args = []string{"/c", "setx", key, value}
cmd.Command("cmd.exe", args...)
} else {
var envFiles []string
var energyHomeKey = fmt.Sprintf("export %s", key)
var energyHome = fmt.Sprintf("export %s=%s", key, value)
if common.IsLinux() {
if isLinux {
envFiles = []string{".profile", ".zshrc", ".bashrc"}
} else if common.IsDarwin() {
} else if isDarwin {
envFiles = []string{".profile", ".zshrc", ".bash_profile"}
}
homeDir, _ := homedir.Dir()
for _, file := range envFiles {
var fp = path.Join(consts.HomeDir, file)
var fp = path.Join(homeDir, file)
cmd.Command("touch", fp)
f, err := os.OpenFile(fp, os.O_RDWR|os.O_APPEND, 0666)
if err == nil {
......@@ -269,18 +311,18 @@ func setEnergyHomeEnv(key, value string) {
}
func cefOS() (string, bool) {
if common.IsWindows() { // windows arm for 64 bit, windows for 32/64 bit
if isWindows { // windows arm for 64 bit, windows for 32/64 bit
if runtime.GOARCH == "arm64" {
return "windowsarm64", true
}
return fmt.Sprintf("windows%d", strconv.IntSize), true
} else if common.IsLinux() { //linux for 64 bit
} else if isLinux { //linux for 64 bit
if runtime.GOARCH == "arm64" {
return "linuxarm64", true
} else if runtime.GOARCH == "amd64" {
return "linux64", true
}
} else if common.IsDarwin() { // macosx for 64 bit
} else if isDarwin { // macosx for 64 bit
if runtime.GOARCH == "arm64" {
return "macosarm64", true
} else if runtime.GOARCH == "amd64" {
......@@ -291,12 +333,15 @@ func cefOS() (string, bool) {
return fmt.Sprintf("%v %v", runtime.GOOS, runtime.GOARCH), false
}
func energyOS() (string, bool) {
if common.IsWindows() {
func energyOS(gtk int) (string, bool) {
if isWindows {
return fmt.Sprintf("Windows %d bits", strconv.IntSize), true
} else if common.IsLinux() {
return "Linux x86 64 bits", true
} else if common.IsDarwin() {
} else if isLinux {
if gtk == GTK3 {
return "Linux x86 64 bits", true
}
return "Linux GTK2 x86 64 bits", true
} else if isDarwin {
return "MacOSX x86 64 bits", true
}
//not support
......
//----------------------------------------
//
// Copyright © yanghy. All Rights Reserved.
//
// Licensed under Apache License Version 2.0, January 2004
//
// https://www.apache.org/licenses/LICENSE-2.0
//
//----------------------------------------
package internal
func ToString(v interface{}) string {
if v == nil {
return ""
}
return v.(string)
}
func ToRNilString(v interface{}, new string) string {
if v == nil {
return new
}
return v.(string)
}
......@@ -55,9 +55,13 @@ func runVersion(c *CommandConfig) error {
var version = keys[i]
var ver = versionList[version].(map[string]interface{})
if c.Version.All {
cef := ToRNilString(ver["cef"], "--")
cefgtk2 := ToRNilString(ver["cefgtk2"], "--")
energy := ToRNilString(ver["energy"], "--")
println(" ", version, fmt.Sprintf(`
ENERGY: %s
CEF: %s
ENERGY: %s`, ver["cef"].(string), ver["energy"].(string)))
CEF-GTK2: %s`, energy, cef, cefgtk2))
} else {
println(" ", version)
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册