Skip to content

Commit

Permalink
Revert "Revert "Add asar support in Atom""
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinsawicki committed Apr 15, 2015
1 parent c665747 commit 5a8885a
Show file tree
Hide file tree
Showing 13 changed files with 46 additions and 22 deletions.
2 changes: 1 addition & 1 deletion apm/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
"url": "https://github.com/atom/atom.git"
},
"dependencies": {
"atom-package-manager": "0.157.0"
"atom-package-manager": "0.158.0"
}
}
4 changes: 2 additions & 2 deletions build/Gruntfile.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -223,14 +223,14 @@ module.exports = (grunt) ->

ciTasks = ['output-disk-space', 'download-atom-shell', 'download-atom-shell-chromedriver', 'build']
ciTasks.push('dump-symbols') if process.platform isnt 'win32'
ciTasks.push('set-version', 'check-licenses', 'lint')
ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar')
ciTasks.push('mkdeb') if process.platform is 'linux'
ciTasks.push('create-windows-installer') if process.platform is 'win32'
ciTasks.push('test') if process.platform is 'darwin'
ciTasks.push('codesign')
ciTasks.push('publish-build')
grunt.registerTask('ci', ciTasks)

defaultTasks = ['download-atom-shell', 'download-atom-shell-chromedriver', 'build', 'set-version']
defaultTasks = ['download-atom-shell', 'download-atom-shell-chromedriver', 'build', 'set-version', 'generate-asar']
defaultTasks.push 'install' unless process.platform is 'linux'
grunt.registerTask('default', defaultTasks)
1 change: 1 addition & 0 deletions build/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"url": "https://github.com/atom/atom.git"
},
"dependencies": {
"asar": "^0.4.0",
"async": "~0.2.9",
"donna": "1.0.10",
"formidable": "~1.0.14",
Expand Down
6 changes: 3 additions & 3 deletions build/tasks/build-task.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ module.exports = (grunt) ->
mkdir appDir

if process.platform isnt 'win32'
cp 'atom.sh', path.join(appDir, 'atom.sh')
cp 'atom.sh', path.resolve(appDir, '..', 'atom.sh')

cp 'package.json', path.join(appDir, 'package.json')

Expand Down Expand Up @@ -147,9 +147,9 @@ module.exports = (grunt) ->
cp 'src', path.join(appDir, 'src'), filter: /.+\.(cson|coffee)$/
cp 'static', path.join(appDir, 'static')

cp path.join('apm', 'node_modules', 'atom-package-manager'), path.join(appDir, 'apm'), filter: filterNodeModule
cp path.join('apm', 'node_modules', 'atom-package-manager'), path.resolve(appDir, '..', 'apm'), filter: filterNodeModule
if process.platform isnt 'win32'
fs.symlinkSync(path.join('..', '..', 'bin', 'apm'), path.join(appDir, 'apm', 'node_modules', '.bin', 'apm'))
fs.symlinkSync(path.join('..', '..', 'bin', 'apm'), path.resolve(appDir, '..', 'apm', 'node_modules', '.bin', 'apm'))

if process.platform is 'darwin'
grunt.file.recurse path.join('resources', 'mac'), (sourcePath, rootDirectory, subDirectory='', filename) ->
Expand Down
19 changes: 19 additions & 0 deletions build/tasks/generate-asar-task.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
asar = require 'asar'
fs = require 'fs'
path = require 'path'

module.exports = (grunt) ->
{rm} = require('./task-helpers')(grunt)

grunt.registerTask 'generate-asar', 'Generate asar archive for the app', ->
done = @async()

appDir = grunt.config.get('atom.appDir')
unless fs.existsSync(appDir)
grunt.log.error 'The app has to be built before generating asar archive.'
return done(false)

asar.createPackageWithOptions appDir, path.resolve(appDir, '..', 'app.asar'), {unpack: '*.node'}, (err) ->
return done(err) if err?
rm appDir
done()
2 changes: 1 addition & 1 deletion build/tasks/generate-license-task.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ module.exports = (grunt) ->

licenseText = getLicenseText(dependencyLicenses)
if mode is 'save'
targetPath = path.join(grunt.config.get('atom.appDir'), 'LICENSE.md')
targetPath = path.resolve(grunt.config.get('atom.appDir'), '..', 'LICENSE.md')
fs.writeFileSync(targetPath, licenseText)
else
console.log licenseText
Expand Down
2 changes: 1 addition & 1 deletion script/mkdeb
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ cp "$ICON_FILE" "$TARGET/usr/share/pixmaps"

# Copy generated LICENSE.md to /usr/share/doc/atom/copyright
mkdir -m $FILE_MODE -p "$TARGET/usr/share/doc/atom"
cp "$TARGET/usr/share/atom/resources/app/LICENSE.md" "$TARGET/usr/share/doc/atom/copyright"
cp "$TARGET/usr/share/atom/resources/LICENSE.md" "$TARGET/usr/share/doc/atom/copyright"

# Add lintian overrides
mkdir -m $FILE_MODE -p "$TARGET/usr/share/lintian/overrides"
Expand Down
6 changes: 3 additions & 3 deletions src/atom.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ class Atom extends Model

if openDevTools
@openDevTools()
@executeJavaScriptInDevTools('InspectorFrontendAPI.showConsole()')
@executeJavaScriptInDevTools('DevToolsAPI.showConsole()')

@emit 'uncaught-error', arguments... if includeDeprecatedAPIs
@emitter.emit 'did-throw-error', {message, url, line, column, originalError}
Expand Down Expand Up @@ -577,9 +577,9 @@ class Atom extends Model
{resourcePath, safeMode} = @getLoadSettings()

CommandInstaller = require './command-installer'
CommandInstaller.installAtomCommand resourcePath, false, (error) ->
CommandInstaller.installAtomCommand false, (error) ->
console.warn error.message if error?
CommandInstaller.installApmCommand resourcePath, false, (error) ->
CommandInstaller.installApmCommand false, (error) ->
console.warn error.message if error?

dimensions = @restoreWindowDimensions()
Expand Down
2 changes: 1 addition & 1 deletion src/browser/atom-application.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ class AtomApplication
@openPathOnEvent('application:open-your-keymap', 'atom://.atom/keymap')
@openPathOnEvent('application:open-your-snippets', 'atom://.atom/snippets')
@openPathOnEvent('application:open-your-stylesheet', 'atom://.atom/stylesheet')
@openPathOnEvent('application:open-license', path.join(@resourcePath, 'LICENSE.md'))
@openPathOnEvent('application:open-license', path.join(process.resourcesPath, 'LICENSE.md'))

app.on 'window-all-closed', ->
app.quit() if process.platform in ['win32', 'linux']
Expand Down
2 changes: 1 addition & 1 deletion src/browser/squirrel-update.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ addCommandsToPath = (callback) ->
atomShCommand = "#!/bin/sh\r\n\"$0/../#{relativeAtomShPath.replace(/\\/g, '/')}\" \"$@\""

apmCommandPath = path.join(binFolder, 'apm.cmd')
relativeApmPath = path.relative(binFolder, path.join(process.resourcesPath, 'app', 'apm', 'bin', 'apm.cmd'))
relativeApmPath = path.relative(binFolder, path.join(process.resourcesPath, 'apm', 'bin', 'apm.cmd'))
apmCommand = "@echo off\r\n\"%~dp0\\#{relativeApmPath}\" %*"

apmShCommandPath = path.join(binFolder, 'apm')
Expand Down
13 changes: 6 additions & 7 deletions src/command-installer.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,24 @@ module.exports =
message: "Failed to install shell commands"
detailedMessage: error.message

resourcePath = atom.getLoadSettings().resourcePath
@installAtomCommand resourcePath, true, (error) =>
@installAtomCommand true, (error) =>
if error?
showErrorDialog(error)
else
@installApmCommand resourcePath, true, (error) ->
@installApmCommand true, (error) ->
if error?
showErrorDialog(error)
else
atom.confirm
message: "Commands installed."
detailedMessage: "The shell commands `atom` and `apm` are installed."

installAtomCommand: (resourcePath, askForPrivilege, callback) ->
commandPath = path.join(resourcePath, 'atom.sh')
installAtomCommand: (askForPrivilege, callback) ->
commandPath = path.join(process.resourcesPath, 'atom.sh')
@createSymlink commandPath, askForPrivilege, callback

installApmCommand: (resourcePath, askForPrivilege, callback) ->
commandPath = path.join(resourcePath, 'apm', 'node_modules', '.bin', 'apm')
installApmCommand: (askForPrivilege, callback) ->
commandPath = path.join(process.resourcesPath, 'apm', 'node_modules', '.bin', 'apm')
@createSymlink commandPath, askForPrivilege, callback

createSymlink: (commandPath, askForPrivilege, callback) ->
Expand Down
2 changes: 1 addition & 1 deletion src/package-manager.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ class PackageManager

commandName = 'apm'
commandName += '.cmd' if process.platform is 'win32'
apmRoot = path.resolve(__dirname, '..', 'apm')
apmRoot = path.join(process.resourcesPath, 'apm')
@apmPath = path.join(apmRoot, 'bin', commandName)
unless fs.isFileSync(@apmPath)
@apmPath = path.join(apmRoot, 'node_modules', 'atom-package-manager', 'bin', commandName)
Expand Down
7 changes: 6 additions & 1 deletion src/task.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ class Task
taskPath = taskPath.replace(/\\/g, "\\\\")

env = _.extend({}, process.env, {taskPath, userAgent: navigator.userAgent})
@childProcess = fork '--eval', [bootstrap], {env, cwd: __dirname}
@childProcess = fork '--eval', [bootstrap], {env, silent: true}

@on "task:log", -> console.log(arguments...)
@on "task:warn", -> console.warn(arguments...)
Expand All @@ -100,6 +100,11 @@ class Task
@childProcess.removeAllListeners()
@childProcess.on 'message', ({event, args}) =>
@emit(event, args...) if @childProcess?
# Catch the errors that happened before task-bootstrap.
@childProcess.stdout.on 'data', (data) ->
console.log data.toString()
@childProcess.stderr.on 'data', (data) ->
console.error data.toString()

# Public: Starts the task.
#
Expand Down

0 comments on commit 5a8885a

Please sign in to comment.