code: function Hook(fn, options) {
    if (!this) return new Hook(fn, options);
    options = options || {};
  
    this.options = options;     // Used for testing only. Ignore this. Don't touch.
    this.config = {};           // pre-commit configuration from the `package.json`.
    this.json = {};             // Actual content of the `package.json`.
    this.npm = '';              // The location of the `npm` binary.
    this.git = '';              // The location of the `git` binary.
    this.root = '';             // The root location of the .git folder.
    this.status = '';           // Contents of the `git status`.
    this.exit = fn;             // Exit function.
  
    this.initialize();
  }
docs: Representation of a hook runner.
  
  @constructor
  @param {Function} fn Function to be called when we want to exit
  @param {Object} options Optional configuration, primarily used for testing.
  @api public