Commit 20a623b1 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Habilita capas compiladas en src, mejora limpieza

Para poder servir la nueva capa compilada de mantenimiento de dominios,
se habilita el consumo de packages desde src y se omite el borrado del
directorio src.

Para evitar meter al compilado todo el contenido de src, se revisa el
proceso de limpieza, refactorizando e introduciendo nuevos comandos de
borrado.
parent 69044e2b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5,6 +5,9 @@ dojoConfig = {
	packages: [{
		name: 'app',
		location: '../app'
	},{
		name: 'src',
		location: '../src'
	},{
		name: 'dojo',
		location: '../dojo'
+103 −80
Original line number Diff line number Diff line
module.exports = function(grunt) {

	var directoriesToDelete = [
	var 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', 'src', 'templates', 'tv4', 'wicket'
		'RWidgets', 'sockjs', 'stomp-websocket', 'templates', 'tv4', 'wicket'
	];

	var recursiveDirectoriesToDelete = [
	var recursiveDirectoriesToClean = [
		'nls'
	];

	var fileExtension = '.js',
		strippedSuffix = 'consoleStripped' + fileExtension,
		uncompressedSuffix = 'uncompressed' + fileExtension,
		strippedFiles = '*.' + strippedSuffix,
		uncompressedFiles = '*.' + uncompressedSuffix,

		filesToDelete = [strippedFiles, uncompressedFiles],
		filesToKeep = [
	var filesToKeep = [
		'dojo/dojo.js', 'dojo/resources/blank.gif', 'dojox/widget/ColorPicker/images/*.png',
			'leaflet/dist/images/*.png', 'src/app/App.js'
		'leaflet/dist/images/*.png'
	];

	var resourcesToClean = {
		filesToKeep: filesToKeep,
		directories: directoriesToDelete,
		recursiveDirectories: recursiveDirectoriesToDelete,
		files: filesToDelete
	};
	var cleanSrcFileExceptions = [
		'App.js', '*View.js', '*Form.html', '404.js', 'ActivateAccount.js', 'NoSupportBrowser.js'
	];

	var path = require('path'),

@@ -36,29 +26,18 @@ module.exports = function(grunt) {
		destDir = grunt.config('redmicConfig.destDir'),
		destPath = path.join(distPath, destDir, '/');

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

			var filesToKeep = resourcesToClean.filesToKeep,
				directoriesToClean = resourcesToClean.directories,
				recursiveDirectoriesToClean = resourcesToClean.recursiveDirectories,
				filesToClean = resourcesToClean.files,
	var getKeepAndRestoreFilesCmds = function(files) {

				createDirectoriesToKeepFilesCmd = 'mkdir -p',
				createDirectoriesToRestoreFilesCmd = 'mkdir -p',
		var mkdirCmd = 'mkdir -p',
			createDirectoriesToKeepFilesCmd = mkdirCmd,
			createDirectoriesToRestoreFilesCmd = mkdirCmd,
			keepFilesCmds = [],
			restoreFilesCmds = [],
				cleanDirectoriesCmd = 'rm -rf',
				cleanRecursiveDirsCmd = 'find ' + destPath + ' -type d',
				cleanFilesCmd = 'find ' + destPath + ' -type f',
			temporalBasePath = path.join(destPath, '.temp'),
				i;
			cleanTemporalPathCmd = 'rm -r ' + temporalBasePath;

			for (i = 0; i < filesToKeep.length; i++) {
				var fileToKeep = filesToKeep[i],
		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),
@@ -78,44 +57,88 @@ module.exports = function(grunt) {
			restoreFilesCmds.push(restoreCmd);
		}

			restoreFilesCmds.push('rm -r ' + temporalBasePath);
		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) {

			for (i = 0; i < directoriesToClean.length; i++) {
				var directory = directoriesToClean[i];
		var cleanRecursiveDirsCmd = 'find ' + destPath + ' -type d';

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

			var optionPrefix;
			for (i = 0; i < recursiveDirectoriesToClean.length; i++) {
				var recursiveDirectory = recursiveDirectoriesToClean[i];
		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];

				optionPrefix = (!i ? '' : ' -o');
		var cleanAppFilesCmd = 'find ' + path.join(destPath, 'app', '/') + ' -type f';

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

			for (i = 0; i < filesToClean.length; i++) {
				var file = filesToClean[i];
		return cleanAppFilesCmd;
	};

	var getCleanSrcFilesCmds = function(fileExceptions) {

				optionPrefix = (!i ? '' : ' -o');
		var srcDir = path.join(destPath, 'src', '/'),
			cleanSrcFilesCmd = 'find ' + srcDir + ' -type f';

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

			var appDir = destPath + 'app',
				cleanUnusedAppFilesCmd = 'find ' + appDir + ' -maxdepth 1 -type f -name "*.js" -delete';
		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"',
				createDirectoriesToKeepFilesCmd,
				keepFilesCmds.join('; '),
				cleanDirectoriesCmd,
				cleanRecursiveDirsCmd,
				createDirectoriesToRestoreFilesCmd,
				restoreFilesCmds.join('; '),
				cleanFilesCmd,
				cleanUnusedAppFilesCmd
				keepAndRestoreCmds.keepFilesCmds,
				getCleanDirectoriesCmd(directoriesToClean),
				getCleanRecursiveDirectoriesCmd(recursiveDirectoriesToClean),
				keepAndRestoreCmds.restoreFilesCmds,
				getCleanAppFilesCmds(),
				getCleanSrcFilesCmds(cleanSrcFileExceptions)
			].join('; ');
		}
	});