coffee-toaster
Version:
Minimalist build system for CoffeeScript.
40 lines (31 loc) • 1.17 kB
text/coffeescript
fs = require "fs"
os = require "os"
path = require 'path'
spawn = (require 'child_process').spawn
snapshot = exports.snapshot = ( folderpath, buffer = {} )->
folderpath = path.resolve folderpath
for file in (files = fs.readdirSync folderpath)
absolute = path.resolve "#{folderpath}/#{file}"
relative = absolute.replace folderpath, ''
try
if fs.lstatSync( absolute ).isDirectory()
buffer[ relative ] = 'folder'
snapshot absolute, buffer
else
unless /.gitkeep/.test relative
buffer[ relative ] = fs.readFileSync( absolute ).toString()
catch error
throw error
buffer
exports.spawn_toaster = (args, options) ->
toaster_path = path.join __dirname, '../../bin/toaster'
# Win32 urges some MAGIC in order to do basic things such as spawn a node
# program or any other program that isn't a .exe. Gorgeous.
if os.platform() is 'win32'
runner = "cmd"
args = ['/S', '/C', 'node', toaster_path].concat args
# No magic need for *unix systems.
else
runner = toaster_path
spawn toaster_path, args, options || cwd: __dirname
spawn runner, args, options || {cwd: __dirname}