#!/usr/bin/env coffee # # Crafting Guide - serve-build # # Copyright (c) 2014-2015 by Redwood Labs # All rights reserved. # express = require 'express' fs = require 'fs' path = require 'path' ######################################################################################################################## ROOT = './dist/' DATA_ROOT = '../crafting-guide-data' CONTENT_TYPE = { '.cg': 'text/plain' '.css': 'text/css' '.html': 'text/html' '.js': 'text/javascript' '.json': 'application/json' '.map': 'application/json' '.png': 'image/png' '.ttf': 'application/octet-stream' '.scss': 'text/css' } ######################################################################################################################## app = express() serveIndex = (request, response)-> response.set 'Content-Type', 'text/html' filePath = "#{request.path}index.html".replace /^\//, '' fs.stat "#{ROOT}#{filePath}", (err, stats)-> if not err? response.sendFile filePath, root:ROOT console.log ">>> #{filePath} (for #{request.path})" else response.sendFile '/app.html', root:ROOT console.log ">>> app.html (for #{request.path})" serveData = (request, response)-> console.log ">>> #{request.path}" response.set 'Content-Type', CONTENT_TYPE[path.extname request.path] response.sendFile request.path, root:DATA_ROOT app.get '/data/*', serveData app.get '/craft/*', serveIndex app.get '/login', serveIndex app.get '*/$', serveIndex app.get '*', (request, response)-> console.log ">>> #{request.path}" response.set 'Content-Type', CONTENT_TYPE[path.extname request.path] response.sendFile request.path, root:ROOT server = app.listen 8000, '127.0.0.1', -> console.log "listening at: #{server.address().address}:#{server.address().port}"