Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
                }
            }
        }