public Dictionary <string, FileOutput> Export() { this.replacements = new Dictionary <string, string>() { { "PROJECT_NAME", this.projectId }, { "TITLE", this.originalProjectId }, }; Dictionary <string, FileOutput> output = new Dictionary <string, FileOutput>(); SystemBitmap crayonIcon = new SystemBitmap(typeof(Util).Assembly, "icons/crayon_logo.png"); Dictionary <int, SystemBitmap> icons = new IconSetGenerator() .AddOutputSize(32) .AddOutputSize(256) .GenerateWithDefaultFallback(); output["assets/icon32.png"] = new FileOutput() { Type = FileOutputType.Image, Bitmap = icons[32] }; output["assets/icon256.png"] = new FileOutput() { Type = FileOutputType.Image, Bitmap = icons[256] }; System.Reflection.Assembly thisAsm = typeof(Program).Assembly; foreach (string file in new string[] { "DefaultProject/BuildFile.txt|%%%PROJECT_NAME%%%.build", "DefaultProject/main.txt|source/main.cry", "DefaultProject/dotGitIgnore.txt|output/.gitignore", }) { string[] parts = file.Split('|'); string content = Util.ReadAssemblyFileText(typeof(Program).Assembly, parts[0]); content = this.ReplaceStrings(content); string outputPath = this.ReplaceStrings(parts[1]); output[outputPath] = new FileOutput() { Type = FileOutputType.Text, TextContent = content, }; } Util.ReadAssemblyFileText(thisAsm, "DefaultProject/BuildFile.txt"); return(output); }
private void GenerateFiles(BuildContext buildContext, Dictionary <string, FileOutput> files, string rootDirectory, string inputDirectory) { rootDirectory = rootDirectory.Replace("%PROJECT_ID%", buildContext.ProjectID); foreach (string path in files.Keys) { FileOutput file = files[path]; string fullOutputPath = FileUtil.JoinPath(rootDirectory, path); FileUtil.EnsureParentFolderExists(fullOutputPath); switch (file.Type) { case FileOutputType.Text: if (this.TrimBom) { byte[] bytes = System.Text.Encoding.UTF8.GetBytes(file.TextContent); FileUtil.WriteFileBytes(fullOutputPath, bytes); } else { FileUtil.WriteFileText(fullOutputPath, file.TextContent); } break; case FileOutputType.Binary: FileUtil.WriteFileBytes(fullOutputPath, file.BinaryContent); break; case FileOutputType.Copy: string absolutePath = file.AbsoluteInputPath ?? FileUtil.JoinPath(inputDirectory, file.RelativeInputPath); FileUtil.CopyFile(absolutePath, fullOutputPath); break; case FileOutputType.Image: FileUtil.WriteFileImage(fullOutputPath, file.Bitmap); break; default: throw new InvalidOperationException(); } } }