Пример #1
0
 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);
     }
 }
Пример #2
0
        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();
        }
Пример #3
0
        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));
        }
Пример #4
0
        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();
        }
Пример #5
0
        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();
        }
Пример #6
0
        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();
        }
Пример #7
0
        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();
        }