| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | #!/usr/bin/env node// Compression helper for CodeMirror//// Example:////   bin/compress codemirror runmode javascript xml//// Will take lib/codemirror.js, addon/runmode/runmode.js,// mode/javascript/javascript.js, and mode/xml/xml.js, run them though// the online minifier at http://marijnhaverbeke.nl/uglifyjs, and spit// out the result.////   bin/compress codemirror --local /path/to/bin/UglifyJS//// Will use a local minifier instead of the online default one.//// Script files are specified without .js ending. Prefixing them with// their full (local) path is optional. So you may say lib/codemirror// or mode/xml/xml to be more precise. In fact, even the .js suffix// may be speficied, if wanted."use strict";var fs = require("fs");function help(ok) {  console.log("usage: " + process.argv[1] + " [--local /path/to/uglifyjs] files...");  process.exit(ok ? 0 : 1);}var local = null, args = [], extraArgs = null, files = [], blob = "";for (var i = 2; i < process.argv.length; ++i) {  var arg = process.argv[i];  if (arg == "--local" && i + 1 < process.argv.length) {    var parts = process.argv[++i].split(/\s+/);    local = parts[0];    extraArgs = parts.slice(1);    if (!extraArgs.length) extraArgs = ["-c", "-m"];  } else if (arg == "--help") {    help(true);  } else if (arg[0] != "-") {    files.push({name: arg, re: new RegExp("(?:\\/|^)" + arg + (/\.js$/.test(arg) ? "$" : "\\.js$"))});  } else help(false);}function walk(dir) {  fs.readdirSync(dir).forEach(function(fname) {    if (/^[_\.]/.test(fname)) return;    var file = dir + fname;    if (fs.statSync(file).isDirectory()) return walk(file + "/");    if (files.some(function(spec, i) {      var match = spec.re.test(file);      if (match) files.splice(i, 1);      return match;    })) {      if (local) args.push(file);      else blob += fs.readFileSync(file, "utf8");    }  });}walk("lib/");walk("addon/");walk("mode/");if (!local && !blob) help(false);if (files.length) {  console.log("Some speficied files were not found: " +              files.map(function(a){return a.name;}).join(", "));  process.exit(1);}  if (local) {  require("child_process").spawn(local, args.concat(extraArgs), {stdio: ["ignore", process.stdout, process.stderr]});} else {  var data = new Buffer("js_code=" + require("querystring").escape(blob), "utf8");  var req = require("http").request({    host: "marijnhaverbeke.nl",    port: 80,    method: "POST",    path: "/uglifyjs",    headers: {"content-type": "application/x-www-form-urlencoded",              "content-length": data.length}  });  req.on("response", function(resp) {    resp.on("data", function (chunk) { process.stdout.write(chunk); });  });  req.end(data);}
 |