text: var https = require("https"),
      zlib = require('zlib'),
      path = require('path'),
      fs = require('fs');
  
  var stable = '1.7.1',
      done;
  
  function getVersion(path, cb) {
      var data = '',
          
          req = https.request({
          host: 'raw.github.com',
          port: 443,
          path: '/timrwood/moment/' + path
      }, function (res) {
          res.setEncoding('utf8');
          res.on('data', function (chunk) {
              data += chunk;
          });
          res.on('end', function (e) {
              zlib.gzip(data, function (error, result) {
                  cb(data.length, result.length);
              });
          });
      });
      req.on('error', function (e) {
          console.log('problem with request: ' + e.message);
      });
      req.end();
  }
  
  function printDiffs(stableLen, stableGzip, currentLen, currentGzip) {
      var diff = currentLen - stableLen,
          gzipDiff = currentGzip - stableGzip;
  
      console.log("Filesize difference from current branch to " + stable);
      console.log(stable + "   " + stableLen + ' / ' + stableGzip);
      console.log("curr    " + currentLen + ' / ' + currentGzip);
      console.log("diff    " + (diff > 0 ? '+' : '') + diff);
      console.log("gzip    " + (gzipDiff > 0 ? '+' : '') + gzipDiff);
  }
  
  
  module.exports = function (grunt) {
      grunt.registerTask('size', 'Check the codebase filesize against the latest stable version.', function () {
          done = this.async();
          fs.readFile(path.normalize(__dirname + '/../min/moment.min.js'), 'utf8', function (err, data) {
              if (err) {
                  throw err;
              }
              zlib.gzip(data, function (error, result) {
                  getVersion(stable + '/min/moment.min.js', function (stableLength, stableGzipLength) {
                      printDiffs(stableLength, stableGzipLength, data.length, result.length);
                      done();
                  });
              });
          });
      });
  };