예제 #1
0
        ///<inheritdoc cref="IProjectInfoTransmitter"/>
        public async Task <RepositoryImportResult> Work(TransmitterArguments args, IInputUriProvider uriProvider = null, IProjectInfoBuilder projectInfoBuilder = null)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            try
            {
                this.DisplayParameters(args);

                IEnumerable <string> uris = this.GetPaths(args, uriProvider ?? UriProviderFactory.Get(args, this.logger));

                if (projectInfoBuilder == null)
                {
                    projectInfoBuilder = ProjectInfoBuilderFactory.Get(args, this.logger);
                }

                this.AddEnrichersToBuilder(projectInfoBuilder);

                IEnumerable <ProjectInfo> infos = projectInfoBuilder.GetInfos(uris);

                this.projectInfoSender.SetBaseAddress(args.ApiBaseUri);

                var result = await this.projectInfoSender.Send(infos).ConfigureAwait(false);

                this.logger.Info("All done");
                return(result);
            }
            catch (Exception ex)
            {
                this.logger.Fatal(ex);
                throw;
            }
        }
예제 #2
0
        private IEnumerable <string> GetPaths(TransmitterArguments args, IInputUriProvider provider)
        {
            IEnumerable <string> uris;

            if (!string.IsNullOrEmpty(args.ProjectPathsListInputFilePath))
            {
                this.logger.Info($"File paths will be loaded from input file [{args.ProjectPathsListInputFilePath}].");
                var lines = File.ReadAllLines(args.ProjectPathsListInputFilePath);
                this.logger.Info($"Files will be loaded from [{lines.Length}] paths specified in the input file [{args.ProjectPathsListInputFilePath}].");
                return(lines);
            }

            if (args.ProjectPaths != null && args.ProjectPaths.Any())
            {
                this.logger.Info($"Files will be loaded from [{args.ProjectPaths.Count}] paths specified in the arguments.");
                uris = args.ProjectPaths;
            }
            else
            {
                Regex regex = null;
                if (!string.IsNullOrEmpty(args.IgnoredPathsRegex))
                {
                    regex = new Regex(args.IgnoredPathsRegex);
                }
                this.logger.Info($"Loading files from [{args.CodeRootFolder}], excluding those which match regex [{args.IgnoredPathsRegex}]");
                uris = provider.GetUris(args.CodeRootFolder, regex);
            }

            return(uris);
        }