diff --git a/static/index.js b/static/index.js index ebb921100..fefb343e6 100644 --- a/static/index.js +++ b/static/index.js @@ -1,49 +1,17 @@ +var fs = require('fs'); +var path = require('path'); + window.onload = function() { try { var startTime = Date.now(); - var fs = require('fs'); - var path = require('path'); - - function registerRuntimeTranspilers() { - var cacheDir = path.join(process.env.ATOM_HOME, 'compile-cache'); - // Use separate compile cache when sudo'ing as root to avoid permission issues - if (process.env.USER === 'root' && process.env.SUDO_USER && process.env.SUDO_USER !== process.env.USER) { - cacheDir = path.join(cacheDir, 'root'); - } - - // Setup caching of .coffee files - var CoffeeCache = require('coffee-cash'); - CoffeeCache.setCacheDirectory(path.join(cacheDir, 'coffee')); - CoffeeCache.register(); - - // Set up caching of source maps for generated stack traces - require('coffeestack').setCacheDirectory(path.join(cacheDir, 'coffee', 'source-maps')); - - // Setup caching of .cson files - require('season').setCacheDir(path.join(cacheDir, 'cson')); - - // Setup caching of .js files that start with "use 6to5" - var to5 = require('../src/6to5'); - to5.setCacheDirectory(path.join(cacheDir, 'js')); - to5.register(); - } - // Ensure ATOM_HOME is always set before anything else is required - if (!process.env.ATOM_HOME) { - var home; - if (process.platform === 'win32') { - home = process.env.USERPROFILE; - } else { - home = process.env.HOME; - } - var atomHome = path.join(home, '.atom'); - try { - atomHome = fs.realpathSync(atomHome); - } catch (error) { - // Ignore since the path might just not exist yet. - } - process.env.ATOM_HOME = atomHome; + setupAtomHome(); + + var cacheDir = path.join(process.env.ATOM_HOME, 'compile-cache'); + // Use separate compile cache when sudo'ing as root to avoid permission issues + if (process.env.USER === 'root' && process.env.SUDO_USER && process.env.SUDO_USER !== process.env.USER) { + cacheDir = path.join(cacheDir, 'root'); } // Skip "?loadSettings=". @@ -61,7 +29,7 @@ window.onload = function() { var devMode = loadSettings.devMode || !loadSettings.resourcePath.startsWith(process.resourcesPath + path.sep); - registerRuntimeTranspilers(); + setupCoffeeCache(cacheDir); ModuleCache = require('../src/module-cache'); ModuleCache.register(loadSettings); @@ -77,6 +45,11 @@ window.onload = function() { }); require('vm-compatibility-layer'); + + setupCsonCache(cacheDir); + setupSourceMapCache(cacheDir); + setup6to5(cacheDir); + require(loadSettings.bootstrapScript); require('ipc').sendChannel('window-command', 'window:loaded'); @@ -94,3 +67,41 @@ window.onload = function() { console.error(error.stack || error); } } + +var setupCoffeeCache = function(cacheDir) { + var CoffeeCache = require('coffee-cash'); + CoffeeCache.setCacheDirectory(path.join(cacheDir, 'coffee')); + CoffeeCache.register(); +} + +var setupAtomHome = function() { + if (!process.env.ATOM_HOME) { + var home; + if (process.platform === 'win32') { + home = process.env.USERPROFILE; + } else { + home = process.env.HOME; + } + var atomHome = path.join(home, '.atom'); + try { + atomHome = fs.realpathSync(atomHome); + } catch (error) { + // Ignore since the path might just not exist yet. + } + process.env.ATOM_HOME = atomHome; + } +} + +var setup6to5 = function(cacheDir) { + var to5 = require('../src/6to5'); + to5.setCacheDirectory(path.join(cacheDir, 'js')); + to5.register(); +} + +var setupCsonCache = function(cacheDir) { + require('season').setCacheDir(path.join(cacheDir, 'cson')); +} + +var setupSourceMapCache = function(cacheDir) { + require('coffeestack').setCacheDirectory(path.join(cacheDir, 'coffee', 'source-maps')); +}