'use strict'; const fs = require('fs-extra'); const path = require('path'); const spawnSync = require('./spawn-sync'); const { path7za } = require('7zip-bin'); const CONFIG = require('../config'); module.exports = function(packagedAppPath) { const appArchivePath = path.join(CONFIG.buildOutputPath, getArchiveName()); compress(packagedAppPath, appArchivePath); if (process.platform === 'darwin') { const symbolsArchivePath = path.join( CONFIG.buildOutputPath, 'atom-mac-symbols.zip' ); compress(CONFIG.symbolsPath, symbolsArchivePath); } }; function getArchiveName() { switch (process.platform) { case 'darwin': return 'atom-mac.zip'; case 'win32': return `atom-${process.arch === 'x64' ? 'x64-' : ''}windows.zip`; default: return `atom-${getLinuxArchiveArch()}.tar.gz`; } } function getLinuxArchiveArch() { switch (process.arch) { case 'ia32': return 'i386'; case 'x64': return 'amd64'; default: return process.arch; } } function compress(inputDirPath, outputArchivePath) { if (fs.existsSync(outputArchivePath)) { console.log(`Deleting "${outputArchivePath}"`); fs.removeSync(outputArchivePath); } console.log(`Compressing "${inputDirPath}" to "${outputArchivePath}"`); let compressCommand, compressArguments; if (process.platform === 'darwin') { compressCommand = 'zip'; compressArguments = ['-r', '--symlinks']; } else if (process.platform === 'win32') { compressCommand = path7za; compressArguments = ['a', '-r']; } else { compressCommand = 'tar'; compressArguments = ['caf']; } compressArguments.push(outputArchivePath, path.basename(inputDirPath)); spawnSync(compressCommand, compressArguments, { cwd: path.dirname(inputDirPath), maxBuffer: 2024 * 2024 }); }