public ExtractMetadataWorker(ExtractMetadataInputModel input, bool rebuild) { _rawInput = input; _validInput = ValidateInput(input); _rebuild = rebuild; _preserveRawInlineComments = input.PreserveRawInlineComments; }
private static ExtractMetadataInputModel ValidateInput(ExtractMetadataInputModel input) { if (input == null) { return(null); } if (input.Items == null || input.Items.Count == 0) { Logger.Log(LogLevel.Warning, "No source project or file to process, exiting..."); return(null); } var items = new Dictionary <string, List <string> >(); // 1. Input file should exists foreach (var pair in input.Items) { if (string.IsNullOrWhiteSpace(pair.Key)) { var value = string.Join(", ", pair.Value); Logger.Log(LogLevel.Warning, $"Empty folder name is found: '{pair.Key}': '{value}'. It is not supported, skipping."); continue; } // HashSet to guarantee the input file path is unique HashSet <string> validFilePath = new HashSet <string>(); foreach (var inputFilePath in pair.Value) { if (!string.IsNullOrEmpty(inputFilePath)) { if (File.Exists(inputFilePath)) { if (IsSupported(inputFilePath)) { var path = inputFilePath.ToNormalizedFullPath(); validFilePath.Add(path); } else { var value = string.Join(",", SupportedExtensions); Logger.Log(LogLevel.Warning, $"File {inputFilePath} is not supported, supported file extension are: {value}. The file will be ignored."); } } else { Logger.Log(LogLevel.Warning, $"File {inputFilePath} does not exist, will be ignored."); } } } if (validFilePath.Count > 0) { items.Add(pair.Key, validFilePath.ToList()); } } if (items.Count > 0) { var clone = input.Clone(); clone.Items = items; return(clone); } else { return(null); } }
private ExtractMetadataInputModel ConvertToInputModel(MetadataJsonItemConfig configModel) { var projects = configModel.Source; // If Root Output folder is specified from command line, use it instead of the base directory var outputFolder = Path.Combine(Config.OutputFolder ?? Config.BaseDirectory ?? string.Empty, configModel.Destination ?? DocAsCode.Constants.DefaultMetadataOutputFolderName); var inputModel = new ExtractMetadataInputModel { PreserveRawInlineComments = configModel?.Raw ?? false, ForceRebuild = configModel?.Force ?? false, ApiFolderName = string.Empty, }; var expandedFileMapping = GlobUtility.ExpandFileMapping(Config.BaseDirectory, projects); inputModel.Items = new Dictionary<string, List<string>> { [outputFolder] = expandedFileMapping.Items.SelectMany(s => s.Files).ToList(), }; return inputModel; }