You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

225 lines
4.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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.106-brightgreen.svg
[shield-npm]: https://img.shields.io/npm/v/hasbin.svg
[shield-build]: https://img.shields.io/travis/springernature/hasbin/master.svg