.
This commit is contained in:
		
							
								
								
									
										100
									
								
								qwen/nodejs/node_modules/nodemon/lib/version.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								qwen/nodejs/node_modules/nodemon/lib/version.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,100 @@
 | 
			
		||||
module.exports = version;
 | 
			
		||||
module.exports.pin = pin;
 | 
			
		||||
 | 
			
		||||
var fs = require('fs');
 | 
			
		||||
var path = require('path');
 | 
			
		||||
var exec = require('child_process').exec;
 | 
			
		||||
var root = null;
 | 
			
		||||
 | 
			
		||||
function pin() {
 | 
			
		||||
  return version().then(function (v) {
 | 
			
		||||
    version.pinned = v;
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function version(callback) {
 | 
			
		||||
  // first find the package.json as this will be our root
 | 
			
		||||
  var promise = findPackage(path.dirname(module.parent.filename))
 | 
			
		||||
    .then(function (dir) {
 | 
			
		||||
      // now try to load the package
 | 
			
		||||
      var v = require(path.resolve(dir, 'package.json')).version;
 | 
			
		||||
 | 
			
		||||
      if (v && v !== '0.0.0-development') {
 | 
			
		||||
        return v;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      root = dir;
 | 
			
		||||
 | 
			
		||||
      // else we're in development, give the commit out
 | 
			
		||||
      // get the last commit and whether the working dir is dirty
 | 
			
		||||
      var promises = [
 | 
			
		||||
        branch().catch(function () { return 'master'; }),
 | 
			
		||||
        commit().catch(function () { return '<none>'; }),
 | 
			
		||||
        dirty().catch(function () { return 0; }),
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      // use the cached result as the export
 | 
			
		||||
      return Promise.all(promises).then(function (res) {
 | 
			
		||||
        var branch = res[0];
 | 
			
		||||
        var commit = res[1];
 | 
			
		||||
        var dirtyCount = parseInt(res[2], 10);
 | 
			
		||||
        var curr = branch + ': ' + commit;
 | 
			
		||||
        if (dirtyCount !== 0) {
 | 
			
		||||
          curr += ' (' + dirtyCount + ' dirty files)';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return curr;
 | 
			
		||||
      });
 | 
			
		||||
    }).catch(function (error) {
 | 
			
		||||
      console.log(error.stack);
 | 
			
		||||
      throw error;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  if (callback) {
 | 
			
		||||
    promise.then(function (res) {
 | 
			
		||||
      callback(null, res);
 | 
			
		||||
    }, callback);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return promise;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function findPackage(dir) {
 | 
			
		||||
  if (dir === '/') {
 | 
			
		||||
    return Promise.reject(new Error('package not found'));
 | 
			
		||||
  }
 | 
			
		||||
  return new Promise(function (resolve) {
 | 
			
		||||
    fs.stat(path.resolve(dir, 'package.json'), function (error, exists) {
 | 
			
		||||
      if (error || !exists) {
 | 
			
		||||
        return resolve(findPackage(path.resolve(dir, '..')));
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      resolve(dir);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function command(cmd) {
 | 
			
		||||
  return new Promise(function (resolve, reject) {
 | 
			
		||||
    exec(cmd, { cwd: root }, function (err, stdout, stderr) {
 | 
			
		||||
      var error = stderr.trim();
 | 
			
		||||
      if (error) {
 | 
			
		||||
        return reject(new Error(error));
 | 
			
		||||
      }
 | 
			
		||||
      resolve(stdout.split('\n').join(''));
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function commit() {
 | 
			
		||||
  return command('git rev-parse HEAD');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function branch() {
 | 
			
		||||
  return command('git rev-parse --abbrev-ref HEAD');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function dirty() {
 | 
			
		||||
  return command('expr $(git status --porcelain 2>/dev/null| ' +
 | 
			
		||||
    'egrep "^(M| M)" | wc -l)');
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user