Commit 89dc6914 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Separa config y task para tarea de limpieza

parent 20a623b1
Loading
Loading
Loading
Loading
+17 −141
Original line number Diff line number Diff line
module.exports = function(grunt) {

	var directoriesToClean = [
	grunt.config('redmicConfig.cleanBuiltApp', {
		directoriesToClean: [
			'alertify', 'awesome-markers', 'cbtree', 'd3Tip', 'dijit', 'dojo', 'dojox', 'deepmerge', 'dropzone',
			'handlebars', 'L-areaselect', 'L-coordinates', 'L-draw', 'L-miniMap', 'L-navBar', 'leaflet',
			'leaflet-nontiledlayer', 'mediatorjs', 'moment', 'uuid', 'proj4', 'pruneCluster', 'put-selector',
			'RWidgets', 'sockjs', 'stomp-websocket', 'templates', 'tv4', 'wicket'
	];

	var recursiveDirectoriesToClean = [
		],
		recursiveDirectoriesToClean: [
			'nls'
	];

	var filesToKeep = [
		],
		filesToKeep: [
			'dojo/dojo.js', 'dojo/resources/blank.gif', 'dojox/widget/ColorPicker/images/*.png',
			'leaflet/dist/images/*.png'
	];

	var cleanSrcFileExceptions = [
		],
		cleanSrcFileExceptions: [
			'App.js', '*View.js', '*Form.html', '404.js', 'ActivateAccount.js', 'NoSupportBrowser.js'
	];

	var path = require('path'),

		distPath = grunt.config('redmicConfig.distPath'),
		destDir = grunt.config('redmicConfig.destDir'),
		destPath = path.join(distPath, destDir, '/');

	var getKeepAndRestoreFilesCmds = function(files) {

		var mkdirCmd = 'mkdir -p',
			createDirectoriesToKeepFilesCmd = mkdirCmd,
			createDirectoriesToRestoreFilesCmd = mkdirCmd,
			keepFilesCmds = [],
			restoreFilesCmds = [],
			temporalBasePath = path.join(destPath, '.temp'),
			cleanTemporalPathCmd = 'rm -r ' + temporalBasePath;

		for (var i = 0; i < files.length; i++) {
			var fileToKeep = files[i],
				fileName = path.basename(fileToKeep),
				filePath = path.dirname(fileToKeep),
				absoluteFileName = path.join(destPath, fileToKeep),
				absoluteFilePath = path.join(destPath, filePath);

			createDirectoriesToRestoreFilesCmd += ' ' + absoluteFilePath;

			var absoluteTemporalPath = path.join(temporalBasePath, i.toString(), filePath),
				absoluteTemporalFileName = path.join(absoluteTemporalPath, fileName);

			createDirectoriesToKeepFilesCmd += ' ' + absoluteTemporalPath;

			var keepCmd = 'mv ' + absoluteFileName + ' ' + absoluteTemporalPath,
				restoreCmd = 'mv ' + absoluteTemporalFileName + ' ' + absoluteFilePath;

			keepFilesCmds.push(keepCmd);
			restoreFilesCmds.push(restoreCmd);
		}

		keepFilesCmds.unshift(createDirectoriesToKeepFilesCmd);

		restoreFilesCmds.unshift(createDirectoriesToRestoreFilesCmd);
		restoreFilesCmds.push(cleanTemporalPathCmd);

		return {
			keepFilesCmds: keepFilesCmds.join('; '),
			restoreFilesCmds: restoreFilesCmds.join('; ')
		};
	};

	var getCleanDirectoriesCmd = function(dirs) {

		var cleanDirectoriesCmd = 'rm -rf';

		for (var i = 0; i < dirs.length; i++) {
			cleanDirectoriesCmd += ' ' + destPath + dirs[i];
		}

		return cleanDirectoriesCmd;
	};

	var getCleanRecursiveDirectoriesCmd = function(dirs) {

		var cleanRecursiveDirsCmd = 'find ' + destPath + ' -type d';

		for (var i = 0; i < dirs.length; i++) {
			cleanRecursiveDirsCmd += (i === 0 ? '' : ' -o') + ' -name "' + dirs[i] + '" -exec rm -rf {} +';
		}

		return cleanRecursiveDirsCmd;
	};

	// TODO desaparecerá cuando todo vaya por src/
	var getCleanAppFilesCmds = function() {

		var fileExtension = '.js',
			strippedSuffix = 'consoleStripped' + fileExtension,
			uncompressedSuffix = 'uncompressed' + fileExtension,
			strippedFiles = '*.' + strippedSuffix,
			uncompressedFiles = '*.' + uncompressedSuffix,
			filesToClean = [strippedFiles, uncompressedFiles];

		var cleanAppFilesCmd = 'find ' + path.join(destPath, 'app', '/') + ' -type f';

		for (var j = 0; j < filesToClean.length; j++) {
			cleanAppFilesCmd += (j === 0 ? '' : ' -o') + ' -name "' + filesToClean[j] + '" -delete';
		}

		return cleanAppFilesCmd;
	};

	var getCleanSrcFilesCmds = function(fileExceptions) {

		var srcDir = path.join(destPath, 'src', '/'),
			cleanSrcFilesCmd = 'find ' + srcDir + ' -type f';

		for (var i = 0; i < fileExceptions.length; i++) {
			cleanSrcFilesCmd += ' \! -name "' + fileExceptions[i] + '"';
		}

		cleanSrcFilesCmd += ' -delete';

		return cleanSrcFilesCmd;
	};

	grunt.config('shell.cleanBuiltApp', {
		options: {
			stdout: true
		},
		command: function() {

			var keepAndRestoreCmds = getKeepAndRestoreFilesCmds(filesToKeep);

			return [
				'echo "\nCleaning build and debug resources from built application at ' + destPath + '\n"',
				keepAndRestoreCmds.keepFilesCmds,
				getCleanDirectoriesCmd(directoriesToClean),
				getCleanRecursiveDirectoriesCmd(recursiveDirectoriesToClean),
				keepAndRestoreCmds.restoreFilesCmds,
				getCleanAppFilesCmds(),
				getCleanSrcFilesCmds(cleanSrcFileExceptions)
			].join('; ');
		}
		]
	});
};
+127 −0
Original line number Diff line number Diff line
module.exports = function(grunt) {

	var path = require('path'),

		distPath = grunt.config('redmicConfig.distPath'),
		destDir = grunt.config('redmicConfig.destDir'),
		destPath = path.join(distPath, destDir, '/'),

		cleanBuiltAppConfig = grunt.config('redmicConfig.cleanBuiltApp');

	var getKeepAndRestoreFilesCmds = function(files) {

		var mkdirCmd = 'mkdir -p',
			createDirectoriesToKeepFilesCmd = mkdirCmd,
			createDirectoriesToRestoreFilesCmd = mkdirCmd,
			keepFilesCmds = [],
			restoreFilesCmds = [],
			temporalBasePath = path.join(destPath, '.temp'),
			cleanTemporalPathCmd = 'rm -r ' + temporalBasePath;

		for (var i = 0; i < files.length; i++) {
			var fileToKeep = files[i],
				fileName = path.basename(fileToKeep),
				filePath = path.dirname(fileToKeep),
				absoluteFileName = path.join(destPath, fileToKeep),
				absoluteFilePath = path.join(destPath, filePath);

			createDirectoriesToRestoreFilesCmd += ' ' + absoluteFilePath;

			var absoluteTemporalPath = path.join(temporalBasePath, i.toString(), filePath),
				absoluteTemporalFileName = path.join(absoluteTemporalPath, fileName);

			createDirectoriesToKeepFilesCmd += ' ' + absoluteTemporalPath;

			var keepCmd = 'mv ' + absoluteFileName + ' ' + absoluteTemporalPath,
				restoreCmd = 'mv ' + absoluteTemporalFileName + ' ' + absoluteFilePath;

			keepFilesCmds.push(keepCmd);
			restoreFilesCmds.push(restoreCmd);
		}

		keepFilesCmds.unshift(createDirectoriesToKeepFilesCmd);

		restoreFilesCmds.unshift(createDirectoriesToRestoreFilesCmd);
		restoreFilesCmds.push(cleanTemporalPathCmd);

		return {
			keepFilesCmds: keepFilesCmds.join('; '),
			restoreFilesCmds: restoreFilesCmds.join('; ')
		};
	};

	var getCleanDirectoriesCmd = function(dirs) {

		var cleanDirectoriesCmd = 'rm -rf';

		for (var i = 0; i < dirs.length; i++) {
			cleanDirectoriesCmd += ' ' + destPath + dirs[i];
		}

		return cleanDirectoriesCmd;
	};

	var getCleanRecursiveDirectoriesCmd = function(dirs) {

		var cleanRecursiveDirsCmd = 'find ' + destPath + ' -type d';

		for (var i = 0; i < dirs.length; i++) {
			cleanRecursiveDirsCmd += (i === 0 ? '' : ' -o') + ' -name "' + dirs[i] + '" -exec rm -rf {} +';
		}

		return cleanRecursiveDirsCmd;
	};

	// TODO desaparecerá cuando todo vaya por src/
	var getCleanAppFilesCmds = function() {

		var fileExtension = '.js',
			strippedSuffix = 'consoleStripped' + fileExtension,
			uncompressedSuffix = 'uncompressed' + fileExtension,
			strippedFiles = '*.' + strippedSuffix,
			uncompressedFiles = '*.' + uncompressedSuffix,
			filesToClean = [strippedFiles, uncompressedFiles];

		var cleanAppFilesCmd = 'find ' + path.join(destPath, 'app', '/') + ' -type f';

		for (var j = 0; j < filesToClean.length; j++) {
			cleanAppFilesCmd += (j === 0 ? '' : ' -o') + ' -name "' + filesToClean[j] + '" -delete';
		}

		return cleanAppFilesCmd;
	};

	var getCleanSrcFilesCmds = function(fileExceptions) {

		var srcDir = path.join(destPath, 'src', '/'),
			cleanSrcFilesCmd = 'find ' + srcDir + ' -type f';

		for (var i = 0; i < fileExceptions.length; i++) {
			cleanSrcFilesCmd += ' \! -name "' + fileExceptions[i] + '"';
		}

		cleanSrcFilesCmd += ' -delete';

		return cleanSrcFilesCmd;
	};

	grunt.config('shell.cleanBuiltApp', {
		options: {
			stdout: true
		},
		command: function() {

			var keepAndRestoreCmds = getKeepAndRestoreFilesCmds(cleanBuiltAppConfig.filesToKeep);

			return [
				'echo "\nCleaning build and debug resources from built application at ' + destPath + '\n"',
				keepAndRestoreCmds.keepFilesCmds,
				getCleanDirectoriesCmd(cleanBuiltAppConfig.directoriesToClean),
				getCleanRecursiveDirectoriesCmd(cleanBuiltAppConfig.recursiveDirectoriesToClean),
				keepAndRestoreCmds.restoreFilesCmds,
				getCleanAppFilesCmds(),
				getCleanSrcFilesCmds(cleanBuiltAppConfig.cleanSrcFileExceptions)
			].join('; ');
		}
	});
};