#!/usr/bin/env node 'use strict'; var Crixalis = require('crixalis'), optimist = require('optimist'), system = require('os'), resolve = require('path').resolve, argv = optimist .boolean(['help', 'version']) .default('port', process.env.CRIXALIS_PORT || 8080) .default('path', process.cwd()) .default('temp', system.tmpdir()) .usage([ 'Usage:', ' crixalis [--port ] [--path ] [--temp ]', ' crixalis --version', ' crixalis --help' ].join('\n')) .describe({ port : 'Use specified port', temp : 'Directory for temporary files', path : 'Serve static files from path', help : 'Show help and exit', version : 'Show version and exit' }) .argv; if (argv.help) { optimist.showHelp(); process.exit(); } if (argv.version) { console.log(require('../package').version); process.exit(); } Crixalis .plugin('static') .plugin('access') .plugin('compression'); /* Load less plugin if available */ try { require('less'); Crixalis.plugin('less'); } catch (error) { } /* Load coffee-script plugin if available */ try { require('coffee-script'); Crixalis.plugin('coffee'); } catch (error) { } Crixalis.staticPath = resolve(process.cwd(), argv.path); Crixalis.cachePath = resolve(process.cwd(), argv.temp); Crixalis.router() .set({ pattern: /.*/, methods: ['GET', 'HEAD'] }).to(function () { var path = resolve(this.staticPath + this.url + '/index.html'), that = this; if (!path.indexOf(this.staticPath)) { this.async = true; this.serve(path, function () { that.emit('default'); that.render(); }); } else { this.emit('default'); } }); Crixalis.start('http', argv.port); /* vim: set ft=javascript : */