1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-04 06:00:04 +08:00
SpaceVim/bundle/github.vim/autoload/github/api/pulls.vim

111 lines
3.2 KiB
VimL
Raw Normal View History

2022-04-28 21:46:05 +08:00
""
" @public
" List all the PRs of a repo.
"
" Github API : GET /repos/:owner/:repo/pulls
function! github#api#pulls#ListAllPRs(owner,repo) abort
return github#api#util#Get(join(['repos', a:owner, a:repo, 'pulls'], '/'), [])
endfunction
""
" @public
" Get a single pull request
"
" Github API : GET /repos/:owner/:repo/pulls/:number
function! github#api#pulls#Get(owner,repo,number) abort
return github#api#util#Get(join(['repos', a:owner, a:repo, 'pulls', a:number], '/'), [])
endfunction
""
" @public
" Create a pull request
"
" Input: >
" {
" "title": "Amazing new feature",
" "body": "Please pull this in!",
" "head": "octocat:new-feature",
" "base": "master"
" }
" <
" or: >
" {
" "issue": 5,
" "head": "octocat:new-feature",
" "base": "master"
" }
" <
" Github API : POST /repos/:owner/:repo/pulls
function! github#api#pulls#create(owner,repo,user,password,pull) abort
return github#api#util#Get(join(['repos', a:owner, a:repo, 'pulls'], '/'),
\ ['-X', 'POST',
\ '-d', json_encode(a:pull),
\ '-u', a:user . ':' . a:password])
endfunction
""
" @public
" Update a pull request
"
" Input: >
" {
" "title": "new title",
" "body": "updated body",
" "state": "open"
" }
" <
" Github API : PATCH /repos/:owner/:repo/pulls/:number
function! github#api#pulls#update(owner,repo,number,pull,user,password) abort
return github#api#util#Get(join(['repos', a:owner, a:repo, 'pulls', a:number], '/'),
\ ['-X', 'PATCH',
\ '-d', json_encode(a:pull),
\ '-u', a:user . ':' . a:password])
endfunction
""
" @public
" List commits on a pull request
"
" Github API : GET /repos/:owner/:repo/pulls/:number/commits
function! github#api#pulls#ListCommits(owner,repo,number) abort
return github#api#util#Get(join(['repos', a:owner, a:repo, 'pulls', a:number, 'commits'], '/'), [])
endfunction
""
" @public
" List pull requests files
"
" Github API : GET /repos/:owner/:repo/pulls/:number/files
function! github#api#pulls#ListFiles(owner,repo,number) abort
let page_key = '?page='
let issues = []
for i in range(1,github#api#util#GetLastPage(join(['repos', a:owner, a:repo, 'pulls', a:number, 'files'], '/')))
let iss = github#api#util#Get(join(['repos', a:owner, a:repo, 'pulls', a:number, 'files'], '/') . page_key . i, [])
if !empty(iss) && type(iss) == 3
call extend(issues, iss)
endif
endfor
return issues
endfunction
""
" @public
" Get if a pull request has been merged
"
" Github API : GET /repos/:owner/:repo/pulls/:number/merge
function! github#api#pulls#CheckMerged(owner,repo,number) abort
return github#api#util#GetStatus(join(['repos', a:owner, a:repo , 'pulls', a:number, 'merge'], '/'), []) == 204
endfunction
""
" @public
" Merge a pull request (Merge Button)
"
" Github API : PUT /repos/:owner/:repo/pulls/:number/merge
function! github#api#pulls#Merge(owner,repo,number,msg,user,password) abort
return github#api#util#Get(join(['repos', a:owner, a:repo, 'pulls', a:number, 'merge'], '/'),
\ ['-X', 'PUT',
\ '-d', json_encode(a:msg),
\ '-u', a:user . ':' . a:password])
endfunction