private static int Main(string[] args) { Console.WriteLine(ProgramInfo.Greeting); if (args.NeedsHelp()) { PrintUsage(); return(ErrorCodes.MissingUserInput); } try { var arguments = args.To <MergeArgs>(); Logger.Level = arguments.L; var source = RecipeSource.FromFileOrInput(arguments.Recipe); var recipe = new RecipeParser(source).Recipe; var options = TransformOptionsProvider.GetTransformOptions(); recipe.Compile()(new ConfigTransformer(source.BasePath, options)); return(ErrorCodes.Ok); } catch (RecipeCompilerException ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); Console.ResetColor(); return(ErrorCodes.RecipeError); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"{ProgramInfo.Name}: error: {ex.Message}"); Console.WriteLine(ex.StackTrace); Console.ResetColor(); return(ErrorCodes.Unhandled); } }
public static void Merge(string recipe, LogLevel logLevel = LogLevel.Normal) { Logger.Level = logLevel; var source = RecipeSource.FromFileOrInput(recipe); var recipeExpress = new RecipeParser(source).Recipe; var options = TransformOptionsProvider.GetTransformOptions(); recipeExpress.Compile()(new ConfigTransformer(source.BasePath, options)); }
private static string GetRecipeHtml(RecipeSource recipe) { StringBuilder sb = new(); sb.AppendLine($"<h3 class='mt-5' id='{GetAnchor(recipe)}'>{recipe.Title}</h3>"); sb.AppendLine($"<div>{recipe.Description}</div>"); sb.AppendLine($"<pre class='bg-light border rounded p-3'>{recipe.Code}</pre>"); sb.AppendLine($"<img src='../../images/{recipe.ID.ToLower()}.png' " + "class='d-block mx-auto my-5 border shadow-sm' style='max-width: 100%;'/>"); return(sb.ToString()); }
private static string GetRecipeMarkdown(RecipeSource recipe) { StringBuilder sb = new(); sb.AppendLine($"## {recipe.Title}"); sb.AppendLine(""); sb.AppendLine(recipe.Description); sb.AppendLine(""); sb.AppendLine("```cs"); sb.AppendLine(recipe.Code); sb.AppendLine("```"); sb.AppendLine(""); sb.AppendLine($"<img src='../../images/{recipe.ID.ToLower()}.png' class='d-block mx-auto my-5' />"); sb.AppendLine(""); return(sb.ToString()); }
static string GetAnchor(RecipeSource x) => GetAnchor(x.Title);