diff --git a/node_modules/bin-check/index.js b/node_modules/bin-check/index.js
new file mode 100644
index 0000000..49100bd
--- /dev/null
+++ b/node_modules/bin-check/index.js
@@ -0,0 +1,31 @@
+'use strict';
+const execa = require('execa');
+const executable = require('executable');
+
+module.exports = (bin, args) => {
+	if (!Array.isArray(args)) {
+		args = ['--help'];
+	}
+
+	return executable(bin)
+		.then(works => {
+			if (!works) {
+				throw new Error(`Couldn't execute the \`${bin}\` binary. Make sure it has the right permissions.`);
+			}
+
+			return execa(bin, args);
+		})
+		.then(res => res.code === 0);
+};
+
+module.exports.sync = (bin, args) => {
+	if (!Array.isArray(args)) {
+		args = ['--help'];
+	}
+
+	if (!executable.sync(bin)) {
+		throw new Error(`Couldn't execute the \`${bin}\` binary. Make sure it has the right permissions.`);
+	}
+
+	return execa.sync(bin, args).status === 0;
+};
diff --git a/node_modules/bin-check/license b/node_modules/bin-check/license
new file mode 100644
index 0000000..e0e9158
--- /dev/null
+++ b/node_modules/bin-check/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Kevin Mårtensson <kevinmartensson@gmail.com> (github.com/kevva)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/bin-check/package.json b/node_modules/bin-check/package.json
new file mode 100644
index 0000000..142e78a
--- /dev/null
+++ b/node_modules/bin-check/package.json
@@ -0,0 +1,67 @@
+{
+  "_from": "bin-check@^4.1.0",
+  "_id": "bin-check@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==",
+  "_location": "/bin-check",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "bin-check@^4.1.0",
+    "name": "bin-check",
+    "escapedName": "bin-check",
+    "rawSpec": "^4.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.1.0"
+  },
+  "_requiredBy": [
+    "/bin-wrapper"
+  ],
+  "_resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz",
+  "_shasum": "fc495970bdc88bb1d5a35fc17e65c4a149fc4a49",
+  "_spec": "bin-check@^4.1.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\bin-wrapper",
+  "author": {
+    "name": "Kevin Mårtensson",
+    "email": "kevinmartensson@gmail.com",
+    "url": "https://github.com/kevva"
+  },
+  "bugs": {
+    "url": "https://github.com/kevva/bin-check/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "execa": "^0.7.0",
+    "executable": "^4.1.0"
+  },
+  "deprecated": false,
+  "description": "Check if a binary is working",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/kevva/bin-check#readme",
+  "keywords": [
+    "binary",
+    "check",
+    "executable",
+    "test"
+  ],
+  "license": "MIT",
+  "name": "bin-check",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kevva/bin-check.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "4.1.0"
+}
diff --git a/node_modules/bin-check/readme.md b/node_modules/bin-check/readme.md
new file mode 100644
index 0000000..111f1f2
--- /dev/null
+++ b/node_modules/bin-check/readme.md
@@ -0,0 +1,51 @@
+# bin-check [![Build Status](https://travis-ci.org/kevva/bin-check.svg?branch=master)](https://travis-ci.org/kevva/bin-check)
+
+> Check if a binary is working by checking its exit code
+
+
+## Install
+
+```
+$ npm install bin-check
+```
+
+
+## Usage
+
+```js
+const binCheck = require('bin-check');
+
+binCheck('/bin/sh', ['--version']).then(works => {
+	console.log(works);
+	//=> true
+});
+```
+
+
+## API
+
+### binCheck(binary, [arguments])
+
+Returns a `Promise` for a `boolean`.
+
+### binCheck.sync(binary, [arguments])
+
+Returns a `boolean`.
+
+#### binary
+
+Type: `string`
+
+Path to the binary.
+
+#### arguments
+
+Type: `Array`<br>
+Default: `['--help']`
+
+Arguments to run the binary with.
+
+
+## License
+
+MIT © [Kevin Mårtensson](https://github.com/kevva)
