@kgryte/github-repos

1.0.0 • Public • Published

Github Repos

NPM version Build Status Coverage Status Dependencies

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 of milliseconds. If an interval 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 returned Query instance has the exact same API, meaning that all Query 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 a GITHUB_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

MIT license.

Copyright

Copyright © 2015. Athan Reines.

Package Sidebar

Install

npm i @kgryte/github-repos

Weekly Downloads

0

Version

1.0.0

License

none

Last publish

Collaborators

  • kgryte