private CompilerResult ProcessConfig(string baseFolder, Config config) { ICompiler compiler = CompilerService.GetCompiler(config); var result = compiler.Compile(config); if (result.Errors.Any(e => !e.IsWarning)) { return(result); } if (Path.GetExtension(config.OutputFile).Equals(".css", StringComparison.OrdinalIgnoreCase) && AdjustRelativePaths(config)) { result.CompiledContent = CssRelativePath.Adjust(result.CompiledContent, config); } config.Output = result.CompiledContent; FileInfo outputFile = config.GetAbsoluteOutputFile(); bool containsChanges = FileHelpers.HasFileContentChanged(outputFile.FullName, config.Output); OnBeforeProcess(config, baseFolder, containsChanges); if (containsChanges) { string dir = outputFile.DirectoryName; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText(outputFile.FullName, config.Output, new UTF8Encoding(true)); } OnAfterProcess(config, baseFolder, containsChanges); //if (!config.Minify.ContainsKey("enabled") || config.Minify["enabled"].ToString().Equals("true", StringComparison.OrdinalIgnoreCase)) //{ FileMinifier.MinifyFile(config); //} if (!string.IsNullOrEmpty(result.SourceMap)) { string absolute = config.GetAbsoluteOutputFile().FullName; string mapFile = absolute + ".map"; bool smChanges = FileHelpers.HasFileContentChanged(mapFile, result.SourceMap); OnBeforeWritingSourceMap(absolute, mapFile, smChanges); if (smChanges) { File.WriteAllText(mapFile, result.SourceMap, new UTF8Encoding(true)); } OnAfterWritingSourceMap(absolute, mapFile, smChanges); } return(result); }
/// <summary> /// Execute the Task /// </summary> public override bool Execute() { FileInfo configFile = new FileInfo(FileName); CompilerService.Initialize(); Log.LogMessage(MessageImportance.High, Environment.NewLine + "WebCompiler: Begin compiling " + configFile.Name); if (!configFile.Exists) { Log.LogWarning(configFile.FullName + " does not exist"); return(true); } ConfigFileProcessor processor = new ConfigFileProcessor(); processor.BeforeProcess += (s, e) => { FileHelpers.RemoveReadonlyFlagFromFile(e.Config.GetAbsoluteOutputFile()); }; processor.AfterProcess += Processor_AfterProcess; processor.BeforeWritingSourceMap += (s, e) => { FileHelpers.RemoveReadonlyFlagFromFile(e.ResultFile); }; processor.AfterWritingSourceMap += Processor_AfterWritingSourceMap; FileMinifier.BeforeWritingMinFile += (s, e) => { FileHelpers.RemoveReadonlyFlagFromFile(e.ResultFile); }; FileMinifier.AfterWritingMinFile += FileMinifier_AfterWritingMinFile; FileMinifier.BeforeWritingGzipFile += (s, e) => { FileHelpers.RemoveReadonlyFlagFromFile(e.ResultFile); }; FileMinifier.AfterWritingGzipFile += FileMinifier_AfterWritingGzipFile; try { var results = processor.Process(configFile.FullName); bool isSuccessful = true; foreach (CompilerResult result in results) { if (result.HasErrors) { isSuccessful = false; foreach (var error in result.Errors) { Log.LogError("WebCompiler", "0", "", error.FileName, error.LineNumber, error.ColumnNumber, error.LineNumber, error.ColumnNumber, error.Message, null);; } } } Log.LogMessage(MessageImportance.High, "WebCompiler: Done compiling " + configFile.Name); return(isSuccessful); } catch (Exception ex) { Log.LogError(ex.Message); return(false); } }
private CompilerResult ProcessConfig(string baseFolder, Config config) { ICompiler compiler = CompilerService.GetCompiler(config); var result = compiler.Compile(config); if (result.HasErrors) { return(result); } config.Output = result.CompiledContent; string outputFile = Path.Combine(baseFolder, config.OutputFile); OnBeforeProcess(config, baseFolder); File.WriteAllText(outputFile, config.Output, new UTF8Encoding(true)); OnAfterProcess(config, baseFolder); if (config.Minify.ContainsKey("enabled") && config.Minify["enabled"].ToString().Equals("true", StringComparison.OrdinalIgnoreCase)) { FileMinifier.MinifyFile(config); } if (config.SourceMap) { if (!string.IsNullOrEmpty(result.SourceMap)) { string aboslute = config.GetAbsoluteOutputFile(); string mapFile = aboslute + ".map"; OnBeforeWritingSourceMap(aboslute, mapFile); File.WriteAllText(mapFile, result.SourceMap, new UTF8Encoding(true)); OnAfterWritingSourceMap(aboslute, mapFile); } } return(result); }