Awesome
gh-api-cli
Package gh-api-cli is a command line utility to work with github api.
This tool is part of the go-github-release workflow
TOC
Install
Check the release page!
Glide
mkdir -p $GOPATH/src/github.com/mh-cbon/gh-api-cli
cd $GOPATH/src/github.com/mh-cbon/gh-api-cli
git clone https://github.com/mh-cbon/gh-api-cli.git .
glide install
go install
Bintray
choco source add -n=mh-cbon -s="https://api.bintray.com/nuget/mh-cbon/choco"
choco install gh-api-cli
Chocolatey
choco install gh-api-cli
linux rpm/deb repository
wget -O - https://raw.githubusercontent.com/mh-cbon/latest/master/bintray.sh \
| GH=mh-cbon/gh-api-cli sh -xe
# or
curl -L https://raw.githubusercontent.com/mh-cbon/latest/master/bintray.sh \
| GH=mh-cbon/gh-api-cli sh -xe
linux rpm/deb standalone package
curl -L https://raw.githubusercontent.com/mh-cbon/latest/master/install.sh \
| GH=mh-cbon/gh-api-cli sh -xe
# or
wget -q -O - --no-check-certificate \
https://raw.githubusercontent.com/mh-cbon/latest/master/install.sh \
| GH=mh-cbon/gh-api-cli sh -xe
Cli
gh-api-cli -help
NAME:
gh-api-cli - Github api command line client
USAGE:
gh-api-cli <cmd> <options>
VERSION:
0.0.0
COMMANDS:
add-auth Add a new authorization
list-auth List authorizations
rm-auth Remove an authorization
get-auth Get token from a locally saved authorization
create-release Create a release
rm-release Delete a release
upload-release-asset Upload assets to a release
dl-assets Download assets
rm-assets Delete assets
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
gh-api-cli add-auth -help
NAME:
gh-api-cli add-auth - Add a new authorization
USAGE:
gh-api-cli add-auth [command options] [arguments...]
OPTIONS:
--username value, -u value Github username
--password value, -p value Github password
--name value, -n value Name of the authorization to create
--rights value, -r value Permissions to set
EXAMPLE
gh-api-cli add-auth -n test -r user -r repo # will prompt for username/password
gh-api-cli add-auth -n test -r user -u your -p pwd # won t prompt unless you have 2F ident on
gh-api-cli add-auth -n test -r user,repo -u your -p pwd
Where rights
contains some of :
Name | - | - |
---|---|---|
user | user:email | user:follow |
public_repo | repo | repo_deployment |
notifications | repo:status | delete_repo |
gist | read:repo_hook | write:repo_hook |
admin:org_hook | read:org | write:org |
admin | admin:org | admin:repo_hook |
admin:public_key | read:public_key | write:public_key |
read:gpg_key | write:gpg_key | admin:gpg_key |
gh-api-cli list-auth -help
NAME:
gh-api-cli list-auth - List authorizations
USAGE:
gh-api-cli list-auth [command options] [arguments...]
OPTIONS:
--username value, -u value Github username
--password value, -p value Github password
EXAMPLE
gh-api-cli list-auth -n test # will prompt for username/password
gh-api-cli list-auth -n test -u your -p pwd # won t prompt unless you have 2F ident on
gh-api-cli rm-auth -help
NAME:
gh-api-cli rm-auth - Remove an authorization
USAGE:
gh-api-cli rm-auth [command options] [arguments...]
OPTIONS:
--username value, -u value Github username
--password value, -p value Github password
--name value, -n value Name of the authorization to delete
EXAMPLE
gh-api-cli rm-auth -n test # will prompt for username/password
gh-api-cli rm-auth -n test -u your -p pwd # won t prompt unless you have 2F ident on
gh-api-cli get-auth -help
NAME:
gh-api-cli get-auth - Get token from a locally saved authorization
USAGE:
gh-api-cli get-auth [command options] [arguments...]
OPTIONS:
--name value, -n value Name of the authorization
EXAMPLE
gh-api-cli get-auth -n test
gh-api-cli create-release -help
NAME:
gh-api-cli create-release - Create a release
USAGE:
gh-api-cli create-release [command options] [arguments...]
OPTIONS:
--name value, -n value Name of the authorization to use for identification
--token value, -t value Value of a personal access token
--owner value, -o value Repository owner
--repository value, -r value Repository name
--guess Guess repository and user name from the cwd
--ver value Version name
--author value, -a value Release author github username
--draft value, -d value Make a draft release (default: "no")
--changelog value, -c value A command to generate the description body of the release
EXAMPLE
gh-api-cli create-release -n test -o mh-cbon -r gh-api-cli --ver 0.0.1
gh-api-cli create-release -n test --guess --ver 0.0.1
gh-api-cli rm-release -help
NAME:
gh-api-cli rm-release - Delete a release
USAGE:
gh-api-cli rm-release [command options] [arguments...]
OPTIONS:
--name value, -n value Name of the authorization to use for identification
--token value, -t value Value of a personal access token
--owner value, -o value Repository owner
--repository value, -r value Repository name
--guess Guess repository and user name from the cwd
--ver value Version name
EXAMPLE
gh-api-cli rm-release -n test -o mh-cbon -r gh-api-cli --ver 0.0.1
gh-api-cli rm-release -n test --guess --ver 0.0.1
gh-api-cli upload-release-asset -help
NAME:
gh-api-cli upload-release-asset - Upload assets to a release
USAGE:
gh-api-cli upload-release-asset [command options] [arguments...]
OPTIONS:
--name value, -n value Name of the authorization to use for identification
--token value, -t value Value of a personal access token
--glob value, -g value Glob pattern of files to upload
--owner value, -o value Repository owner
--repository value, -r value Repository name
--guess Guess repository and user name from the cwd
--ver value Version name
EXAMPLE
gh-api-cli upload-release-asset -n test -g README.md -o mh-cbon -r gh-api-cli --ver 0.0.1
gh-api-cli upload-release-asset -n test -g README.md --guess --ver 0.0.1
gh-api-cli rm-assets -help
NAME:
gh-api-cli rm-assets - Delete assets
USAGE:
gh-api-cli rm-assets [command options] [arguments...]
OPTIONS:
--name value, -n value Name of the authorization to use for identification
--token value, -t value Value of a personal access token
--glob value, -g value Glob pattern of files to download
--owner value, -o value Repository owner
--repository value, -r value Repository name
--guess Guess repository and user name from the cwd
--ver value Version constraint
EXAMPLE
gh-api-cli rm-assets -n test --glob file.package -o mh-cbon -r gh-api-cli --ver 0.0.1
gh-api-cli rm-assets -n test -g file.package --guess --ver 0.0.1
gh-api-cli dl-assets -help
NAME:
gh-api-cli dl-assets - Download assets
USAGE:
gh-api-cli dl-assets [command options] [arguments...]
OPTIONS:
--name value, -n value Name of the authorization to use for identification
--token value, -t value Value of a personal access token
--glob value, -g value Glob pattern of files to download
--out value Out format to write files (default: "%f")
--owner value, -o value Repository owner
--repository value, -r value Repository name
--guess Guess repository and user name from the cwd
--ver value Version constraint
--skip-prerelease value Skip prerelease releases (yes|no) (default: "no")
EXAMPLE
gh-api-cli dl-assets -o mh-cbon -r gh-api-cli --ver 4.x --out "dl/%r.%v-%a.%e"
gh-api-cli dl-assets -o mh-cbon -r gh-api-cli --ver 0.0.1 --out dl/%f
gh-api-cli dl-assets -o mh-cbon -r gh-api-cli --ver 0.0.1 --out dl/%f -g '*amd64*deb'
gh-api-cli dl-assets -o mh-cbon -r gh-api-cli --ver latest --out dl/%s/%r.%v-%a.%e
gh-api-cli dl-assets -o mh-cbon -r gh-api-cli --out "dl/%s/%r-%v-%a.%e" --ver ">0.0.10"
Notes
When you add, remove, list
authorizations, personal access token authentication is not permitted, see this
You are required to use a password.
Todo
- add a command to clean up old gh releases, something that would help to keep only N most recent releases for each major version.
Recipes
Testing
(USER=xxx PWRD=yyy ./test.sh | grep "OK, ALL FINE") || (echo "" && echo "" && echo "beep boop failed")
Release the project
gump patch -d # check
gump patch # bump