public static string GenerateAppProject(UnifiedTestConfig config)
        {
            ProjectLanguage language = config.FSharp ? ProjectLanguage.FSharp : ProjectLanguage.CSharp;
            ProjectFlavor   flavor   = config.XM45 ? ProjectFlavor.FullXM : ProjectFlavor.ModernXM;

            TemplateInfo info;

            if (!string.IsNullOrEmpty(config.ProjectName))
            {
                info = TemplateInfo.FromCustomProject(ProjectType.App, language, config.ProjectName);
            }
            else
            {
                info = new TemplateInfo(flavor, ProjectType.App, language);
                config.ProjectName = info.ProjectName;
            }

            var engine            = new MacAppTemplateEngine(info);
            var fileSubstitutions = new FileSubstitutions {
                TestCode = config.TestCode,
                TestDecl = config.TestDecl,
            };
            PListSubstitutions pListSubstitutions = new PListSubstitutions()
            {
                Replacements = config.PlistReplaceStrings
            };

            return(engine.Generate(config.TmpDir, CreateDefaultSubstitutions(config), fileSubstitutions, pListSubstitutions));
        }
        public static string GenerateBindingLibraryProject(UnifiedTestConfig config)
        {
            var info = TemplateInfo.FromCustomProject(ProjectType.Binding, ProjectLanguage.CSharp, config.ProjectName);

            var engine            = new MacBindingTemplateEngine(info);
            var fileSubstitutions = new FileSubstitutions {
                ApiDefinition   = config.APIDefinitionConfig,
                StructsAndEnums = config.StructsAndEnumsConfig
            };

            return(engine.Generate(config.TmpDir, CreateDefaultSubstitutions(config), fileSubstitutions));
        }