Skip to content

Commit

Permalink
Fix a bug when loading coffee-script
Browse files Browse the repository at this point in the history
  • Loading branch information
BYVoid committed Jun 29, 2013
1 parent 6cda1bf commit 19cb905
Showing 1 changed file with 25 additions and 26 deletions.
51 changes: 25 additions & 26 deletions lib/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,16 @@ var commander = require('commander');
var continuation = require('../continuation');
var meta = require('../package.json');

try {var coffeescript = require('coffee-script');} catch (err) {}
try {var livescript = require('LiveScript');} catch (err) {}

var options = {
explicit: false,
sourceMap: true,
verbose: false,
cache: false,
force: false,
indent: ' ',
indent: ' '
};

var cacheDefaultPath = '/tmp/continuation';
Expand Down Expand Up @@ -65,7 +68,7 @@ var main = exports.main = function () {
if (print) {
outputCode(filename, code);
} else {
runCode(code, filename);
executeTopModule(code, filename);
}
};

Expand All @@ -87,54 +90,52 @@ var outputCode = function (originalFilename, code) {
}
};

var runCode = function (code, filename) {
var executeTopModule = function (code, filename) {
//Set current module information
var mainModule = require.main;
mainModule.filename = filename;
mainModule.moduleCache = {};
mainModule.children = [];
mainModule.paths = calculatePaths(filename);

//Register require handler
require.extensions['.js'] = execute;
require.extensions['.coffee'] = execute;
require.extensions['.ls'] = execute;

registerRequire();
//Generate program arguments
var args = commander.args.slice(1);
process.argv = [process.argv[0], filename].concat(args);

//Run
mainModule._compile(code, filename);
};

var registerRequire = function() {
require.extensions['.ls'] = execute;
require.extensions['.js'] = execute;
require.extensions['.coffee'] = execute;
};

var compile = function (filename) {

if (options.verbose) {
console.error('Load ' + filename);
}

var code;
if (options.cache) {
code = readCache(filename);
if (code !== null) {
if (options.verbose) {
console.error('Cache hit');
}
return code;
}
}

var code = fs.readFileSync(filename, 'utf-8');

try {
code = fs.readFileSync(filename, 'utf-8');
var ext = path.extname(filename);
if (ext === '.coffee') {
//Coffee-script support
coffeescript = require('coffee-script');
if (!coffeescript) {
console.error('CoffeeScript not found. Use: npm install -g coffee-script');
process.exit(-1);
}
code = coffeescript.compile(code);
} else if (ext === '.ls') {
//LiveScript support
var livescript = require('LiveScript');
if (!livescript) {
console.error('LiveScript not found. Use: npm install -g LiveScript');
process.exit(-1);
}
code = livescript.compile(code);
}
code = continuation.compile(code, options);
Expand All @@ -143,14 +144,12 @@ var compile = function (filename) {
console.error(err.stack);
process.exit(-1);
}

if (options.cache) {
if (options.verbose) {
console.error('Cache updated');
console.error('Updated ' + filename);
}
writeCache(filename, code);
}

return code;
};

Expand Down Expand Up @@ -185,7 +184,7 @@ var readCache = function (filename) {

var stat = fs.lstatSync(cachedFilePath);
var cacheMtime = stat.mtime;
var stat = fs.lstatSync(filename);
stat = fs.lstatSync(filename);
var sourceMtime = stat.mtime;

if (sourceMtime > cacheMtime) {
Expand Down

0 comments on commit 19cb905

Please sign in to comment.