/// <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());
        }
Example #2
0
        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;
		}
Example #4
0
		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()));
            }
        }
Example #7
0
		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");
		}
Example #8
0
		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
				});
		}
Example #9
0
        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
            });
        }
Example #10
0
        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");
        }