private string GetOutputPath(string outputExtension) { string outputPathDefault = Path.Combine(Directory.GetCurrentDirectory(), string.Format(Constants.DefaultOutputFileName, outputExtension)); string outputPath = this.argumentManager.GetArgumentValue(Constants.ConsoleArguments.OutputFileName, outputPathDefault); outputPath = ConsoleMergeManager.CleanAndValidateOutputPath(outputPath, outputExtension); return(outputPath); }
/// <summary> /// Coordinates the merging of code files using information provided via the console. /// </summary> public async Task MergeAsync() { if (!this.args.Any() || this.argumentManager.IsArgumentPresent(Constants.ConsoleArguments.Help)) { await Console.Error.WriteLineAsync(this.GetHelp()); return; } string language = this.argumentManager.GetArgumentValue(Constants.ConsoleArguments.Language); if (language == null) { await Console.Error.WriteLineAsync($"[ERROR] Please provide the language type using {string.Join(",", Constants.ConsoleArguments.Language)}"); await Console.Error.WriteLineAsync(); await Console.Error.WriteLineAsync(this.GetHelp()); return; } IFileMerger merger; try { merger = this.GetFileMerger(language); } catch (ArgumentException) { await Console.Error.WriteLineAsync($"[ERROR] Language type:({language}) is not supported."); return; } this.validExtensions = merger.ValidExtensions; if (this.argumentManager.IsArgumentPresent(Constants.ConsoleArguments.LanguageSpecificHelp)) { await Console.Error.WriteLineAsync(merger.HelpText); return; } string directory = this.argumentManager.GetArgumentValue(Constants.ConsoleArguments.Directory); if (directory == null) { await Console.Error.WriteLineAsync($"[ERROR] Please provide the directory containing code files using {string.Join(",", Constants.ConsoleArguments.Directory)}"); await Console.Error.WriteLineAsync(); await Console.Error.WriteLineAsync(this.GetHelp()); return; } this.UpdateIgnoredDirectories(); await Console.Error.WriteLineAsync($"[INFO] Getting all {language} files in {directory}..."); IEnumerable <string> files = await this.GetMergeFiles(directory); await Console.Error.WriteLineAsync($"[INFO] Done getting all {language} files. {files.Count()} files found."); merger.FilesToMerge = files; string outputPath = this.GetOutputPath(merger.OutputExtension); string mergeText = await ConsoleMergeManager.GetMergedTextAsync(merger); await ConsoleMergeManager.WriteOutputToFileAsync(outputPath, mergeText); }