Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vermiculus/ghub-plus

Wrappers for GitHub API resources built on ghub
https://github.com/vermiculus/ghub-plus

api-wrapper emacs github

Last synced: 3 months ago
JSON representation

Wrappers for GitHub API resources built on ghub

Awesome Lists containing this project

README

        

#+Title: GHub+ [[https://travis-ci.org/vermiculus/ghub-plus][https://travis-ci.org/vermiculus/ghub-plus.svg?branch=master]] [[https://melpa.org/#/ghub%2B][file:https://melpa.org/packages/ghub+-badge.svg]]

GHub+ is a thick GitHub API client built using =API-Wrap.el= on =ghub=,
[[https://github.com/tarsius/ghub][the minuscule GitHub API client]].

* Tour by Example
#+BEGIN_SRC elisp
;;; GET /issues
(ghubp-get-issues)

;;; GET /issues?state=closed
(ghubp-get-issues :state 'closed)

(let ((repo (ghub-get "/repos/magit/magit")))
(list
;; Magit's issues
;; GET /repos/magit/magit/issues
(ghubp-get-repos-owner-repo-issues repo)

;; Magit's closed issues labeled 'easy'
;; GET /repos/magit/magit/issues?state=closed&labels=easy
(ghubp-get-repos-owner-repo-issues repo
:state 'closed :labels "easy")))
#+END_SRC

* Contributing
:PROPERTIES:
:ID: 1F4644C5-72AC-49DA-A83C-443AA7F9651E
:END:
Contributions should be made via pull-request. When it makes sense,
be sure your addition works when passing around object-alists.

* Introduction
This package is a thick client built on =ghub=, the miniscule GitHub
client. Its aim is to provide the common functionality most helpful
for application development.

Since =ghub+= is built on =ghub=, any and all features you find lacking in
=ghub+= can be done with =ghub= without needing to dig into either
package's internals. However, =ghub+= provides some macros you may find
helpful in development; see [[id:7208D9BD-1524-4701-A061-70861C5376DA][Extending]] for details. If you find your
function to be particularly helpful or believe it to be a common use
case, please consider [[id:1F4644C5-72AC-49DA-A83C-443AA7F9651E][contributing]] it to the library!

* Extending
:PROPERTIES:
:ID: 7208D9BD-1524-4701-A061-70861C5376DA
:END:
To simplify application development, tools have been developed to
shorten repetitive syntax and provide useful syntax for common
problems that might not otherwise have good, succinct solutions.

** ~(ghubp-unpaginate &rest BODY)~
Wraps the form in a let-binding where ~ghub-unpaginate~ is ~t~. Forms
executed here will continue to poll the API until all output has been
received.

** ~(defapi{get,put,head,post,patch,delete}-ghubp ...)~
These wonderful macros super-charge the standard ~ghub-{get,put,...}~
functions into documentation-generating, resource-wrapping machines.
Refer to their documentation or see [[https://github.com/vermiculus/apiwrap.el#using-the-generated-macros][apiwrap.el]] for a short tutorial in
using these macros.
# Local Variables:
# org-id-link-to-org-use-id: t
# End: