private static string DetermineTransformFileName(string sourceFile, XmlConfigTransformDefinition transformation, bool defaultExtension) { var tp = transformation.TransformPattern; if (defaultExtension && !tp.EndsWith(".config")) { tp += ".config"; } if (transformation.Advanced && transformation.IsTransformWildcard && transformation.IsSourceWildcard) { return(DetermineWildcardTransformFileName(sourceFile, transformation, tp)); } if (transformation.Advanced && transformation.IsTransformWildcard && !transformation.IsSourceWildcard) { var transformDirectory = GetTransformationFileDirectory(sourceFile, transformation); return(Path.Combine(transformDirectory, GetDirectoryName(tp), "*." + GetFileName(tp).TrimStart('.'))); } if (transformation.Advanced && !transformation.IsTransformWildcard) { var transformDirectory = GetTransformationFileDirectory(sourceFile, transformation); return(Path.Combine(transformDirectory, tp)); } return(Path.ChangeExtension(sourceFile, tp)); }
void ApplyTransformations(string sourceFile, XmlConfigTransformDefinition transformation, ISet<string> alreadyRun) { if (transformation == null) return; foreach (var transformFile in DetermineTransformFileNames(sourceFile, transformation)) { var sourceFileName = (transformation?.SourcePattern?.Contains(Path.DirectorySeparatorChar) ?? false) ? fileSystem.GetRelativePath(transformFile, sourceFile).TrimStart('.',Path.DirectorySeparatorChar) : GetFileName(sourceFile); if (transformation.Advanced && !transformation.IsSourceWildcard && !string.Equals(transformation.SourcePattern, sourceFileName, StringComparison.InvariantCultureIgnoreCase)) continue; if (transformation.Advanced && transformation.IsSourceWildcard && !DoesFileMatchWildcardPattern(sourceFileName, transformation.SourcePattern)) continue; if (!fileSystem.FileExists(transformFile)) continue; if (string.Equals(sourceFile, transformFile, StringComparison.InvariantCultureIgnoreCase)) continue; if (alreadyRun.Contains(transformFile)) continue; Log.Info("Transforming '{0}' using '{1}'.", sourceFile, transformFile); configurationTransformer.PerformTransform(sourceFile, transformFile, sourceFile); alreadyRun.Add(transformFile); } }
public IEnumerable <string> DetermineTransformFileNames(string sourceFile, XmlConfigTransformDefinition transformation) { var defaultTransformFileName = DetermineTransformFileName(sourceFile, transformation, true); var transformFileName = DetermineTransformFileName(sourceFile, transformation, false); string fullTransformPath; if (Path.IsPathRooted(transformFileName)) { fullTransformPath = Path.GetFullPath(GetDirectoryName(transformFileName)); } else { var relativeTransformPath = fileSystem.GetRelativePath(sourceFile, transformFileName); fullTransformPath = Path.GetFullPath(Path.Combine(GetDirectoryName(sourceFile), GetDirectoryName(relativeTransformPath))); } if (!fileSystem.DirectoryExists(fullTransformPath)) { yield break; } // The reason we use fileSystem.EnumerateFiles here is to get the actual file-names from the physical file-system. // This prevents any issues with mis-matched casing in transform specifications. foreach (var transformFile in fileSystem.EnumerateFiles(fullTransformPath, GetFileName(defaultTransformFileName), GetFileName(transformFileName))) { var sourceFileName = (transformation?.SourcePattern?.Contains(Path.DirectorySeparatorChar) ?? false) ? fileSystem.GetRelativePath(transformFile, sourceFile).TrimStart('.', Path.DirectorySeparatorChar) : GetFileName(sourceFile); if (transformation.Advanced && !transformation.IsSourceWildcard && !string.Equals(transformation.SourcePattern, sourceFileName, StringComparison.InvariantCultureIgnoreCase)) { continue; } if (transformation.Advanced && transformation.IsSourceWildcard && !DoesFileMatchWildcardPattern(sourceFileName, transformation.SourcePattern)) { continue; } if (!fileSystem.FileExists(transformFile)) { continue; } if (string.Equals(sourceFile, transformFile, StringComparison.InvariantCultureIgnoreCase)) { continue; } yield return(transformFile); } }
static string GetTransformationFileDirectory(string sourceFile, XmlConfigTransformDefinition transformation) { var sourceDirectory = GetDirectoryName(sourceFile); if (!transformation.SourcePattern.Contains(Path.DirectorySeparatorChar)) { return(sourceDirectory); } var sourcePattern = transformation.SourcePattern; var sourcePatternPath = sourcePattern.Substring(0, sourcePattern.LastIndexOf(Path.DirectorySeparatorChar)); return(sourceDirectory.Replace(sourcePatternPath, string.Empty)); }
static string DetermineWildcardTransformFileName(string sourceFile, XmlConfigTransformDefinition transformation, string transformPattern) { var sourcePatternWithoutPrefix = GetFileName(transformation.SourcePattern); if (transformation.SourcePattern.StartsWith(".")) { sourcePatternWithoutPrefix = transformation.SourcePattern.Remove(0, 1); } var transformDirectory = GetTransformationFileDirectory(sourceFile, transformation); var baseFileName = transformation.IsSourceWildcard ? GetFileName(sourceFile).Replace(sourcePatternWithoutPrefix, "") : GetFileName(sourceFile); var baseTransformPath = Path.Combine(transformDirectory, GetDirectoryName(transformPattern), baseFileName); return(Path.ChangeExtension(baseTransformPath, GetFileName(transformPattern))); }
private static string DetermineTransformFileName(string sourceFile, XmlConfigTransformDefinition transformation, bool defaultExtension) { var tp = transformation.TransformPattern; if (defaultExtension && !tp.EndsWith(".config")) tp += ".config"; if (transformation.Advanced && transformation.Wildcard) { var baseFileName = sourceFile.Replace(transformation.SourcePattern, ""); return Path.ChangeExtension(baseFileName, tp); } if (transformation.Advanced && !transformation.Wildcard) return Path.Combine(Path.GetDirectoryName(sourceFile), tp); return Path.ChangeExtension(sourceFile, tp); }
static string GetTransformationFileDirectory(string sourceFile, XmlConfigTransformDefinition transformation) { var sourceDirectory = GetDirectoryName(sourceFile); if (!transformation.SourcePattern.Contains(Path.DirectorySeparatorChar)) { return(sourceDirectory); } var sourcePattern = transformation.SourcePattern; var sourcePatternPath = sourcePattern.Substring(0, sourcePattern.LastIndexOf(Path.DirectorySeparatorChar)); if (sourceDirectory.EndsWith(sourcePatternPath, StringComparison.OrdinalIgnoreCase)) { return(sourceDirectory.Substring(0, sourceDirectory.Length - sourcePatternPath.Length)); } return(sourceDirectory); }
private string GetSourceFileName(string sourceFile, XmlConfigTransformDefinition transformation, string transformFileName, string transformFile, RunningDeployment deployment) { var sourcePattern = transformation.SourcePattern ?? ""; if (Path.IsPathRooted(transformFileName) && sourcePattern.StartsWith("." + Path.DirectorySeparatorChar)) { var path = fileSystem.GetRelativePath(deployment.CurrentDirectory, sourceFile); return("." + path.Substring(path.IndexOf(Path.DirectorySeparatorChar))); } if (sourcePattern.Contains(Path.DirectorySeparatorChar)) { return(fileSystem.GetRelativePath(transformFile, sourceFile) .TrimStart('.', Path.DirectorySeparatorChar)); } return(GetFileName(sourceFile)); }
public IEnumerable <string> DetermineTransformFileNames(string sourceFile, XmlConfigTransformDefinition transformation, bool diagnosticLoggingEnabled, RunningDeployment deployment) { var defaultTransformFileName = DetermineTransformFileName(sourceFile, transformation, true); var transformFileName = DetermineTransformFileName(sourceFile, transformation, false); string fullTransformDirectoryPath; if (Path.IsPathRooted(transformFileName)) { fullTransformDirectoryPath = Path.GetFullPath(GetDirectoryName(transformFileName)); } else { var relativeTransformPath = fileSystem.GetRelativePath(sourceFile, transformFileName); fullTransformDirectoryPath = Path.GetFullPath(Path.Combine(GetDirectoryName(sourceFile), GetDirectoryName(relativeTransformPath))); } if (!fileSystem.DirectoryExists(fullTransformDirectoryPath)) { if (diagnosticLoggingEnabled) { log.Verbose($" - Skipping as transform folder \'{fullTransformDirectoryPath}\' does not exist"); } yield break; } // The reason we use fileSystem.EnumerateFiles here is to get the actual file-names from the physical file-system. // This prevents any issues with mis-matched casing in transform specifications. var enumerateFiles = fileSystem.EnumerateFiles(fullTransformDirectoryPath, GetFileName(defaultTransformFileName), GetFileName(transformFileName)).Distinct().ToArray(); if (enumerateFiles.Any()) { foreach (var transformFile in enumerateFiles) { var sourceFileName = GetSourceFileName(sourceFile, transformation, transformFileName, transformFile, deployment); if (transformation.Advanced && !transformation.IsSourceWildcard && !string.Equals(transformation.SourcePattern, sourceFileName, StringComparison.OrdinalIgnoreCase)) { if (diagnosticLoggingEnabled) { log.Verbose($" - Skipping as file name \'{sourceFileName}\' does not match the target pattern \'{transformation.SourcePattern}\'"); } continue; } if (transformation.Advanced && transformation.IsSourceWildcard && !DoesFileMatchWildcardPattern(sourceFileName, transformation.SourcePattern)) { if (diagnosticLoggingEnabled) { log.Verbose($" - Skipping as file name \'{sourceFileName}\' does not match the wildcard target pattern \'{transformation.SourcePattern}\'"); } continue; } if (!fileSystem.FileExists(transformFile)) { if (diagnosticLoggingEnabled) { log.Verbose($" - Skipping as transform \'{transformFile}\' does not exist"); } continue; } if (string.Equals(sourceFile, transformFile, StringComparison.OrdinalIgnoreCase)) { if (diagnosticLoggingEnabled) { log.Verbose($" - Skipping as target \'{sourceFile}\' is the same as transform \'{transformFile}\'"); } continue; } yield return(transformFile); } } else if (diagnosticLoggingEnabled) { if (GetFileName(defaultTransformFileName) == GetFileName(transformFileName)) { log.Verbose($" - skipping as transform \'{GetFileName(defaultTransformFileName)}\' could not be found in \'{fullTransformDirectoryPath}\'"); } else { log.Verbose($" - skipping as neither transform \'{GetFileName(defaultTransformFileName)}\' nor transform \'{GetFileName(transformFileName)}\' could be found in \'{fullTransformDirectoryPath}\'"); } } }
public static IEnumerable<string> DetermineTransformFileNames(string sourceFile, XmlConfigTransformDefinition transformation) { yield return DetermineTransformFileName(sourceFile, transformation, true); yield return DetermineTransformFileName(sourceFile, transformation, false); }
private IEnumerable<string> DetermineTransformFileNames(string sourceFile, XmlConfigTransformDefinition transformation) { // The reason we use fileSystem.EnumerateFiles here is to get the actual file-names from the physical file-system. // This prevents any issues with mis-matched casing in transform specifications. return fileSystem.EnumerateFiles(Path.GetDirectoryName(sourceFile), GetRelativePathToTransformFile(sourceFile, DetermineTransformFileName(sourceFile, transformation, true)), GetRelativePathToTransformFile(sourceFile, DetermineTransformFileName(sourceFile, transformation, false)) ); }
static string GetTransformationFileDirectory(string sourceFile, XmlConfigTransformDefinition transformation) { var sourceDirectory = GetDirectoryName(sourceFile); if (!transformation.SourcePattern.Contains(Path.DirectorySeparatorChar)) return sourceDirectory; var sourcePattern = transformation.SourcePattern; var sourcePatternPath = sourcePattern.Substring(0, sourcePattern.LastIndexOf(Path.DirectorySeparatorChar)); return sourceDirectory.Replace(sourcePatternPath, string.Empty); }
static string DetermineWildcardTransformFileName(string sourceFile, XmlConfigTransformDefinition transformation, string transformPattern) { var sourcePatternWithoutPrefix = GetFileName(transformation.SourcePattern); if (transformation.SourcePattern.StartsWith(".")) { sourcePatternWithoutPrefix = transformation.SourcePattern.Remove(0, 1); } var transformDirectory = GetTransformationFileDirectory(sourceFile, transformation); var baseFileName = transformation.IsSourceWildcard ? GetFileName(sourceFile).Replace(sourcePatternWithoutPrefix, "") : GetFileName(sourceFile); var baseTransformPath = Path.Combine(transformDirectory, GetDirectoryName(transformPattern), baseFileName); return Path.ChangeExtension(baseTransformPath, GetFileName(transformPattern)); }
private static string DetermineTransformFileName(string sourceFile, XmlConfigTransformDefinition transformation, bool defaultExtension) { var tp = transformation.TransformPattern; if (defaultExtension && !tp.EndsWith(".config")) tp += ".config"; if (transformation.Advanced && transformation.IsTransformWildcard && transformation.IsSourceWildcard) { return DetermineWildcardTransformFileName(sourceFile, transformation, tp); } if (transformation.Advanced && transformation.IsTransformWildcard && !transformation.IsSourceWildcard) { var transformDirectory = GetTransformationFileDirectory(sourceFile, transformation); return Path.Combine(transformDirectory, GetDirectoryName(tp), "*." + GetFileName(tp).TrimStart('.')); } if (transformation.Advanced && !transformation.IsTransformWildcard) { var transformDirectory = GetTransformationFileDirectory(sourceFile, transformation); return Path.Combine(transformDirectory, tp); } return Path.ChangeExtension(sourceFile, tp); }
private IEnumerable<string> DetermineTransformFileNames(string sourceFile, XmlConfigTransformDefinition transformation) { var defaultTransformFileName = DetermineTransformFileName(sourceFile, transformation, true); var transformFileName = DetermineTransformFileName(sourceFile, transformation, false); var relativeTransformPath = fileSystem.GetRelativePath(sourceFile, transformFileName); var fullTransformPath = Path.GetFullPath(Path.Combine(GetDirectoryName(sourceFile), GetDirectoryName(relativeTransformPath))); if (!fileSystem.DirectoryExists(fullTransformPath)) return Enumerable.Empty<string>(); // The reason we use fileSystem.EnumerateFiles here is to get the actual file-names from the physical file-system. // This prevents any issues with mis-matched casing in transform specifications. return fileSystem.EnumerateFiles(fullTransformPath, GetFileName(defaultTransformFileName), GetFileName(transformFileName) ); }