12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /*
- * grunt-contrib-copy
- * http://gruntjs.com/
- *
- * Copyright (c) 2012 Chris Talkington, contributors
- * Licensed under the MIT license.
- * https://github.com/gruntjs/grunt-contrib-copy/blob/master/LICENSE-MIT
- */
- module.exports = function(grunt) {
- 'use strict';
- var path = require('path');
- grunt.registerMultiTask('copy', 'Copy files.', function() {
- var kindOf = grunt.util.kindOf;
- var options = this.options({
- processContent: false,
- processContentExclude: []
- });
- var copyOptions = {
- process: options.processContent,
- noProcess: options.processContentExclude
- };
- grunt.verbose.writeflags(options, 'Options');
- var dest;
- var isExpandedPair;
- var tally = {
- dirs: 0,
- files: 0
- };
- this.files.forEach(function(filePair) {
- isExpandedPair = filePair.orig.expand || false;
- filePair.src.forEach(function(src) {
- if (detectDestType(filePair.dest) === 'directory') {
- dest = (isExpandedPair) ? filePair.dest : unixifyPath(path.join(filePair.dest, src));
- } else {
- dest = filePair.dest;
- }
- if (grunt.file.isDir(src)) {
- grunt.verbose.writeln('Creating ' + dest.cyan);
- grunt.file.mkdir(dest);
- tally.dirs++;
- } else {
- grunt.verbose.writeln('Copying ' + src.cyan + ' -> ' + dest.cyan);
- grunt.file.copy(src, dest, copyOptions);
- tally.files++;
- }
- });
- });
- if (tally.dirs) {
- grunt.log.write('Created ' + tally.dirs.toString().cyan + ' directories');
- }
- if (tally.files) {
- grunt.log.write((tally.dirs ? ', copied ' : 'Copied ') + tally.files.toString().cyan + ' files');
- }
- grunt.log.writeln();
- });
- var detectDestType = function(dest) {
- if (grunt.util._.endsWith(dest, '/')) {
- return 'directory';
- } else {
- return 'file';
- }
- };
- var unixifyPath = function(filepath) {
- if (process.platform === 'win32') {
- return filepath.replace(/\\/g, '/');
- } else {
- return filepath;
- }
- };
- };
|