code: function cp( dest, opts ) {
  	var tmpl = 'default',
  		fpath,
  		dpath;
  
  	if ( !isString( dest ) ) {
  		throw new TypeError( 'cp()::invalid input argument. First argument must be a string primitive. Value: `' + dest + '`.' );
  	}
  	if ( arguments.length > 1 ) {
  		if ( !isObject( opts ) ) {
  			throw new TypeError( 'cp()::invalid input argument. Options argument must be an object. Value: `' + opts + '`.' );
  		}
  		if ( opts.hasOwnProperty( 'template' ) ) {
  			tmpl = opts.template;
  			if ( !isString( tmpl ) ) {
  				throw new TypeError( 'cp()::invalid option. Template option must be a string primitive. Option: `' + tmpl + '`.' );
  			}
  			if ( !contains( templates, tmpl ) ) {
  				throw new Error( 'cp()::invalid option. Unrecognized template name. Must be one of [' + templates.join( ',' ) + '] Option: `' + tmpl + '`.' );
  			}
  		}
  	}
  	fpath = path.join( __dirname, tmpl, 'gitattributes' );
  	dpath = path.join( dest, '.gitattributes' );
  
  	fs.writeFileSync( dpath, fs.readFileSync( fpath ) );
  }
docs: COPY // 
  FUNCTION: cp( dest[, opts ] )
  Synchronously creates a .gitattributes file.
  
  @param {String} dest - .gitattributes destination directory
  @param {Object} [opts] - function options
  @param {String} [opts.template="default"] - .gitattributes template to use