public override string ToString() { if (Published.HasValue) { return($"{Identity} from {Source}, published at {DateFormat.AsUtcIso8601(Published)}"); } return($"{Identity} from {Source}, no published date"); }
private static string HighestPublishedAt(DateTimeOffset?highestPublishedAt) { if (!highestPublishedAt.HasValue) { return(string.Empty); } var highestPubDate = highestPublishedAt.Value; var formattedPubDate = CodeQuote(DateFormat.AsUtcIso8601(highestPubDate)); var highestAgo = TimeSpanFormat.Ago(highestPubDate.UtcDateTime, DateTime.UtcNow); return($" published at {formattedPubDate}, {highestAgo}"); }
private void WriteLine(StreamWriter writer, PackageUpdateSet update) { var occurences = update.CurrentPackages.Count; var versionsInUse = update.CurrentPackages .Select(p => p.Version) .ToList(); var lowest = versionsInUse.Min(); var highest = versionsInUse.Max(); var highestDate = DateFormat.AsUtcIso8601(update.Packages.Major.Published); var packageSource = update.Selected.Source; writer.WriteLine($"{update.SelectedId},{occurences},{update.CountCurrentVersions()},{lowest},{highest},{update.HighestVersion},{highestDate},{packageSource}"); }
private static string PackageVersionAndDate(NuGetVersion baseline, PackageSearchMedatadata packageVersion) { const string none = ","; if (packageVersion == null) { return(none); } if (packageVersion.Identity.Version <= baseline) { return(none); } var version = packageVersion.Identity.Version; var date = DateFormat.AsUtcIso8601(packageVersion.Published); return($"{version},{date}"); }
private static string Now() { return(DateFormat.AsUtcIso8601(DateTimeOffset.Now)); }
private static string MakeCommitVersionDetails(PackageUpdateSet updates) { var versionsInUse = updates.CurrentPackages .Select(u => u.Version) .Distinct() .ToList(); var oldVersions = versionsInUse .Select(v => CodeQuote(v.ToString())) .ToList(); var minOldVersion = versionsInUse.Min(); var newVersion = CodeQuote(updates.SelectedVersion.ToString()); var packageId = CodeQuote(updates.SelectedId); var changeLevel = ChangeLevel(minOldVersion, updates.SelectedVersion); var builder = new StringBuilder(); if (oldVersions.Count == 1) { builder.AppendLine($"NuKeeper has generated a {changeLevel} update of {packageId} to {newVersion} from {oldVersions.JoinWithCommas()}"); } else { builder.AppendLine($"NuKeeper has generated a {changeLevel} update of {packageId} to {newVersion}"); builder.AppendLine($"{oldVersions.Count} versions of {packageId} were found in use: {oldVersions.JoinWithCommas()}"); } if (updates.Selected.Published.HasValue) { var packageWithVersion = CodeQuote(updates.SelectedId + " " + updates.SelectedVersion); var pubDateString = CodeQuote(DateFormat.AsUtcIso8601(updates.Selected.Published)); var pubDate = updates.Selected.Published.Value.UtcDateTime; var ago = TimeSpanFormat.Ago(pubDate, DateTime.UtcNow); builder.AppendLine($"{packageWithVersion} was published at {pubDateString}, {ago}"); } var highestVersion = updates.Packages.Major?.Identity.Version; if (highestVersion != null && (highestVersion > updates.SelectedVersion)) { LogHighestVersion(updates, highestVersion, builder); } builder.AppendLine(); if (updates.CurrentPackages.Count == 1) { builder.AppendLine("1 project update:"); } else { builder.AppendLine($"{updates.CurrentPackages.Count} project updates:"); } foreach (var current in updates.CurrentPackages) { var line = $"Updated {CodeQuote(current.Path.RelativePath)} to {packageId} {CodeQuote(updates.SelectedVersion.ToString())} from {CodeQuote(current.Version.ToString())}"; builder.AppendLine(line); } if (SourceIsPublicNuget(updates.Selected.Source.SourceUri)) { builder.AppendLine(); builder.AppendLine(NugetPackageLink(updates.Selected.Identity)); } return(builder.ToString()); }
public static string MakeCommitDetails(PackageUpdateSet updates) { var oldVersions = updates.CurrentPackages .Select(u => u.Version) .Distinct() .Select(v => CodeQuote(v.ToString())) .ToList(); var newVersion = CodeQuote(updates.SelectedVersion.ToString()); var packageId = CodeQuote(updates.SelectedId); var builder = new StringBuilder(); if (oldVersions.Count == 1) { builder.AppendLine($"NuKeeper has generated an update of {packageId} to {newVersion} from {oldVersions.JoinWithCommas()}"); } else { builder.AppendLine($"NuKeeper has generated an update of {packageId} to {newVersion}"); builder.AppendLine($"{oldVersions.Count} versions of {packageId} were found in use: {oldVersions.JoinWithCommas()}"); } if (updates.Selected.Published.HasValue) { var packageWithVersion = CodeQuote(updates.SelectedId + " " + updates.SelectedVersion); var pubDate = CodeQuote(DateFormat.AsUtcIso8601(updates.Selected.Published)); builder.AppendLine($"{packageWithVersion} was published at {pubDate}"); } var highestVersion = updates.HighestVersion; if (highestVersion != null && (highestVersion > updates.SelectedVersion)) { var allowedChange = CodeQuote(updates.AllowedChange.ToString()); var highest = CodeQuote(updates.SelectedId + " " + highestVersion); string highestPublishedAt = string.Empty; if (updates.Packages.Major.Published.HasValue) { highestPublishedAt = " published at " + CodeQuote(DateFormat.AsUtcIso8601(updates.Packages.Major.Published)); } builder.AppendLine( $"There is also a higher version, {highest}{highestPublishedAt}, but this was not applied as only {allowedChange} version changes are allowed."); } builder.AppendLine(); if (updates.CurrentPackages.Count == 1) { builder.AppendLine("1 project update:"); } else { builder.AppendLine($"{updates.CurrentPackages.Count} project updates:"); } foreach (var current in updates.CurrentPackages) { var line = $"Updated {CodeQuote(current.Path.RelativePath)} to {packageId} {CodeQuote(updates.SelectedVersion.ToString())} from {CodeQuote(current.Version.ToString())}"; builder.AppendLine(line); } builder.AppendLine(); builder.AppendLine("This is an automated update. Merge only if it passes tests"); builder.AppendLine("**NuKeeper**: https://github.com/NuKeeperDotNet/NuKeeper"); return(builder.ToString()); }