Example #1
0
        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));
        }
Example #2
0
        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);
        }