///<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; } }
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); }