UNPKG

cssjs

Version:
120 lines (102 loc) 3.43 kB
// Generated by CoffeeScript 1.8.0 (function() { var basename, cssjs, dirname, exists, files, fs, join, mkdirp, monocle, path, processFile, program, resolve; fs = require('fs'); path = require('path'); basename = path.basename; dirname = path.dirname; resolve = path.resolve; exists = fs.existsSync || path.existsSync; join = path.join; program = require('commander'); monocle = require('monocle')(); mkdirp = require('mkdirp'); cssjs = require('..'); program.version(require('../package.json').version).usage('[options] [dir|file ...]').option('-o, --out <dir>', 'output the processed files to <dir>').option('-w, --watch', 'watch files for changes and automatically re-render'); program.parse(process.argv); processFile = function(path) { return fs.lstat(path, function(err, stat) { if (err) { throw err; } if (stat.isFile() && /\.css$/.test(path) && !(/\.css\.css$/.test(path) || /\.css\.js$/.test(path))) { return fs.readFile(path, "utf8", function(err, str) { var cssOutPath, dir, jsOutPath, outPath, processed; if (err) { throw err; } console.log(" \u001b[90mprocessing \u001b[36m%s\u001b[0m", path); processed = cssjs(str); outPath = program.out ? join(program.out, basename(path)) : path; cssOutPath = outPath + ".css"; jsOutPath = outPath + ".js"; dir = resolve(dirname(outPath)); return mkdirp(dir, 0x1ed, function(err) { var e; if (err) { throw err; } try { if (processed.css) { fs.writeFile(cssOutPath, processed.css, function(err) { if (err) { throw err; } return console.log(" \u001b[90mrendered \u001b[36m%s\u001b[0m", cssOutPath); }); } if (processed.js) { return fs.writeFile(jsOutPath, processed.js, function(err) { if (err) { throw err; } return console.log(" \u001b[90mrendered \u001b[36m%s\u001b[0m", jsOutPath); }); } } catch (_error) { e = _error; if (options.watch) { return console.error(e.stack || e.message || e); } else { throw e; } } }); }); } else if (stat.isDirectory()) { return fs.readdir(path, function(err, files) { if (err) { throw err; } return files.map(function(filename) { return path + "/" + filename; }).forEach(processFile); }); } }); }; files = program.args; if (files.length) { console.log(); if (program.watch) { process.on("uncaughtException", function(err) { return console.error(err); }); files.forEach(processFile); monocle.watchFiles({ files: files, listener: function(file) { console.log("changed", file); return processFile(file.absolutePath); } }); } else { files.forEach(processFile); } process.on("exit", function() { return console.log(); }); } else { processFile("."); } }).call(this);