Originally Ghub supported only Github but now it also supports Gitlab,
Gitea, Gogs and Bitbucket. For the historic reason just given, the
ghub-request defaults to acting on a
github forge, but can
be told to act on another forge using the FORGE argument.
The FORGE argument only specifies what kind of forge to act on, not which instance. The HOST argument can be used to select the instance. For some forges a default instance is defined:
githubdefaults to host
gitlabdefaults to host
bitbucketdefaults to host
localhost:3000/api/v1is used as the default host in both cases.
Together the FORGE and HOST arguments specify the forge type and instance. In addition to that, it is also necessary to specify on whose behalf the request is being made, which can be done using the USERNAME and AUTH arguments. For example:
(ghub-request "GET" "/user" nil :forge 'github :host "api.github.com" :username "tarsius" :auth 'forge)
Having to specify these arguments for every request is inconvenient. Additional variables and convenience functions can be used to make that unnecessary in most cases.
(But for debugging purposes the above explicit form is very useful.
You will obviously have to change the value of USERNAME and you should
ghub as AUTH when first trying this at home.)
These variables can be set globally and/or for a specific repository.
github.userspecifies the user.
githubinstance the Git variable
github.HOST.userspecifies the user. The HOST in that variable name is the same as the value of the HOST argument of the called function.
github.hostcan be used. This should only be set locally.
github specific variables are discussed in more detail in
Github Configuration Variables.
bitbucket forges similar variables are available:
gitlab.userspecifies the https://gitlab.com user.
gitlab.HOST.userspecifies the user for the HOST
gitlabhost, unless the HOST argument is non-nil
bitbucket.userspecifies the https://bitbucket.org user.
bitbucket.HOST.userspecifies the user for the HOST
bitbuckethost, unless the HOST argument is non-nil.
gogs forges some similar variables are available,
however for some of the
ghub.* variables no equivalent variable exist
for these two forges:
gitea.useris not used because no canonical
gitea.HOST.userspecifies the user for the HOST
giteahost, unless the HOST argument is non-nil
gogs.useris not used because no canonical
gogs.HOST.userspecifies the user for the HOST
gogshost, unless the HOST argument is non-nil