docs: function init() {
  	var ugr = rbot.env ? rbot.env.usingGrunt : require.main.filename.indexOf('grunt') >= 0;
  	if (!rbot.env) {
  		rbot.env = {
  			usingGrunt : ugr
  		}
  	}
  	var notr = !rbot.env.taskRunner;
  	if (notr) {
  		// grunt should pass instance as 1st argument
  		rbot.env.taskRunner = ugr ? (arguments[0] ? arguments[0] : require('grunt')) : require('gulp');
  	}
  	var tr = rbot.env.taskRunner;
  	if (notr || !rbot.log) {
  		var ugrl = ugr && tr && tr.log;
  		rbot.log = {
  			verboseEnabled : !ugr || !tr || tr.option('verbose'),
  			verbose : ugr && tr && tr.verbose ? tr.verbose.writeln : console.log,
  			debug : ugrl ? tr.log.debug : console.log,
  			info : console.info || console.log,
  			warn : console.warn,
  			error : ugrl ? tr.log.error : console.error,
  			fail : function fail(e) {
  				var tr = rbot.env.taskRunner;
  				if (rbot.env.usingGrunt && tr && tr.fail) {
  					return tr.fail.fatal(e);
  				}
  				throw (e instanceof Error ? e : new Error(e));
  			},
  			dir : ugrl ? tr.log.writeflags : console.dir
  		};
  	}
  	if (notr || !rbot.file) {
  		var ugrf = ugr && tr && tr.file;
  		rbot.file = {
  			read : ugrf ? tr.file.read : null,
  			write : ugrf ? tr.file.write : null,
  			defaultEncoding : ugrf ? tr.file.defaultEncoding : null,
  			readJSON : ugrf ? tr.file.readJSON : null,
  			writeJSON : ugrf ? tr.file.writeJSON : null
  		};
  	}
  	if (notr || !rbot.option) {
  		rbot.option = ugr && tr && tr.option ? tr.option : null;
  	}
  }