Exemple #1
0
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.Write("Please provide exactly two parameters to: input file full path (yaml) and output file full path (pdf)");
                return;
            }
            var input = args[0];

            if (!File.Exists(input))
            {
                Console.WriteLine("Input file does not exist: " + input);
                return;
            }

            var output = args[1];

            if (File.Exists(output))
            {
                Console.WriteLine("Output file already exists: " + output);
                return;
            }

            var job = JobReader.Read(input);

            Console.WriteLine("Succesfully read job: " + job.Name);

            var invoice = Calculator.Calculate(job, "Customer name");

            Console.WriteLine("Generated invoice, total amount: " + invoice.TotalAmount);

            InvoiceWriter.Write(invoice, output);

            Console.WriteLine("Saved invoice to: " + output);
        }
Exemple #2
0
        /// <summary>
        /// User has requested the generation of code given an assembly and specification file.
        /// </summary>
        /// <param name="specification"></param>
        /// <param name="assembly"></param>
        /// <param name="outputPath"></param>
        public static void GenerateCode(FileInfo specification, FileInfo assembly, string outputPath = default)
        {
            if (specification == null)
            {
                throw new ArgumentException(Resources.NoSpecificationFileProvided, nameof(specification));
            }

            // register the appropriate style class for its related type key. Each type in the specification needs to have a 'style' specified
            // for it to be able to generate the appropriate type of code for it.


            TypeGeneratorStore.Instance.Register(global::Birch.Generator.Styles.Extension.Style.Type, () => new global::Birch.Generator.Styles.Extension.Style());
            TypeGeneratorStore.Instance.Register(global::Birch.Generator.Styles.Class.Style.Type, () => new global::Birch.Generator.Styles.Class.Style());

            var job = JobReader.FromFile(Path.Join(specification.DirectoryName, specification.Name));

            var outputTypeStore = OutputTypesStore.Create(job.Configuration.OutputTypes);

            var typeStore = new TypeStore();

            typeStore.Load(Path.Join(assembly.DirectoryName, assembly.Name));

            var modelBuilder = new ModelBuilder(typeStore, outputTypeStore);
            var models       = modelBuilder.Create(job);

            var codeBuilder = new CodeBuilder(job);
            var output      = codeBuilder.Create(models);

            if (outputPath != null)
            {
                File.WriteAllText(outputPath, output);
                Console.WriteLine(Resources.CodeWrittenTo, outputPath);
            }
            else
            {
                Console.WriteLine(output);
            }
        }