private void Compiler() { var commandLineArguments = CSharpCommandLineParser.Default.Parse(cscArguments_, null, null); var parseOptions = commandLineArguments.ParseOptions.WithDocumentationMode(DocumentationMode.Parse); var files = Directory.EnumerateFiles(folder_, "*.cs", SearchOption.AllDirectories); var syntaxTrees = files.Select(file => CSharpSyntaxTree.ParseText(File.ReadAllText(file), parseOptions, file)); var references = Libs.Select(i => MetadataReference.CreateFromFile(i)); LuaSyntaxGenerator.SettingInfo setting = new LuaSyntaxGenerator.SettingInfo() { IsNewest = isNewest_, HasSemicolon = hasSemicolon_, Indent = indent_, }; LuaSyntaxGenerator generator = new LuaSyntaxGenerator(syntaxTrees, references, commandLineArguments.CompilationOptions, Metas, setting, attributes_, folder_); generator.Generate(output_); }
private LuaSyntaxGenerator GetGenerator() { var files = GetSourceFiles(out bool isDirectory); var codes = files.Select(i => (File.ReadAllText(i), i)); var libs = GetLibs(libs_, out var luaModuleLibs); var setting = new LuaSyntaxGenerator.SettingInfo() { IsClassic = isClassic_, IsExportMetadata = IsExportMetadata, BaseFolder = isDirectory ? input_ : null, Attributes = attributes_, Enums = enums_, LuaModuleLibs = new HashSet <string>(luaModuleLibs), IsModule = IsModule, IsInlineSimpleProperty = IsInlineSimpleProperty, IsPreventDebugObject = IsPreventDebugObject, }; return(new LuaSyntaxGenerator(codes, libs, cscArguments_, Metas, setting)); }
internal static LuaSyntaxGenerator CreateGeneratorForProject(CompilerSettings settings, LuaSyntaxGenerator.SettingInfo settingInfo) { var projectPath = settings.input_; var mainProject = ProjectHelper.ParseProject(projectPath, IsCompileDebug(settings.cscArguments_) ? configurationDebug : configurationRelease); var projects = mainProject?.EnumerateProjects().ToArray(); var packages = PackageHelper.EnumeratePackages(mainProject.TargetFrameworkVersions.First(), projects.Select(project => project.project)); var files = GetProjectsSourceFiles(projects); var packageBaseFolders = new List <string>(); if (packages != null) { var searchDirectories = new HashSet <string>(StringComparer.OrdinalIgnoreCase); foreach (var package in packages) { if (IsDecompile(package, settings)) { PackageHelper.EnumerateLibs(package, out var baseFolder); if (string.IsNullOrWhiteSpace(baseFolder)) { continue; } searchDirectories.Add(baseFolder); } } foreach (var package in packages) { var packageFiles = PackageHelper.EnumerateSourceFiles(package, out var baseFolder).ToArray(); if (packageFiles.Length > 0) { files = files.Concat(packageFiles); packageBaseFolders.Add(baseFolder); } if (IsDecompile(package, settings)) { var packageLibs = PackageHelper.EnumerateLibs(package, out baseFolder).ToArray(); if (packageLibs.Length > 0) { var folderInfo = new DirectoryInfo(baseFolder); while (!string.Equals(folderInfo.Name, "packages", StringComparison.OrdinalIgnoreCase)) { folderInfo = folderInfo.Parent; } baseFolder = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "CSharpLua", "packages", baseFolder[(folderInfo.FullName.Length + 1)..]);
internal static LuaSyntaxGenerator CreateGeneratorForFolder(CompilerSettings settings, LuaSyntaxGenerator.SettingInfo settingInfo) { var folderPath = settings.input_; var files = GetFolderSourceFiles(folderPath); var packageBaseFolders = new List <string>(); var codes = files.Select(i => (File.ReadAllText(i), i)); var libs = GetLibs(settings.libs_, out var luaModuleLibs); settingInfo.LuaModuleLibs = luaModuleLibs.ToHashSet(); if (Directory.Exists(folderPath)) { settingInfo.AddBaseFolder(folderPath, false); } else if (files.Count() == 1) { settingInfo.AddBaseFolder(new FileInfo(files.Single()).DirectoryName, true); } else { // throw new NotImplementedException("Unable to determine basefolder(s) when the input is a list of source files."); } return(new LuaSyntaxGenerator(codes, libs, settings.cscArguments_, settings.metas_, settingInfo)); }
internal static LuaSyntaxGenerator CreateGeneratorForFile(LuaSyntaxGenerator.SettingInfo settingInfo) { throw new NotImplementedException(); }
internal static LuaSyntaxGenerator CreateGenerator(CompilerSettings?settings, LuaSyntaxGenerator.SettingInfo settingInfo) { return(settings is null ? CreateGeneratorForFile(settingInfo) : settings.isProject_ ? CreateGeneratorForProject(settings, settingInfo) : CreateGeneratorForFolder(settings, settingInfo)); }
public LuaRenderer(LuaSyntaxGenerator.SettingInfo settings, TextWriter writer) { // generator_ = generator; settings_ = settings; writer_ = writer; }