Skip to content

🔄 UpdatePackage

触发 Packagist 对已存在包重新抓取元数据(不修改仓库地址)。

何时使用

🔄 推送了新 tag 或发布新版本后,主动通知 Packagist 刷新;⏱️ webhook 失灵时手动触发更新;🤖 发布流水线末尾确保元数据及时同步。

签名

go
func (c *ComposerClient) UpdatePackage(ctx context.Context, request *domain.PackageUpdateRequest) (*domain.PackageUpdateResponse, error)

参数

参数类型说明
ctxcontext.Context上下文,用于超时与取消
request*domain.PackageUpdateRequest请求体,Repository 字段为仓库 URL

返回值

类型说明
结果*domain.PackageUpdateResponseStatusJobs(触发的抓取作业 ID 列表)
错误error凭据缺失、HTTP 失败、非 200、JSON 解析失败时返回

对应端点(POST):https://packagist.org/api/update-package?username={u}&apiToken={t}

示例

go
package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/scagogogo/composer-skills/pkg/client"
	"github.com/scagogogo/composer-skills/pkg/domain"
)

func main() {
	c := client.NewComposerClient(
		30*time.Second,
		client.WithAPICredentials("your-username", "your-api-token"),
	)

	req := &domain.PackageUpdateRequest{
		Repository: "https://github.com/your-org/your-package",
	}
	resp, err := c.UpdatePackage(context.Background(), req)
	if err != nil {
		log.Fatalf("更新失败: %v", err)
	}
	fmt.Printf("状态: %s\n", resp.Status)
	for _, job := range resp.Jobs {
		fmt.Println("作业:", job)
	}
}

进阶

与 EditPackage 区别

UpdatePackage 用 POST 触发重新抓取,不改仓库地址;EditPackage 用 PUT 覆盖仓库地址。若仅想刷新版本,优先用本方法。

凭据必需

本方法在调用前检查 username / apiToken,为空直接返回错误,请通过 WithAPICredentials 配置。

基于 MIT 许可证发布