static IEnumerable <FileInfo> GetAssemblyInfoFiles(string workingDirectory, Arguments args, IFileSystem fileSystem) { if (args.UpdateAssemblyInfoFileName != null && args.UpdateAssemblyInfoFileName.Any(x => !string.IsNullOrWhiteSpace(x))) { foreach (var item in args.UpdateAssemblyInfoFileName) { var fullPath = Path.Combine(workingDirectory, item); if (EnsureVersionAssemblyInfoFile(args, fileSystem, fullPath)) { yield return(new FileInfo(fullPath)); } } } else { foreach (var item in fileSystem.DirectoryGetFiles(workingDirectory, "AssemblyInfo.*", SearchOption.AllDirectories)) { var assemblyInfoFile = new FileInfo(item); if (AssemblyVersionInfoTemplates.IsSupported(assemblyInfoFile.Extension)) { yield return(assemblyInfoFile); } } } }
static bool EnsureVersionAssemblyInfoFile(Arguments arguments, IFileSystem fileSystem, string fullPath) { if (fileSystem.Exists(fullPath)) { return(true); } if (!arguments.EnsureAssemblyInfo) { return(false); } var assemblyInfoSource = AssemblyVersionInfoTemplates.GetAssemblyInfoTemplateFor(fullPath); if (!string.IsNullOrWhiteSpace(assemblyInfoSource)) { var fileInfo = new FileInfo(fullPath); if (!fileSystem.DirectoryExists(fileInfo.Directory.FullName)) { fileSystem.CreateDirectory(fileInfo.Directory.FullName); } fileSystem.WriteAllText(fullPath, assemblyInfoSource); return(true); } Logger.WriteWarning(string.Format("No version assembly info template available to create source file '{0}'", arguments.UpdateAssemblyInfoFileName)); return(false); }
static string ReplaceOrAppend(Regex replaceRegex, string inputString, string replaceString, string fileExtension) { var assemblyAddFormat = AssemblyVersionInfoTemplates.GetAssemblyInfoAddFormatFor(fileExtension); if (replaceRegex.IsMatch(inputString)) { inputString = replaceRegex.Replace(inputString, replaceString); } else { inputString += Environment.NewLine + string.Format(assemblyAddFormat, replaceString); } return(inputString); }
public void ShouldCreateFSharpAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo() { var fileSystem = Substitute.For <IFileSystem>(); var workingDir = Path.GetTempPath(); ISet <string> assemblyInfoFile = new HashSet <string> { "VersionAssemblyInfo.fs" }; var fullPath = Path.Combine(workingDir, assemblyInfoFile.First()); var variables = VariableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false); using (new AssemblyInfoFileUpdate(new Arguments { EnsureAssemblyInfo = true, UpdateAssemblyInfo = true, UpdateAssemblyInfoFileName = assemblyInfoFile }, workingDir, variables, fileSystem)) { var source = AssemblyVersionInfoTemplates.GetAssemblyInfoTemplateFor(fullPath); fileSystem.Received().WriteAllText(fullPath, source); } }