public bool Execute(Model.ConfigurationFile file) { var fiBaseConfig = new FileInfo(file.BaseConfigurationPath); var fiProductionTransform = new FileInfo(file.ProductionTransformPath); var fiProductionConfigurationPath = new FileInfo(file.ProductionConfigurationPath); return(!fiProductionConfigurationPath.Exists | (fiProductionConfigurationPath.LastWriteTimeUtc < fiBaseConfig.LastWriteTimeUtc) | (fiProductionConfigurationPath.LastWriteTimeUtc < fiProductionTransform.LastWriteTimeUtc)); }
public void Execute(Model.ConfigurationFile file) { var fiProductionConfigurationPath = new FileInfo(file.ProductionConfigurationPath); //Remove old file if one exists if (fiProductionConfigurationPath.Exists) { fiProductionConfigurationPath.Delete(); } //Apply the transform and save to disk XmlTransformableDocument doc = transformConfigurationFile(file.BaseConfigurationPath, file.ProductionTransformPath); doc.Save(file.ProductionConfigurationPath); }
public Model.ConfigurationFile Parse(AdditionalText src, string basePath, string workingDirectory) { var file = new Model.ConfigurationFile(); //Set the base configuration file properties file.Source = src; file.BaseConfigurationPath = src.Path; file.BaseConfigurationDocument = XDocument.Load(file.BaseConfigurationPath, LoadOptions.SetLineInfo); //Construct the path to the prod transform file var productionTransform = string.IsNullOrEmpty(RuleOptions.ProductionBuildConfiguration) ? null : Path.Combine( Path.GetDirectoryName(file.BaseConfigurationPath) , string.Format("{0}.{1}{2}", Path.GetFileNameWithoutExtension(file.BaseConfigurationPath) , RuleOptions.ProductionBuildConfiguration, Path.GetExtension(file.BaseConfigurationPath))); //If transform file exists, run the transform and set the prod document if (!string.IsNullOrEmpty(productionTransform) && File.Exists(productionTransform)) { //Set the prod transform path file.ProductionTransformPath = productionTransform; //Set the location of the transformed file file.ProductionConfigurationPath = Path.Combine(workingDirectory, productionTransform.Replace(basePath, "").Trim(Path.DirectorySeparatorChar)); if (_shouldUpdate.Execute(file)) { _transformer.Execute(file); } //Parse the prod transform xml file.ProductionConfigurationDocument = XDocument.Load(file.ProductionConfigurationPath, LoadOptions.SetLineInfo); } else { //No transform file exists, set the defaults file.ProductionTransformPath = null; file.ProductionConfigurationPath = file.BaseConfigurationPath; file.ProductionConfigurationDocument = file.BaseConfigurationDocument; } //Set the parse timestamp file.Created = DateTime.Now; return(file); }