diff --git a/cli.js b/cli.js index fd9c334..a01e653 100755 --- a/cli.js +++ b/cli.js @@ -1,6 +1,6 @@ #!/usr/bin/env node var fs = require('fs') -var args = require('minimist')(process.argv.slice(2), {boolean: ['prune', 'asar']}) +var args = require('minimist')(process.argv.slice(2), {boolean: ['prune', 'asar', 'overwrite']}) var packager = require('./') var usage = fs.readFileSync(__dirname + '/usage.txt').toString() diff --git a/linux.js b/linux.js index 7622fa3..ca1afb6 100644 --- a/linux.js +++ b/linux.js @@ -2,6 +2,7 @@ var path = require('path') var fs = require('fs') var mkdirp = require('mkdirp') var ncp = require('ncp').ncp +var rimraf = require('rimraf') var common = require('./common') module.exports = { @@ -12,10 +13,25 @@ module.exports = { var finalBinary = path.join(finalDir, opts.name) function copyApp () { - mkdirp(finalDir, function AppFolderCreated (err) { + var createApp = function (err) { if (err) return cb(err) - copyAppTemplate() - }) + mkdirp(finalDir, function AppFolderCreated (err) { + if (err) return cb(err) + copyAppTemplate() + }) + } + if (opts.overwrite) { + fs.exists(finalDir, function (exists) { + if (exists) { + console.log('Overwriting existing ' + finalDir + ' ...') + rimraf(finalDir, createApp) + } else { + createApp() + } + }) + } else { + createApp() + } } function copyAppTemplate () { diff --git a/mac.js b/mac.js index 4214324..9a9db15 100644 --- a/mac.js +++ b/mac.js @@ -80,24 +80,40 @@ function buildMacApp (opts, cb, newApp) { mkdirp(outdir, function mkoutdirp () { if (err) return cb(err) - mv(newApp, finalPath, function moved (err) { + if (opts.overwrite) { + fs.exists(finalPath, function (exists) { + if (exists) { + console.log('Overwriting existing ' + finalPath + ' ...') + rimraf(finalPath, deploy) + } else { + deploy() + } + }) + } else { + deploy() + } + + function deploy (err) { if (err) return cb(err) - if (opts.asar) { - var finalPath = path.join(opts.out || process.cwd(), opts.name + '.app', 'Contents', 'Resources') - common.asarApp(finalPath, function (err) { - if (err) return cb(err) + mv(newApp, finalPath, function moved (err) { + if (err) return cb(err) + if (opts.asar) { + var finalPath = path.join(opts.out || process.cwd(), opts.name + '.app', 'Contents', 'Resources') + common.asarApp(finalPath, function (err) { + if (err) return cb(err) + updateMacIcon(function (err) { + if (err) return cb(err) + codesign() + }) + }) + } else { updateMacIcon(function (err) { if (err) return cb(err) codesign() }) - }) - } else { - updateMacIcon(function (err) { - if (err) return cb(err) - codesign() - }) - } - }) + } + }) + } }) }