1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-09 10:10:04 +08:00

feat(github): update github plugin

This commit is contained in:
wsdjeg 2022-05-29 20:59:18 +08:00
parent 0c18fa74f3
commit d45150caba
2 changed files with 1038 additions and 1034 deletions

View File

@ -4,56 +4,60 @@
" "
" Github API : GET /users " Github API : GET /users
function! github#api#users#GetAllUsers() abort function! github#api#users#GetAllUsers() abort
return github#api#util#Get('users', []) return github#api#util#Get('users', [])
endfunction endfunction
function! github#api#users#starred(user,page) abort function! github#api#users#starred(user,page) abort
return json_decode(join(systemlist('curl -s https://api.github.com/users/' . return json_decode(join(systemlist('curl -s https://api.github.com/users/' .
\a:user . '/starred' . '?page=' . a:page ),"\n")) \a:user . '/starred' . '?page=' . a:page ),"\n"))
endfunction endfunction
function! github#api#users#starred_pages(user) abort function! github#api#users#starred_pages(user) abort
let l:i = systemlist('curl -si https://api.github.com/users/' . a:user . '/starred | grep -E "^Link"')[0] let result = system('curl -si https://api.github.com/users/' . a:user . '/starred')
return split(matchstr(l:i,'=\d\+',0,2),'=')[0] if !v:shell_error
let i = filter(split(result, "\n"), 'v:val =~# "^Link"')[0]
return split(matchstr(i,'=\d\+',0,2),'=')[0]
endif
return 0
endfunction endfunction
function! github#api#users#GetStarred(user) abort function! github#api#users#GetStarred(user) abort
let rel = [] let rel = []
let pages = github#api#users#starred_pages(a:user) let pages = github#api#users#starred_pages(a:user)
for page in range(1,pages) for page in range(1,pages)
let repos = github#api#users#starred(a:user, page) let repos = github#api#users#starred(a:user, page)
for repo in repos for repo in repos
call add(rel, repo) call add(rel, repo)
endfor
endfor endfor
return rel endfor
return rel
endfunction endfunction
" get a single user " get a single user
" GET /users/:username " GET /users/:username
function! github#api#users#GetUser(username) abort function! github#api#users#GetUser(username) abort
return github#api#util#Get('users/' . a:username, []) return github#api#util#Get('users/' . a:username, [])
endfunction endfunction
"List followers of a user "List followers of a user
"GET /users/:username/followers "GET /users/:username/followers
function! github#api#users#ListFollowers(username) abort function! github#api#users#ListFollowers(username) abort
let followers = [] let followers = []
for i in range(1,github#api#util#GetLastPage('users/' . a:username . '/followers')) for i in range(1,github#api#util#GetLastPage('users/' . a:username . '/followers'))
call extend(followers,github#api#util#Get('users/' . a:username . '/followers?page=' . i, [])) call extend(followers,github#api#util#Get('users/' . a:username . '/followers?page=' . i, []))
endfor endfor
return followers return followers
endfunction endfunction
"List users followed by another user "List users followed by another user
"GET /users/:username/following "GET /users/:username/following
function! github#api#users#ListFollowing(username) abort function! github#api#users#ListFollowing(username) abort
let following = [] let following = []
for i in range(1,github#api#util#GetLastPage('users/' . a:username . '/following')) for i in range(1,github#api#util#GetLastPage('users/' . a:username . '/following'))
call extend(following,github#api#util#Get('users/' . a:username . '/following?page=' . i, [])) call extend(following,github#api#util#Get('users/' . a:username . '/following?page=' . i, []))
endfor endfor
return following return following
endfunction endfunction
"" ""
@ -62,7 +66,7 @@ endfunction
" "
" Github API : /users/:username/orgs " Github API : /users/:username/orgs
function! github#api#users#ListAllOrgs(user) abort function! github#api#users#ListAllOrgs(user) abort
return github#api#util#Get(join(['users', a:user, 'orgs'], '/')) return github#api#util#Get(join(['users', a:user, 'orgs'], '/'))
endfunction endfunction
"" ""
@ -71,5 +75,5 @@ endfunction
" "
" Github API : GET /users/:username/following/:target_user " Github API : GET /users/:username/following/:target_user
function! github#api#users#CheckTargetFollow(username,target) abort function! github#api#users#CheckTargetFollow(username,target) abort
return github#api#util#GetStatus(join(['users', a:username, 'following', a:target], '/'),[]) return github#api#util#GetStatus(join(['users', a:username, 'following', a:target], '/'),[])
endfunction endfunction