Files
sunhpc-go/internal/soft/manager.go
2026-02-14 05:36:00 +08:00

50 lines
1.6 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.
package soft
import (
"sunhpc/internal/log"
)
// InstallContext 安装上下文,包含所有命令行参数
type InstallContext struct {
Force bool // 强制安装
DryRun bool // 干运行模式
KeepSource bool // 保留源码文件
Jobs int // 编译线程数
Offline bool // 离线模式
}
// InstallFromSource 从源码编译安装
func InstallFromSource(name, srcPath, prefix, version string, ctx *InstallContext) error {
log.Infof("正在从源码安装 %s路径: %s", name, srcPath)
if ctx != nil && ctx.DryRun {
log.Infof("[干运行] 将执行: configure && make -j%d && make install", ctx.Jobs)
return nil
}
// TODO: 实现具体逻辑:下载、解压、./configure、make、make install
log.Info("源码安装模拟完成(需实现具体步骤)")
return nil
}
// InstallFromBinary 从二进制压缩包安装
func InstallFromBinary(name, binPath, prefix string, ctx *InstallContext) error {
log.Infof("正在安装二进制包 %s路径: %s", name, binPath)
if ctx != nil && ctx.DryRun {
log.Infof("[干运行] 将解压 %s 到 %s", binPath, prefix)
return nil
}
// TODO: 解压到 prefix
log.Info("二进制安装模拟完成(需实现具体步骤)")
return nil
}
// InstallFromPackage 通过系统包管理器安装
func InstallFromPackage(name, pkgType string, ctx *InstallContext) error {
log.Infof("正在通过包管理器安装 %s (%s)", name, pkgType)
if ctx != nil && ctx.DryRun {
log.Infof("[干运行] 将执行包管理器安装 %s", name)
return nil
}
// 具体实现在下面的 package.go 中
return installViaPackageManager(name, pkgType)
}