code: function pkgUpdate(pth, prt, props) {
  			var rtn = {
  				path : pth || '',
  				props : Array.isArray(props) ? props : null,
  				oldVer : '',
  				version : '',
  				propChangeCount : 0
  			};
  			if (!rtn.path) {
  				return rtn;
  			}
  			rtn.pkg = rbot.file.readJSON(rtn.path);
  			rtn.pkgParent = prt;
  			rtn.oldVer = rtn.pkg.version;
  			rtn.u = !opts.revert && !opts.next && pkgPropUpd(rtn, true, false, false);
  			rtn.n = !opts.revert && opts.next && pkgPropUpd(rtn, false, true, false);
  			rtn.r = opts.revert && pkgPropUpd(rtn, false, false, true);
  			if (rtn.u || rtn.n || rtn.r) {
  				if (rtn.propChangeCount > 0) {
  					rtn.pkgStr = JSON.stringify(rtn.pkg, opts.replacer, opts.space);
  					if (!opts.readOnly) {
  						rbot.file.write(rtn.path, typeof opts.altWrite === 'function' ? opts.altWrite(rtn,
  								opts.replacer, opts.space) : rtn.pkgStr);
  					}
  				}
  			}
  			return rtn;
  		}
docs: updates a package for a given path, parent package data (from previous call to same function) an optional array of properties to match can be passed that will be matched against the parent package