/// <summary> /// Saves the summary file with all referenced packages. /// </summary> public static void SaveSummary(this LogPackages packages, string tempPath) { tempPath.CreateDirectoryIfNotExists(); var file = Path.Combine(tempPath, "packages.txt"); File.WriteAllText(file, packages.Summary()); }
private static void SetupPackages() { var checker = new PackageChecker( Config.NuGetDbConnection, Args.CustomVersions, Args.Dependencies, Args.Bundles); using (Execute.Step("INIT")) { Console.Write("Loading local packages... "); checker.Load(); Console.WriteLine("{0} found.", checker.PackageCount); } var log = new LogPackages(); var packages = new PackagesHelper(checker, log); var references = new ReferencesHelper(checker, log); var nuget = new NuGetHelper(checker, log); using (Execute.Step("ADJUST")) { packages.Adjust(); references.Adjust(); } if (Args.BranchName != null) { using (Execute.Step("RESTORE (BRANCH)")) { (new NuGetSubstitute(Config.NuGetDbConnection)).RestoreBranchedPackages(); } } using (Execute.Step("RESTORE")) { nuget.RestoreAll(); } using (Execute.Step("UPDATE")) { nuget.UpdateAll(); } using (Execute.Step("REPORT & SAVE")) { log.Report(); Console.Write("Saving local references... "); log.SaveReferences(Args.ReferencesPath); Console.WriteLine("OK"); Console.Write("Saving packages summary... "); log.SaveSummary(Args.TempPath); Console.WriteLine("OK"); } }
public PackagesHelper(PackageChecker checker, LogPackages log) { if (checker == null) throw new ArgumentNullException(nameof(checker)); if (log == null) throw new ArgumentNullException(nameof(log)); m_checker = checker; m_log = log; }
private static void SetupPackages() { var checker = new PackageChecker( Config.NuGetDbConnection, Args.CustomVersions, Args.Dependencies, Args.Bundles); using (Execute.Step("INIT")) { Console.Write("Loading local packages... "); checker.Load(); Console.WriteLine("{0} found.", checker.PackageCount); } var log = new LogPackages(); var packages = new PackagesHelper(checker, log); var references = new ReferencesHelper(checker, log); var nuget = new NuGetHelper(checker, log); using (Execute.Step("ADJUST")) { packages.Adjust(); references.Adjust(); } using (Execute.Step("RESTORE")) { nuget.RestoreAll(); } using (Execute.Step("UPDATE")) { nuget.UpdateAll(); } using (Execute.Step("REPORT & SAVE")) { log.Report(); Console.Write("Saving local references... "); log.SaveReferences(Args.ReferencesPath); Console.WriteLine("OK"); Console.Write("Saving packages summary... "); log.SaveSummary(Args.TempPath); Console.WriteLine("OK"); } }
public ReferencesHelper(PackageChecker checker, LogPackages log) { if (checker == null) { throw new ArgumentNullException(nameof(checker)); } if (log == null) { throw new ArgumentNullException(nameof(log)); } m_checker = checker; m_log = log; }
/// <summary> /// Updates local references folder to represent the actual dependencies for all referenced packages. /// </summary> public static void SaveReferences(this LogPackages packages, string referencesPath) { referencesPath.CreateDirectoryIfNotExists(); var after = packages.Values .Where(i => i.IsLocal) .ToDictionary(i => i.ProjectName); var before = Directory .GetFiles(referencesPath) .ToDictionary(Path.GetFileNameWithoutExtension); var toAdd = new List <string>(); foreach (var reference in after) { if (before.ContainsKey(reference.Key)) { continue; } var name = String.Format("{0}.txt", reference.Key); var path = Path.Combine(referencesPath, name); toAdd.Add(path); } var toRemove = new List <string>(); foreach (var reference in before) { if (after.ContainsKey(reference.Key)) { continue; } toRemove.Add(reference.Value); } foreach (var file in toRemove) { File.Delete(file); } foreach (var file in toAdd) { File.WriteAllText(file, String.Format("Created on {0}", DateTime.Now.ToDetailedString())); } }
private static void SetupRelatedProjects() { string path; switch (Args.ProjectType) { case ProjectType.CloudService: path = Paths.CloudProjectFile; break; case ProjectType.FabricApplication: path = Paths.FabricProjectFile; break; default: return; } if (String.IsNullOrEmpty(Args.RelatedPath)) throw new InvalidOperationException("Configuration argument 'RelatedPath' is not set."); if (String.IsNullOrEmpty(Args.ReferencesPath)) throw new InvalidOperationException("Configuration argument 'ReferencesPath' is not set."); Args.RelatedPath.CreateDirectoryIfNotExists(); Args.ReferencesPath.CreateDirectoryIfNotExists(); Console.Write("Converting paths for related projects... "); var project = new ProjectDocument(path); var references = project.GetProjectReferences(); if (references.Count == 0) throw new InvalidOperationException("It is strange that cloud service or fabric application does not have any referenced projects."); var log = new LogPackages(); foreach (var reference in references) { SetupRelatedProject(reference, log); } project.Save(); Console.WriteLine("OK"); log.Report(); Console.Write("Saving local references... "); log.SaveReferences(Args.ReferencesPath); Console.WriteLine("OK"); Console.Write("Saving packages summary... "); log.SaveSummary(Args.TempPath); Console.WriteLine("OK"); }
private static void SetupRelatedProject(ProjectReference reference, LogPackages log) { var fileName = Path.GetFileName(reference.Include); var localName = Path.GetFileName(Path.GetDirectoryName(reference.Include)); var referenceName = reference.Name; // another hardcode for resolving the names quickly if (String.IsNullOrEmpty(referenceName)) { referenceName = localName; if (referenceName.StartsWith("Metro.") || referenceName.StartsWith("FlexQueue.")) { referenceName = "CnetContent." + localName; } } var includePath = Path.Combine(Args.RelatedPath, localName, fileName); // quick dirty hardcode below with calling tools with specific paths and arguments var blobVersion = String.Format("{0}/version.txt", referenceName); var localVersion = String.Format(@"{0}\{1}.txt", Args.RelatedPath, localName); Execute.Run( "CCNet.Build.AzureDownload.exe", String.Format( @"Storage=Devbuild Container=build ""BlobFile={0}"" ""LocalFile={1}""", blobVersion, localVersion)); var version = File.ReadAllText(localVersion); var blobSnapshot = String.Format("{0}/{1}/{0}.snapshot.zip", referenceName, version); var localSnapshot = String.Format(@"{0}\{1}.zip", Args.RelatedPath, localName); Execute.Run( "CCNet.Build.AzureDownload.exe", String.Format( @"Storage=Devbuild Container=snapshot ""BlobFile={0}"" ""LocalFile={1}""", blobSnapshot, localSnapshot)); var localFolder = String.Format(@"{0}\{1}", Args.RelatedPath, localName); Execute.Run( @"C:\Program Files\7-Zip\7z.exe", String.Format(@"x ""-o{0}"" ""{1}""", localFolder, localSnapshot)); reference.UpdateLocation(includePath); log.Add( referenceName, new LogPackage { PackageId = referenceName, ProjectName = referenceName, ProjectUrl = String.Format("http://rufc-devbuild.cneu.cnwk/ccnet/server/Azure/project/{0}/ViewProjectReport.aspx", referenceName), IsLocal = true, SourceVersion = null, BuildVersion = new Version(version), ProjectReference = true }); }
private static void SetupRelatedProjects() { string path; switch (Args.ProjectType) { case ProjectType.CloudService: path = Paths.CloudProjectFile; break; case ProjectType.FabricApplication: path = Paths.FabricProjectFile; break; default: return; } if (String.IsNullOrEmpty(Args.RelatedPath)) { throw new InvalidOperationException("Configuration argument 'RelatedPath' is not set."); } if (String.IsNullOrEmpty(Args.ReferencesPath)) { throw new InvalidOperationException("Configuration argument 'ReferencesPath' is not set."); } Args.RelatedPath.CreateDirectoryIfNotExists(); Args.ReferencesPath.CreateDirectoryIfNotExists(); Console.Write("Converting paths for related projects... "); var project = new ProjectDocument(path); var references = project.GetProjectReferences(); if (references.Count == 0) { throw new InvalidOperationException("It is strange that cloud service or fabric application does not have any referenced projects."); } var log = new LogPackages(); foreach (var reference in references) { SetupRelatedProject(reference, log); } project.Save(); Console.WriteLine("OK"); log.Report(); Console.Write("Saving local references... "); log.SaveReferences(Args.ReferencesPath); Console.WriteLine("OK"); Console.Write("Saving packages summary... "); log.SaveSummary(Args.TempPath); Console.WriteLine("OK"); }