@kgryte/github-repos
v1.0.0
Published
Queries Github for all top-level repository data to which a user has access.
Downloads
12
Maintainers
Readme
Github Repos
Queries Github for all top-level repository data to which a user has access.
Installation
$ npm install @kgryte/github-repos
For use in the browser, use browserify.
Usage
var getRepos = require( '@kgryte/github-repos' );
getRepos( token[, opts])
Creates a new Query
instance for querying Github for all top-level repository data to which a user has access.
var token = 'tkjorjk34ek3nj4!';
var query = getRepos( token );
query.on( 'data', onData );
function onData( evt ) {
console.log( evt.data );
// returns [{...},{...},...]
}
The function
accepts the following options
:
interval: positive
number
defining a poll interval for repeatedly querying the Github API. The interval should be in units ofmilliseconds
. If aninterval
is not provided, only a single query is made to the Github API.var query, token, opts; token = 'tkjorjk34ek3nj4!'; opts = { 'interval': 600000 // 10 minutes }; // Every 10 minutes, fetch the list of repos... query = getRepos( token, opts ); query.on( 'data', onData ); function onData( evt ) { console.log( evt.data ); // returns [{...},{...},...] }
Notes
- This
function
is a light wrapper around github-get. The returnedQuery
instance has the exact same API, meaning that allQuery
attributes, methods, and events are available. See github-get for full documentation.
Examples
var getRepos = require( '@kgryte/github-repos' );
var token,
opts;
token = 'tkjorjk34ek3nj4!';
opts = {
'interval': 10000 // ms
};
function onError( evt ) {
console.error( evt );
}
function onRequest( evt ) {
console.log( evt );
}
function onPage( evt ) {
var pct = evt.count / evt.total * 100;
console.log( 'Query %d progress: %d%.' , evt.qid, Math.round( pct ) );
}
function onData( evt ) {
console.log( evt.data );
}
function onEnd( evt ) {
console.log( 'Query %d ended...', evt.qid );
console.dir( evt.ratelimit );
}
var query = getRepos( token, opts );
query.on( 'error', onError );
query.on( 'request', onRequest );
query.on( 'page', onPage );
query.on( 'data', onData );
query.on( 'end', onEnd );
// Stop polling after 60 seconds...
setTimeout( function stop() {
query.stop();
}, 60000 );
To run the example code from the top-level application directory,
$ node ./examples/index.js
Note: in order to run the example, you will need to obtain a personal access token and modify the token
value accordingly.
CLI
Installation
To use the module as a general utility, install the module globally
$ npm install -g @kgryte/github-repos
Usage
Usage: github-repos [options]
Options:
-h, --help Print this message.
-V, --version Print the package version.
--token [token] Github personal access token.
--interval [ms] Poll interval (in milliseconds).
Notes
- In addition to the command-line
token
option, the token may also be specified by aGITHUB_TOKEN
environment variable. The command-line option always takes precedence. - If the process receives a terminating signal event (e.g.,
CTRL+C
) while polling a Github API endpoint, the process will stop polling and wait for any pending requests to complete before exiting.
Examples
Setting the personal access token using the command-line option:
$ github-repos --token <token>
# => '[{..},{..},...]'
Setting the personal access token using an environment variable:
$ GITHUB_TOKEN=<token> github-repos --interval 60000
# => '[{...},{...},...]'
For local installations, modify the command to point to the local installation directory; e.g.,
$ ./node_modules/.bin/github-repos --token <token>
Or, if you have cloned this repository and run npm install
, modify the command to point to the executable; e.g.,
$ node ./bin/cli --token <token>
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
Copyright
Copyright © 2015. Athan Reines.