public static void Combine(FileCommandOptions Options) { var pattern = Path.GetFileName(Options.Input); var directory = Path.GetDirectoryName(Options.Input); var extension = Path.GetExtension(Options.Input); if (String.IsNullOrWhiteSpace(Options.Output)) { Options.Output = Path.Join(directory, $"CombineFiles{extension}"); } var GetAllFileText = string.Empty; var currentEncoding = Encoding.UTF8; var inputFilePaths = Directory.GetFiles(directory, pattern); Console.WriteLine("Number of files: {0}.", inputFilePaths.Length); if (!inputFilePaths.Any()) { throw new Exception("Files not Found"); } foreach (var inputFilePath in inputFilePaths) { currentEncoding = Utils.GetCurrentFileEncoding(inputFilePath); GetAllFileText += File.ReadAllText(inputFilePath, currentEncoding); GetAllFileText += Environment.NewLine; Console.WriteLine("The file {0} has been processed.", inputFilePath); } File.WriteAllText(Options.Output, $"{GetAllFileText}", currentEncoding); }
public async Task RunAsync(FileCommandOptions opts, IConfiguration configuration) { if (!File.Exists(opts.FilePath)) { _console.ErrorLine("File doesn't exist."); return; } if (IsFileExceedingToFileSizeLimit(opts.FilePath)) { _console.ErrorLine("The file size is exceeding 5MB file size limit."); return; } var textFile = await File.ReadAllLinesAsync(opts.FilePath, Encoding.UTF8) .ConfigureAwait(false); var validUrls = FilterValidUrls(textFile); if (validUrls.Count == 0) { _console.ErrorLine("No valid URLs found."); return; } using var progress = new ProgressBar( validUrls.Count, "downloading from text file...", ProgressBarConfiguration.BarOption); var useTachiyomiLayout = opts.UseTachiyomiLayout || bool.Parse(configuration["UseTachiyomiFolderStructure"]); foreach (var url in validUrls) { var code = Regex.Match(url, @"\d+").Value; var response = await _api.FetchSingleAsync(code); await _download.DownloadAsync(response, opts.Output, opts.Pack, useTachiyomiLayout, progress); progress.Tick(); } }