diff --git a/npm/install.js b/npm/install.js index 11acf59..d24348a 100644 --- a/npm/install.js +++ b/npm/install.js @@ -5,7 +5,8 @@ const request = require('request'), os = require('os'), fs = require('fs'), - exec = require('child_process').exec, + path = require('path'), + cp = require('child_process'), packageJson = require('./package.json'); // Mapping from Node's `process.arch` to Golang's `$GOARCH` @@ -30,7 +31,8 @@ const platform = process.platform; const arch = process.arch; const binaryName = platform === 'win32' ? `${name}.ext` : name; const tarUrl = `https://github.com/adikari/safebox/releases/download/v${version}/safebox_${version}_${platform}_${arch}.tar.gz`; -const nodeModulesBin = './node_modules/.bin'; + +const nodeBin = cp.execSync("npm bin").toString().replace(/\r?\n|\r/g, ""); const error = msg => { console.error(msg); @@ -47,14 +49,6 @@ if (!(platform in PLATFORM_MAPPING)) { return; } -const ensureDir = dir => { - if (!fs.existsSync(dir)) { - fs.mkdirSync(dir); - } - - return dir; -}; - const install = () => { const tmpdir = os.tmpdir(); const req = request({ uri: tarUrl }); @@ -64,20 +58,15 @@ const install = () => { req.on('response', res => { if (res.statusCode !== 200) { - return callback('Error downloading safebox binary. HTTP Status Code: ' + res.statusCode); + return callback(`Error downloading safebox binary. HTTP Status Code: ${res.statusCode}`); } req.pipe(download); }); req.on('complete', () => { - exec(`tar -xf ${tarFile} -C ${tmpdir}`, error => { - if (error) { - error(`error: ${error.message}`); - } - const dest = ensureDir(nodeModulesBin); - fs.copyFileSync(`${tmpdir}/${binaryName}`, `${dest}/${binaryName}`); - }); + cp.execSync(`tar -xf ${tarFile} -C ${tmpdir}`); + fs.copyFileSync(path.join(tmpdir, binaryName), path.join(nodeBin, binaryName)); }); }; diff --git a/npm/package-lock.json b/npm/package-lock.json index f7373a2..e0aa831 100644 --- a/npm/package-lock.json +++ b/npm/package-lock.json @@ -1,12 +1,12 @@ { "name": "@adikari/safebox", - "version": "1.1.1", + "version": "1.1.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@adikari/safebox", - "version": "1.1.1", + "version": "1.1.2", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/npm/package.json b/npm/package.json index e82bc62..1733a9a 100644 --- a/npm/package.json +++ b/npm/package.json @@ -1,6 +1,6 @@ { "name": "@adikari/safebox", - "version": "1.1.2", + "version": "1.1.3", "description": "A Fast and Flexible secret manager built with love by adikari in Go", "main": "index.js", "scripts": {