2013-04-15 07:39:54 +00:00
|
|
|
fs = require 'fs'
|
|
|
|
path = require 'path'
|
|
|
|
|
2013-07-25 12:06:23 +00:00
|
|
|
# Redirect node's console to use our own implementations, since node can not
|
|
|
|
# handle output when running as GUI program.
|
|
|
|
if process.platform is 'win32'
|
|
|
|
console.log = console.error = console.warn = process.log
|
|
|
|
process.stdout.write = process.stderr.write = process.log
|
|
|
|
|
2013-04-15 07:39:54 +00:00
|
|
|
# Provide default Content API implementations.
|
|
|
|
atom = {}
|
|
|
|
|
|
|
|
atom.browserMainParts =
|
|
|
|
preMainMessageLoopRun: ->
|
|
|
|
# This is the start of the whole application, usually we should initialize
|
|
|
|
# the main window here.
|
|
|
|
|
|
|
|
# Store atom object in global scope, apps can just override methods of it to
|
|
|
|
# implement various logics.
|
|
|
|
global.__atom = atom
|
|
|
|
|
2013-07-07 03:20:30 +00:00
|
|
|
# Add browser/api/lib to require's search paths,
|
2013-04-24 08:43:01 +00:00
|
|
|
# which contains javascript part of Atom's built-in libraries.
|
|
|
|
globalPaths = require('module').globalPaths
|
2013-07-07 03:20:30 +00:00
|
|
|
globalPaths.push path.join process.resourcesPath, 'browser', 'api', 'lib'
|
2013-04-24 08:43:01 +00:00
|
|
|
|
2013-07-07 03:20:30 +00:00
|
|
|
# And also common/api/lib
|
|
|
|
globalPaths.push path.join process.resourcesPath, 'common', 'api', 'lib'
|
2013-04-15 07:39:54 +00:00
|
|
|
|
2013-04-14 14:48:35 +00:00
|
|
|
# Don't quit on fatal error.
|
2013-04-15 07:39:54 +00:00
|
|
|
process.on 'uncaughtException', (error) ->
|
2013-06-02 06:55:47 +00:00
|
|
|
# Show error in GUI.
|
2013-04-15 07:39:54 +00:00
|
|
|
message = error.stack ? "#{error.name}: #{error.message}"
|
2013-06-02 06:55:47 +00:00
|
|
|
require('dialog').showMessageBox
|
|
|
|
type: 'warning'
|
|
|
|
title: 'An javascript error occured in the browser'
|
|
|
|
message: 'uncaughtException'
|
|
|
|
detail: message
|
|
|
|
buttons: ['OK']
|
2013-04-15 07:39:54 +00:00
|
|
|
|
2013-04-24 08:43:01 +00:00
|
|
|
# Load the RPC server.
|
2013-05-30 12:16:54 +00:00
|
|
|
require './rpc-server.js'
|
2013-04-24 08:43:01 +00:00
|
|
|
|
2013-04-15 07:39:54 +00:00
|
|
|
# Now we try to load app's package.json.
|
|
|
|
packageJson = null
|
|
|
|
|
2013-07-07 03:20:30 +00:00
|
|
|
packagePath = path.join process.resourcesPath, 'app'
|
2013-04-15 07:39:54 +00:00
|
|
|
try
|
2013-07-07 03:20:30 +00:00
|
|
|
# First we try to load process.resourcesPath/app
|
2013-04-15 07:39:54 +00:00
|
|
|
packageJson = JSON.parse(fs.readFileSync(path.join(packagePath, 'package.json')))
|
|
|
|
catch error
|
2013-07-07 03:20:30 +00:00
|
|
|
# If not found then we load browser/default_app
|
|
|
|
packagePath = path.join process.resourcesPath, 'browser', 'default_app'
|
2013-04-15 07:39:54 +00:00
|
|
|
packageJson = JSON.parse(fs.readFileSync(path.join(packagePath, 'package.json')))
|
|
|
|
|
|
|
|
# Finally load app's main.js and transfer control to C++.
|
|
|
|
require path.join(packagePath, packageJson.main)
|