🚧 删除项目产物

This commit is contained in:
徐晓伟 2023-10-05 03:13:04 +08:00
parent 8a761504a8
commit 5e3590bf35
2 changed files with 57 additions and 0 deletions

View File

@ -6,6 +6,8 @@ import (
"github.com/xanzy/go-gitlab"
"github.com/xuxiaowei-com-cn/gitlab-go/constant"
"github.com/xuxiaowei-com-cn/gitlab-go/flag"
"github.com/xuxiaowei-com-cn/gitlab-go/utils"
"net/http"
)
// JobsArtifacts 作业产物 API https://docs.gitlab.cn/jh/api/job_artifacts.html
@ -59,6 +61,44 @@ func JobsArtifacts() *cli.Command {
if err != nil {
return err
}
return nil
},
},
{
Name: "delete-project",
Aliases: []string{"rm-p"},
Usage: "删除项目产物",
Flags: append(flag.Common(), flag.Id(true)),
Action: func(context *cli.Context) error {
var baseUrl = context.String(constant.BaseUrl)
var token = context.String(constant.Token)
var id = context.String(constant.Id)
gitClient, err := gitlab.NewClient(token, gitlab.WithBaseURL(baseUrl))
if err != nil {
return err
}
fmt.Printf("Delete ProjectId: %s, Artifacts\n", id)
project, err := utils.ParseID(id)
if err != nil {
return err
}
u := fmt.Sprintf("projects/%s/artifacts", gitlab.PathEscape(project))
req, err := gitClient.NewRequest(http.MethodDelete, u, nil, nil)
if err != nil {
return err
}
response, err := gitClient.Do(req, nil)
fmt.Printf("Response StatusCode: %d\n", response.Response.StatusCode)
if err != nil {
return err
}
return nil
},
},

17
utils/utils.go Normal file
View File

@ -0,0 +1,17 @@
package utils
import (
"fmt"
"strconv"
)
func ParseID(id interface{}) (string, error) {
switch v := id.(type) {
case int:
return strconv.Itoa(v), nil
case string:
return v, nil
default:
return "", fmt.Errorf("invalid ID type %#v, the ID must be an int or a string", id)
}
}