shields-badge-url-david
v1.0.0
Published
Creates Shields.io badge URLs for David.
Downloads
5
Maintainers
Readme
David Badge URLs
Creates Shields.io badge URLs for David.
Installation
$ npm install shields-badge-url-david
Usage
var urls = require( 'shields-badge-url-david' );
urls( opts )
Creates Shields.io badge URLs for David.
var opts = {
'owner': 'dstructs',
'repo': 'matrix'
};
var out = urls( opts );
/*
{
"image": "https://img.shields.io/david/dstructs/matrix.svg?style=flat",
"url": "https://david-dm.org/dstructs/matrix"
}
*/
The function
accepts the following options
:
- owner: repository owner (required).
- repo: repository name (required).
- deps: dependency type. Supported types:
main
: main dependencies (default)dev
: development dependenciespeer
: peer dependenciesoptional
: optional dependenciesbundled
: bundled dependencies
- style: badge style. Default:
flat
. - format: badge format. Default:
svg
.
The default dependency type is main
. To create badge URLs for developer dependencies, set the deps
option.
var opts = {
'owner': 'dstructs',
'repo': 'array',
'deps': 'dev'
};
var out = urls( opts );
/*
{
"image": "https://img.shields.io/david/dev/dstructs/array.svg?style=flat",
"url": "https://david-dm.org/dstructs/array#info=devDependencies"
}
*/
Examples
var getKeys = require( 'object-keys' ).shim();
var url = require( 'url' );
var list = require( 'npm-list-author-packages' );
var repoUrls = require( 'npm-repo-url' );
var badgeUrls = require( 'shields-badge-url-david' );
// Generate badge URLs for all of an author's packages...
list( {'username': 'kgryte'}, onList );
function onList( error, list ) {
var opts;
if ( error ) {
throw error;
}
if ( !list.length ) {
return;
}
opts = {
'packages': list
};
repoUrls( opts, onUrls );
}
function onUrls( error, results ) {
var badge;
var parts;
var urls;
var pkgs;
var path;
var i;
if ( error ) {
throw error;
}
urls = results.data;
pkgs = getKeys( urls );
// Note: we assume all repository URLs are of the form: git://github.com/{{owner}}/{{repo}}.git
for ( i = 0; i < pkgs.length; i++ ) {
parts = url.parse( urls[ pkgs[i] ] );
path = parts.pathname.split( '/' );
badge = badgeUrls({
'owner': path[ 1 ],
'repo': path[ 2 ].slice( 0, -4 )
});
console.log( badge );
}
}
To run the example code from the top-level application directory,
$ node ./examples/index.js
CLI
Installation
To use the module as a general utility, install the module globally
$ npm install -g shields-badge-url-david
Usage
Usage: shields-david --owner=<owner> --repo=<repo> [options]
Options:
-h, --help Print this message.
-V, --version Print the package version.
--owner owner Repository owner.
--repo repo Repository name.
--deps deps Dependency type; e.g., 'dev', 'peer', etc.
--style style Badge style. Default: 'flat'.
--format format Badge format. Default: 'svg'.
Examples
$ shields-david --owner=dstructs --repo=matrix
# => {"image":"https://img.shields.io/david/dstructs/matrix.svg?style=flat","url":"https://david-dm.org/dstructs/matrix"}
Tests
Unit
This repository uses tape for unit tests. 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
Browser Support
This repository uses Testling for browser testing. To run the tests in a (headless) local web browser, execute the following command in the top-level application directory:
$ make test-browsers
To view the tests in a local web browser,
$ make view-browser-tests
License
Copyright
Copyright © 2016. Athan Reines.