public override string ToString()
        {
            if (Published.HasValue)
            {
                return($"{Identity} from {Source}, published at {DateFormat.AsUtcIso8601(Published)}");
            }

            return($"{Identity} from {Source}, no published date");
        }
Exemple #2
0
        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));
 }
Exemple #6
0
        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());
        }
Exemple #7
0
        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());
        }