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

energy command-line tools: posix install 优化

上级 c38894b0
......@@ -92,19 +92,43 @@ func SetEnergyHomeEnv(homePath string) {
term.BoxPrintln("Hint: Reopen the cmd window to make the environment variables take effect.")
}
func setPosixEnv(exs []string, binPath, bin string) {
func envfiles() (result []string) {
if consts.IsLinux {
result = []string{".profile", ".zshrc", ".bashrc"}
} else if consts.IsDarwin {
result = []string{".profile", ".zshrc", ".bash_profile"}
}
return result
}
func SourceEnvFiles() {
var envFiles = envfiles()
term.Logger.Info("Refresh Environment Variables source: " + strings.Join(envFiles, " "))
cmd := toolsCommand.NewCMD()
cmd.IsPrint = false
defer cmd.Close()
var envFiles []string
if consts.IsLinux {
envFiles = []string{".profile", ".zshrc", ".bashrc"}
} else if consts.IsDarwin {
envFiles = []string{".profile", ".zshrc", ".bash_profile"}
homeDir, err := homedir.Dir()
if err != nil {
term.Logger.Error(err.Error())
return
}
for _, file := range envFiles {
var fp = filepath.Join(homeDir, file)
// bash
cmd.Command("bash", "-c", fmt.Sprintf("source %s", fp))
// zsh
cmd.Command("zsh", "-c", fmt.Sprintf("source %s", fp))
}
}
func setPosixEnv(exs []string, binPath, bin string) {
cmd := toolsCommand.NewCMD()
cmd.IsPrint = false
defer cmd.Close()
var envFiles = envfiles()
homeDir, err := homedir.Dir()
if err != nil {
println(err.Error())
term.Logger.Error(err.Error())
return
}
var tempExts []string
......@@ -205,7 +229,7 @@ func setPosixEnv(exs []string, binPath, bin string) {
// 如果任何操作失败, 重新写入覆盖文件
var oldWrite = func() {
if f, err = os.OpenFile(fp, os.O_RDWR, 0666); err == nil {
println("Restore files", file)
term.Logger.Info("Restore files. " + file)
f.WriteString(oldContent)
f.Close()
}
......@@ -214,7 +238,7 @@ func setPosixEnv(exs []string, binPath, bin string) {
if newOpenFile, err := os.OpenFile(fp, os.O_RDWR|os.O_TRUNC, 0666); err == nil {
// 写入新的环境配置
if _, err := newOpenFile.Write(newContent.Bytes()); err == nil {
println("Write files success.", file)
term.Logger.Info("Write files success. " + file)
newOpenFile.Close()
} else {
//写入失败,把老的内容还原
......
......@@ -49,10 +49,6 @@ type softEnf struct {
}
func Install(c *command.Config) error {
// 初始配置和安装目录
if err := initInstall(c); err != nil {
return err
}
// 检查环境
willInstall := checkInstallEnv(c)
var (
......@@ -111,6 +107,12 @@ func Install(c *command.Config) error {
}
}
}
if len(selectedOptions) > 0 {
// 初始配置和安装目录
if err := initInstall(c); err != nil {
return err
}
}
}
}
// 安装Go开发环境
......@@ -147,6 +149,7 @@ func Install(c *command.Config) error {
if z7zRoot != "" {
env.Set7zaEnv(z7zRoot)
}
env.SourceEnvFiles()
// success 输出
if nsisSuccessCallback != nil || goSuccessCallback != nil || upxSuccessCallback != nil || cefFrameworkSuccessCallback != nil || z7zSuccessCallback != nil {
......@@ -169,6 +172,7 @@ func Install(c *command.Config) error {
z7zSuccessCallback()
}
copyEnergyCMD(goRoot)
return nil
}
......@@ -285,12 +289,8 @@ func checkInstallEnv(c *command.Config) (result []*softEnf) {
}
return ""
}()
if lib != "" {
s := filepath.Join(cefInstallPathName(c), lib)
return "All", tools.IsExist(s)
} else {
return "Unsupported Platform", true
}
s := filepath.Join(cefInstallPathName(c), lib)
return "All", tools.IsExist(s)
}, cefName, func() {
c.Install.ICEF = true //yes callback
})
......@@ -364,30 +364,40 @@ func initInstall(c *command.Config) (err error) {
if err != nil {
return
}
err = os.MkdirAll(cefInstallPathName(c), fs.ModePerm) //cef
if err != nil {
return
}
err = os.MkdirAll(goInstallPathName(c), fs.ModePerm) // go
if err != nil {
return
}
if nsisCanInstall() {
err = os.MkdirAll(nsisInstallPathName(c), fs.ModePerm) // nsis
if c.Install.ICEF {
err = os.MkdirAll(cefInstallPathName(c), fs.ModePerm) //cef
if err != nil {
return
}
}
if upxCanInstall() {
err = os.MkdirAll(upxInstallPathName(c), fs.ModePerm) //upx
if c.Install.IGolang {
err = os.MkdirAll(goInstallPathName(c), fs.ModePerm) // go
if err != nil {
return
}
}
if z7zCanInstall() {
err = os.MkdirAll(z7zInstallPathName(c), fs.ModePerm) //upx
if err != nil {
return
if c.Install.INSIS {
if nsisCanInstall() {
err = os.MkdirAll(nsisInstallPathName(c), fs.ModePerm) // nsis
if err != nil {
return
}
}
}
if c.Install.IUPX {
if upxCanInstall() {
err = os.MkdirAll(upxInstallPathName(c), fs.ModePerm) //upx
if err != nil {
return
}
}
}
if c.Install.I7za {
if z7zCanInstall() {
err = os.MkdirAll(z7zInstallPathName(c), fs.ModePerm) //upx
if err != nil {
return
}
}
}
// framework download cache
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册