HasBin ====== Check whether a binary exists in the `PATH` environment variable. [![NPM version][shield-npm]][info-npm] [![Node.js version support][shield-node]][info-node] [![Build status][shield-build]][info-build] [![Dependencies][shield-dependencies]][info-dependencies] [![MIT licensed][shield-license]][info-license] ```js var hasbin = require('hasbin'); // Check if a binary exists hasbin('node', function (result) { // result === true }); hasbin('wtf', function (result) { // result === false }); // Check if all binaries exist hasbin.all(['node', 'npm'], function (result) { // result === true }); // Check if at least one binary exists hasbin.some(['node', 'wtf'], function (result) { // result === true }); // Find the first available binary hasbin.first(['node', 'npm'], function (result) { // result === 'node' }); ``` Table Of Contents ----------------- - [Install](#install) - [Usage](#usage) - [Contributing](#contributing) - [License](#license) Install ------- Install HasBin with [npm][npm]: ```sh npm install hasbin ``` Usage ----- ### `hasbin(binaryName, callback)` Check whether a binary exists on one of the paths in `process.env.PATH`. Calls back with `true` if it does. ```js // Arguments binaryName = String callback = Function(Boolean) ``` ```js // Example hasbin('node', function (result) { // result === true }); ``` ### `hasbin.sync(binaryName)` Synchronous `hasbin`. ```js // Arguments binaryName = String return Boolean ``` ```js // Example result = hasbin.sync('node'); ``` ### `hasbin.all(binaryNames, callback)` Check whether all of a set of binaries exist on one of the paths in `process.env.PATH`. Calls back with `true` if all of the binaries do. Aliased as `hasbin.every`. ```js // Arguments binaryNames = Array(String) callback = Function(Boolean) ``` ```js // Example hasbin.all(['node', 'npm'], function (result) { // result === true }); ``` ### `hasbin.all.sync(binaryNames)` Synchronous `hasbin.all`. Aliased as `hasbin.every.sync`. ```js // Arguments binaryNames = Array(String) return Boolean ``` ```js // Example result = hasbin.all.sync(['node', 'npm']); ``` ### `hasbin.some(binaryNames, callback)` Check whether at least one of a set of binaries exists on one of the paths in `process.env.PATH`. Calls back with `true` if at least one of the binaries does. Aliased as `hasbin.any`. ```js // Arguments binaryNames = Array(String) callback = Function(Boolean) ``` ```js // Example hasbin.some(['node', 'npm'], function (result) { // result === true }); ``` ### `hasbin.some.sync(binaryNames)` Synchronous `hasbin.some`. Aliased as `hasbin.any.sync`. ```js // Arguments binaryNames = Array(String) return Boolean ``` ```js // Example result = hasbin.some.sync(['node', 'npm']); ``` ### `hasbin.first(binaryNames, callback)` Checks the list of `binaryNames` to find the first binary that exists on one of the paths in `process.env.PATH`. Calls back with the name of the first matched binary if one exists and `false` otherwise. ```js // Arguments binaryNames = Array(String) callback = Function(String|false) ``` ```js // Example hasbin.first(['node', 'npm'], function (result) { // result === 'node' }); ``` ### `hasbin.first.sync(binaryNames)` Synchronous `hasbin.first`. ```js // Arguments binaryNames = Array(String) return String|false ``` ```js // Example result = hasbin.first.sync(['node', 'npm']); ``` Contributing ------------ To contribute to HasBin, clone this repo locally and commit your code on a separate branch. Please write unit tests for your code, and check that everything works by running the following before opening a pull-request: ```sh make ci ``` License ------- HasBin is licensed under the [MIT][info-license] license. Copyright © 2015, Springer Nature [npm]: https://npmjs.org/ [info-coverage]: https://coveralls.io/github/springernature/hasbin [info-dependencies]: https://gemnasium.com/springernature/hasbin [info-license]: LICENSE [info-node]: package.json [info-npm]: https://www.npmjs.com/package/hasbin [info-build]: https://travis-ci.org/springernature/hasbin [shield-coverage]: https://img.shields.io/coveralls/springernature/hasbin.svg [shield-dependencies]: https://img.shields.io/gemnasium/springernature/hasbin.svg [shield-license]: https://img.shields.io/badge/license-MIT-blue.svg [shield-node]: https://img.shields.io/badge/node.js%20support-0.10–6-brightgreen.svg [shield-npm]: https://img.shields.io/npm/v/hasbin.svg [shield-build]: https://img.shields.io/travis/springernature/hasbin/master.svg