Skip to content

Instantly share code, notes, and snippets.

@vol4ok
Created December 20, 2012 08:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vol4ok/4343895 to your computer and use it in GitHub Desktop.
Save vol4ok/4343895 to your computer and use it in GitHub Desktop.
Cakefile loader
Module = require("module")
coffee = require("coffee-script")
$ = require("fs")
$ extends require("path")
cake = (cakedir, done) ->
cakefile = "#{cakedir}/Cakefile"
complete = (code) ->
code = coffee.compile(code, {bare: yes})
curdir = process.cwd()
process.chdir(cakedir)
mod = new Module(cakefile, null)
mod.filename = cakefile
mod.paths = Module._nodeModulePaths($.dirname(cakefile))
mod._compile(code, cakefile)
mod.loaded = yes
process.chdir(curdir)
return mod.exports
if $.isFunction(done)
$.chain [
(cb) -> $.realpath(cakefile, cb)
(err, cakefile, cb) -> $.readFile(cakefile, "utf-8", cb)
(err, code) -> done(null, complete(code))
], done
else
cakefile = $.realpathSync(cakefile)
code = $.readFileSync(cakefile, "utf-8")
return complete(code)
build = (opt) ->
console.log "build!"
if task?
console.log "task"
task "sbuild", ->
build()
else
console.log "exports"
exports.build = build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment