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 void EmptyScript_ReturnsVoidExpression() { var expression = new RecipeParser(Enumerable.Empty <Token>()).Recipe; expression.Compile()(_transformer); A.CallTo(() => _transformer.Transform(A <string> ._, A <IEnumerable <string> > ._)).MustNotHaveHappened(); }
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)); }
public void Simple() { RecipeString source = "App.config = [App.root.config, App.dev.local.config];"; var expression = new RecipeParser(source).Recipe; expression.Compile()(_transformer); A.CallTo(() => _transformer.Transform("App.config", A <IEnumerable <string> > .That.IsSameSequenceAs(new [] { "App.root.config", "App.dev.local.config" }))) .MustHaveHappened(); }
public void ArrayManipulations() { RecipeString source = new[] { "App.config = App. + [root, dev.local] + .config;" }; var expression = new RecipeParser(source).Recipe; expression.Compile()(_transformer); A.CallTo(() => _transformer.Transform("App.config", A <IEnumerable <string> > .That.IsSameSequenceAs(new[] { "App.root.config", "App.dev.local.config" }))) .MustHaveHappened(); }
public void CrazyArrayManiuplations() { RecipeString source = new[] { "var i = \"input/\";", "App.config = i + (App. + [root, dev.local] + .config) + [another.file];" }; var expression = new RecipeParser(source).Recipe; expression.Compile()(_transformer); A.CallTo(() => _transformer.Transform("App.config", A <IEnumerable <string> > .That.IsSameSequenceAs(new[] { "input/App.root.config", "input/App.dev.local.config", "input/another.file" }))) .MustHaveHappened(); }
public void ExpressionInMerge() { RecipeString source = new[] { "", "var c = \"config/\";", "", "App.config = [c + App.root.config, c + App.dev.local.config];", "" }; var expression = new RecipeParser(source).Recipe; expression.Compile()(_transformer); A.CallTo(() => _transformer.Transform("App.config", A <IEnumerable <string> > .That.IsSameSequenceAs(new[] { "config/App.root.config", "config/App.dev.local.config" }))) .MustHaveHappened(); }