Skip to content

Latest commit

 

History

History
173 lines (151 loc) · 9.07 KB

File metadata and controls

173 lines (151 loc) · 9.07 KB

功能列表

實作策略說明

  • 🟢 SDK:使用官方 SDK 實作
  • 🟡 Custom:自訂 HTTP 請求實作(重用 SDK 的認證機制)
  • 🔴 Mixed:部分功能使用 SDK,部分需要自訂實作

Label 相關功能

針對某個 repo 可以使用的 label

  • 列出 Label 🟢
    • GET /repos/{owner}/{repo}/labels
    • SDK: ListRepoLabels(owner, repo string, opt ListLabelsOptions) ([]*Label, *Response, error)
  • 修改可用的 label 的名稱、說明、顏色 🟢
    • PATCH /repos/{owner}/{repo}/labels/{id}
    • SDK: EditLabel(owner, repo string, id int64, opt EditLabelOption) (*Label, *Response, error)
  • 新增或刪除 label 🟢
    • POST /repos/{owner}/{repo}/labels
    • SDK: CreateLabel(owner, repo string, opt CreateLabelOption) (*Label, *Response, error)
    • DELETE /repos/{owner}/{repo}/labels/{id}
    • SDK: DeleteLabel(owner, repo string, id int64) (*Response, error)

Milestone 相關功能 🟢

  • 列出 Milestone
    • GET /repos/{owner}/{repo}/milestones
    • SDK: ListRepoMilestones(owner, repo string, opt ListMilestoneOption) ([]*Milestone, *Response, error)
  • 建立、刪除、修改 milestone (包括標題、到期時間和說明)
    • POST /repos/{owner}/{repo}/milestones
    • SDK: CreateMilestone(owner, repo string, opt CreateMilestoneOption) (*Milestone, *Response, error)
    • DELETE /repos/{owner}/{repo}/milestones/{id}
    • SDK: DeleteMilestone(owner, repo string, id int64) (*Response, error)
    • PATCH /repos/{owner}/{repo}/milestones/{id}
    • SDK: EditMilestone(owner, repo string, id int64, opt EditMilestoneOption) (*Milestone, *Response, error)

Issue 相關功能 🔴

  • 列出 Repository Issues 🟢
    • GET /repos/{owner}/{repo}/issues
    • SDK: ListRepoIssues(owner, repo string, opt ListIssueOption) ([]*Issue, *Response, error)
    • 支援篩選: state, labels, milestones, assignees, search, date filters
  • 取得特定 Issue 詳細資訊 🟢
    • GET /repos/{owner}/{repo}/issues/{index}
    • SDK: GetIssue(owner, repo string, index int64) (*Issue, *Response, error)
  • 列出 Issue 評論 🟢
    • GET /repos/{owner}/{repo}/issues/{index}/comments
    • SDK: ListIssueComments(owner, repo string, index int64, opt ListIssueCommentOptions) ([]*Comment, *Response, error)
  • 建立新的 issue 🟢
    • POST /repos/{owner}/{repo}/issues
    • SDK: CreateIssue(owner, repo string, opt CreateIssueOption) (*Issue, *Response, error)
  • 在現有的 issue 上留言 🟢
    • POST /repos/{owner}/{repo}/issues/{index}/comments
    • SDK: CreateIssueComment(owner, repo string, index int64, opt CreateIssueCommentOption) (*Comment, *Response, error)
  • 關閉 issue 🟢
    • PATCH /repos/{owner}/{repo}/issues/{index} (設定 stateclosed)
    • SDK: EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)
  • 修改 issue 資料 🟢
    • 說明: PATCH /repos/{owner}/{repo}/issues/{index} (修改 body)
    • SDK: EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)
    • label: 🟢
      • POST /repos/{owner}/{repo}/issues/{index}/labels (新增)
      • SDK: AddIssueLabels(owner, repo string, index int64, opt IssueLabelsOption) ([]*Label, *Response, error)
      • DELETE /repos/{owner}/{repo}/issues/{index}/labels/{id} (移除)
      • SDK: DeleteIssueLabel(owner, repo string, index, label int64) (*Response, error)
      • PUT /repos/{owner}/{repo}/issues/{index}/labels (取代)
      • SDK: ReplaceIssueLabels(owner, repo string, index int64, opt IssueLabelsOption) ([]*Label, *Response, error)
    • 負責人: 🟢 PATCH /repos/{owner}/{repo}/issues/{index} (修改 assignees)
    • SDK: EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)
    • milestone: 🟢 PATCH /repos/{owner}/{repo}/issues/{index} (修改 milestone)
    • SDK: EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)
    • 到期時間: 🟢 PATCH /repos/{owner}/{repo}/issues/{index} (修改 due_date)
    • SDK: EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)
    • 依賴管理: 🟡
      • 依賴關係 (阻塞當前 issue 的其他 issues):
        • 新增依賴: POST /repos/{owner}/{repo}/issues/{index}/dependencies
        • Custom: SDK 無支援,需自訂 HTTP 請求
        • 列出依賴: GET /repos/{owner}/{repo}/issues/{index}/dependencies
        • Custom: SDK 無支援,需自訂 HTTP 請求
        • 移除依賴: DELETE /repos/{owner}/{repo}/issues/{index}/dependencies (透過 request body)
        • Custom: SDK 無支援,需自訂 HTTP 請求
      • 阻塞關係 (被當前 issue 阻塞的其他 issues):
        • 新增阻塞: POST /repos/{owner}/{repo}/issues/{index}/blocks
        • Custom: SDK 無支援,需自訂 HTTP 請求
        • 列出阻塞: GET /repos/{owner}/{repo}/issues/{index}/blocks
        • Custom: SDK 無支援,需自訂 HTTP 請求
        • 移除阻塞: DELETE /repos/{owner}/{repo}/issues/{index}/blocks (透過 request body)
        • Custom: SDK 無支援,需自訂 HTTP 請求
  • 編輯 Issue 評論 🟢
    • PATCH /repos/{owner}/{repo}/issues/comments/{id}
    • SDK: EditIssueComment(owner, repo string, commentID int64, opt EditIssueCommentOption) (*Comment, *Response, error)
  • 刪除 Issue 評論 🟢
    • DELETE /repos/{owner}/{repo}/issues/comments/{id}
    • SDK: DeleteIssueComment(owner, repo string, commentID int64) (*Response, error)
  • 附件管理 🟡
    • 列出附件: GET /repos/{owner}/{repo}/issues/{index}/assets
    • Custom: SDK 無支援,需自訂 HTTP 請求
    • 刪除附件: DELETE /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id}
    • Custom: SDK 無支援,需自訂 HTTP 請求
    • 修改附件: PATCH /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id}
    • Custom: SDK 無支援,需自訂 HTTP 請求

Wiki 相關功能 🟡

  • 查詢頁面
    • GET /repos/{owner}/{repo}/wiki/page/{pageName}
    • Custom: SDK 無支援,需自訂 HTTP 請求
  • 頁面列表
    • GET /repos/{owner}/{repo}/wiki/pages
    • Custom: SDK 無支援,需自訂 HTTP 請求
  • 新增、刪除、修改頁面
    • POST /repos/{owner}/{repo}/wiki/new
    • Custom: SDK 無支援,需自訂 HTTP 請求
    • DELETE /repos/{owner}/{repo}/wiki/page/{pageName}
    • Custom: SDK 無支援,需自訂 HTTP 請求
    • PATCH /repos/{owner}/{repo}/wiki/page/{pageName}
    • Custom: SDK 無支援,需自訂 HTTP 請求

Release 管理 🟢

  • 列出 Release
    • GET /repos/{owner}/{repo}/releases
    • SDK: ListReleases(owner, repo string, opt ListReleasesOptions) ([]*Release, *Response, error)
  • 建立、刪除、修改 release
    • POST /repos/{owner}/{repo}/releases
    • SDK: CreateRelease(owner, repo string, opt CreateReleaseOption) (*Release, *Response, error)
    • DELETE /repos/{owner}/{repo}/releases/{id}
    • SDK: DeleteRelease(user, repo string, id int64) (*Response, error)
    • PATCH /repos/{owner}/{repo}/releases/{id}
    • SDK: EditRelease(owner, repo string, id int64, form EditReleaseOption) (*Release, *Response, error)
  • 附件管理
    • 列出附件: GET /repos/{owner}/{repo}/releases/{id}/assets
    • SDK: ListReleaseAttachments(user, repo string, release int64, opt ListReleaseAttachmentsOptions) ([]*Attachment, *Response, error)
    • 刪除附件: DELETE /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id}
    • SDK: DeleteReleaseAttachment(user, repo string, release, id int64) (*Response, error)
    • 修改附件: PATCH /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id}
    • SDK: EditReleaseAttachment(user, repo string, release, attachment int64, form EditAttachmentOptions) (*Attachment, *Response, error)

PR 管理 🟢

  • 列出及查詢 PR
    • GET /repos/{owner}/{repo}/pulls
    • SDK: ListRepoPullRequests(owner, repo string, opt ListPullRequestsOptions) ([]*PullRequest, *Response, error)
    • GET /repos/{owner}/{repo}/pulls/{index}
    • SDK: GetPullRequest(owner, repo string, index int64) (*PullRequest, *Response, error)

Repo 管理 🟢

  • 列出及查詢 repo
    • GET /repos/search
    • SDK: SearchRepos(opt SearchRepoOptions) ([]*Repository, *Response, error)
    • GET /user/repos
    • SDK: ListMyRepos(opt ListReposOptions) ([]*Repository, *Response, error)
    • GET /orgs/{org}/repos
    • SDK: ListOrgRepos(org string, opt ListOrgReposOptions) ([]*Repository, *Response, error)
  • 取得特定 Repository 資訊 🟢
    • GET /repos/{owner}/{repo}
    • SDK: GetRepo(owner, repo string) (*Repository, *Response, error)

Forgejo Actions (CI/CD) 🟡

  • 列出 Action 執行任務
    • GET /repos/{owner}/{repo}/actions/tasks
    • Custom: SDK 無支援,需自訂 HTTP 請求

總結

  • 🟢 完全支援 (5/7):Label、Milestone、Release、PR、Repo 管理
  • 🔴 部分支援 (1/7):Issue 功能(附件、依賴需自訂)
  • 🟡 需自訂實作 (2/7):Wiki、Forgejo Actions

建議采用 Hybrid 模式:約 71% 的功能可使用 SDK,剩餘功能自訂 HTTP 請求。