Skip to content

⚡ InstallWithProgress

执行带进度回调、自动重试与上下文取消的智能安装。

何时使用

当你需要在命令行/界面展示安装进度、安装失败自动重试、或允许用户中途取消安装时使用。这是功能最完整的安装入口。🚀

签名

go
func (si *SmartInstaller) InstallWithProgress() (*InstallResult, error)

参数

参数类型说明
无(显式)行为由 NewSmartInstaller(options) 传入的 InstallOptions 决定

返回值

  • *InstallResult:包含 SuccessComposerPathVersionPHPVersionMethodDurationStages 等字段。✅
  • error:安装过程中的错误(已重试 MaxRetries 次仍失败时返回)。⚠️

示例

go
package main

import (
	"fmt"
	"log"

	"github.com/scagogogo/composer-skills/pkg/installer"
)

func main() {
	opts := installer.DefaultInstallOptions()
	opts.ProgressCallback = func(p installer.InstallProgress) {
		fmt.Printf("[%s] %s (%d%%)\n", p.Stage, p.Message, p.Percent)
	}
	si := installer.NewSmartInstaller(opts)
	result, err := si.InstallWithProgress()
	if err != nil {
		log.Fatalf("安装失败: %v", err)
	}
	fmt.Printf("Composer %s 安装成功,路径: %s\n", result.Version, result.ComposerPath)
}

进阶

  • 安装阶段由 InstallStage 常量表示,如 StageCheckingPHPStageDownloadingStageVerifyingStageCompleted。📊
  • 通过 InstallOptions.Context 可随时取消安装;MaxRetries/RetryDelay 控制重试策略。🔄
  • 若只需"确保已安装",更便捷的入口是 EnsureComposerInstalled。🎯
  • 设置 SkipVerification 可跳过安装后验证以加快流程。⚡

基于 MIT 许可证发布