✏️ EditPackage
编辑 Packagist 上一个已存在包的仓库地址。
何时使用
✏️ 包迁移到新仓库后更新 Packagist 上的源;🧹 纠正错误的仓库 URL;🔄 仓库改名后同步指向。
签名
go
func (c *ComposerClient) EditPackage(ctx context.Context, packageName string, request *domain.PackageEditRequest) (*domain.PackageEditResponse, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
ctx | context.Context | 上下文,用于超时与取消 |
packageName | string | 要编辑的包名,如 your-org/your-package |
request | *domain.PackageEditRequest | 请求体,Repository 字段为新的仓库 URL |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *domain.PackageEditResponse | 含 Status 字段表示操作状态 |
| 错误 | error | 凭据缺失、HTTP 失败、非 200、JSON 解析失败时返回 |
对应端点(PUT):https://packagist.org/api/packages/{name}?username={u}&apiToken={t}。SDK 会对 packageName 做 URL 编码。
示例
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.PackageEditRequest{
Repository: "https://github.com/your-org/your-package-new",
}
resp, err := c.EditPackage(context.Background(), "your-org/your-package", req)
if err != nil {
log.Fatalf("编辑失败: %v", err)
}
fmt.Printf("状态: %s\n", resp.Status)
}进阶
凭据与权限
本方法需 API 凭据(WithAPICredentials),且当前用户须为该包的维护者,否则服务端会拒绝。PUT 请求会整体覆盖仓库地址字段。
- 🚀 首次提交新包用
CreatePackage。 - 🔄 仅触发重新抓取(不改仓库)用
UpdatePackage。 - 📦 编辑后验证用
GetPackage。