hostSync/cmd/init_unix.go

85 lines
2.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//go:build !windows
// +build !windows
package cmd
import (
"fmt"
"os"
"os/user"
"path/filepath"
"runtime"
"strings"
"github.com/evil7/hostsync/utils"
)
// setupWindowsEnvironment 在非 Windows 平台上不执行任何操作
func setupWindowsEnvironment(installDir string) error {
return fmt.Errorf("Windows 特定功能不支持当前平台 (%s)", runtime.GOOS)
}
// setupUnixEnvironment 设置Unix/Linux环境
func setupUnixEnvironment(installDir string) error {
utils.LogInfo("配置Unix/Linux环境变量...")
currentUser, err := user.Current()
if err != nil {
return fmt.Errorf("获取当前用户信息失败: %v", err)
}
// 检查常见的shell配置文件
shellRcFiles := []string{
filepath.Join(currentUser.HomeDir, ".bashrc"),
filepath.Join(currentUser.HomeDir, ".zshrc"),
filepath.Join(currentUser.HomeDir, ".profile"),
}
exportLine := fmt.Sprintf("export PATH=\"%s:$PATH\"", installDir)
updated := false
for _, rcFile := range shellRcFiles {
if !utils.FileExists(rcFile) {
continue
}
// 读取文件内容
content, err := os.ReadFile(rcFile)
if err != nil {
utils.LogWarning("读取 %s 失败: %v", rcFile, err)
continue
}
// 检查是否已经添加过
if strings.Contains(string(content), installDir) {
utils.LogSuccess("%s 已包含程序路径", rcFile)
updated = true
continue
}
// 添加PATH导出
f, err := os.OpenFile(rcFile, os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
utils.LogWarning("打开 %s 失败: %v", rcFile, err)
continue
}
f.WriteString("\n# HostSync PATH\n")
f.WriteString(exportLine + "\n")
f.Close()
utils.LogSuccess("已添加PATH到 %s", rcFile)
updated = true
}
if !updated {
utils.LogWarning("未找到shell配置文件请手动将以下路径添加到PATH")
utils.LogInfo(" %s", installDir)
utils.LogInfo("💡 可以在 ~/.bashrc 或 ~/.zshrc 中添加:")
utils.LogInfo(" %s", exportLine)
} else {
utils.LogInfo("💡 请重新加载shell配置或重启终端以使环境变量生效")
}
return nil
}