diff --git a/README.md b/README.md index 64ae01f..ef36c10 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ module.exports = binwrap({ binaries: [ "myapp-cli" ], + binariesPath: 'in case your binaries are nested inside the unpacked folder' urls: { "darwin-x64": root + "/mac-x64.tgz", "linux-x64": root + "/linux-x64.tgz", diff --git a/binstub.js.mustache b/binstub.js.mustache index e81bf3e..bd28056 100644 --- a/binstub.js.mustache +++ b/binstub.js.mustache @@ -17,7 +17,7 @@ if (os == "win32") { binExt = ".exe"; } -var unpackedBinPath = path.join(__dirname, "..", "unpacked_bin"); +var unpackedBinPath = path.join(__dirname, "..", "unpacked_bin", "{{ binariesPath }}"); var binPath = path.join(unpackedBinPath, "{{ binName }}" + binExt); function execBin() { diff --git a/install.js b/install.js index 05b145e..60af8bc 100644 --- a/install.js +++ b/install.js @@ -14,11 +14,16 @@ module.exports = function install(config, unpackedBinPath, os, arch) { var buildId = os + "-" + arch; var url = config.urls[buildId]; + if (!url) { throw new Error("No binaries are available for your platform: " + buildId); } return binstall(url, unpackedBinPath).then(function() { config.binaries.forEach(function(bin) { + if (config.binariesPath) { + unpackedBinPath = path.join(unpackedBinPath, config.binariesPath); + } + fs.chmodSync(path.join(unpackedBinPath, bin + binExt), "755"); }); }); diff --git a/prepare.js b/prepare.js index 551d32a..14fc412 100644 --- a/prepare.js +++ b/prepare.js @@ -11,7 +11,7 @@ module.exports = function prepare(config) { config.binaries.forEach(function(bin) { var binPath = path.join("bin", bin); - var content = mustache.render(binstubTemplate, { binName: bin }); + var content = mustache.render(binstubTemplate, { binName: bin, binariesPath: config.binariesPath }); fs.writeFileSync(binPath, content); fs.chmodSync(binPath, "755"); });