コード例 #1
0
        public void AnalyzeRepository(string repository, bool verbose)
        {
            // validate arguments
            ConsolePrinter.Log("Analyzing file system path '{0}'", repository);
            if (String.IsNullOrWhiteSpace(repository))
            {
                throw new CommandLineException(AnalyzeCommandResources.AnalyzeCommandRepositoryRequired);
            }

            // get all the solutions in this directory
            IEnumerable <FileInfo> solutions = GetSolutionsInDirectory(repository);

            // analyze each solution
            foreach (FileInfo solution in solutions)
            {
                if (verbose)
                {
                    ConsolePrinter.Log("Solution '{0}' in folder '{1}'", solution.Name, solution.DirectoryName);
                }
                else
                {
                    ConsolePrinter.Log("Solution '{0}'", solution.Name);
                }
                AnalyzePackagesRepository(solution, verbose);
            }
        }
コード例 #2
0
        internal void AnalyzePackagesRepository(FileInfo solution, bool verbose)
        {
            if (solution.Directory == null)
            {
                return;
            }

            //TODO: packages path might be configurable
            string repositoriesConfigPath = Path.Combine(solution.Directory.FullName, @"packages\repositories.config");

            if (File.Exists(repositoriesConfigPath))
            {
                FileInfo             repositoriesConfig = new FileInfo(repositoriesConfigPath);
                IEnumerable <string> relativePackagesConfigPaths;
                using (var repositoriesConfigStream = File.OpenRead(repositoriesConfig.FullName))
                {
                    relativePackagesConfigPaths =
                        configInterpreter.GetRelativePackagesConfigPathsFromRepositoriesConfig(
                            XDocument.Load(repositoriesConfigStream));
                }

                if (relativePackagesConfigPaths != null)
                {
                    foreach (string relativePackagesConfigPath in relativePackagesConfigPaths)
                    {
                        FileInfo packagesConfig = fileSystemPathTranslator.GetAbsolutePath(repositoriesConfig, relativePackagesConfigPath);
                        string   projectName    = GetProjectNameForPackagesConfig(solution, repositoriesConfig, packagesConfig);
                        if (!string.IsNullOrWhiteSpace(projectName))
                        {
                            if (verbose)
                            {
                                ConsolePrinter.Log(" -- Project '{0}' in folder '{1}'", projectName, packagesConfig.DirectoryName);
                            }
                            else
                            {
                                ConsolePrinter.Log(" -- Project '{0}'", projectName);
                            }
                        }

                        using (var packagesConfigStream = File.OpenRead(packagesConfig.FullName))
                        {
                            IEnumerable <PackageDependency> packageDependencies =
                                configInterpreter.GetPackageDependenciesFromPackagesConfig(XDocument.Load(packagesConfigStream));
                            ConsolePrinter.PrintPackageDependenciesForProject(packageDependencies, verbose);
                        }
                    }
                }
            }
        }
コード例 #3
0
        private void AnalyzeTfsTeamProjectCollection(KeyValuePair <TfsTeamProjectCollection, ReadOnlyCollection <CatalogNode> > teamProjectCollectionKvp, bool verbose)
        {
            TfsTeamProjectCollection tpc = teamProjectCollectionKvp.Key;

            ConsolePrinter.Log("Team Project Collection '{0}'", tpc.Name);

            // Note: this requires a dependency to Microsoft.TeamFoundation.VersionControl.Client. Really needed?
            VersionControlServer vcs = tpc.GetService <VersionControlServer>();

            TeamProject[] teamProjects = vcs.GetAllTeamProjects(true);

            foreach (TeamProject teamProject in teamProjects)
            {
                ConsolePrinter.Log(" -- Team Project '{0}'", teamProject.Name);

                AnalyzeTfsTeamProject(teamProject, verbose);
            }
        }
コード例 #4
0
        public void AnalyzeRepository(string repository, bool verbose)
        {
            ConsolePrinter.Log("Analyzing TFS Source Control on server '{0}'", repository);
            if (String.IsNullOrWhiteSpace(repository))
            {
                throw new CommandLineException(AnalyzeCommandResources.AnalyzeCommandRepositoryRequired);
            }

            Uri tfsUri = new Uri(repository);
            TfsConfigurationServer tfs = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri, new UICredentialsProvider());

            tfs.EnsureAuthenticated();

            IDictionary <TfsTeamProjectCollection, ReadOnlyCollection <CatalogNode> > teamProjectCollectionInfo
                = GetTeamProjectCollectionsWithTeamProjectCatalogNodes(tfs);

            foreach (KeyValuePair <TfsTeamProjectCollection, ReadOnlyCollection <CatalogNode> > teamProjectCollectionKvp in teamProjectCollectionInfo)
            {
                AnalyzeTfsTeamProjectCollection(teamProjectCollectionKvp, verbose);
            }
        }