public override CrayonWorkerResult DoWorkImpl(CrayonWorkerResult[] args) { // resDb = GetResourceDatabaseFromBuild(buildContext) BuildContext buildContext = (BuildContext)args[0].Value; ResourceDatabase resDb = ResourceDatabaseBuilder.PrepareResources(buildContext, null); return(new CrayonWorkerResult() { Value = resDb }); }
public static string Run(ExportCommand command, BuildContext buildContext) { string outputDirectory = new GetOutputDirectoryWorker().DoWorkImpl(buildContext); ExportBundle compilationResult = ExportBundle.Compile(buildContext); ResourceDatabase resDb = ResourceDatabaseBuilder.PrepareResources(buildContext, null); string byteCode = ByteCodeEncoder.Encode(compilationResult.ByteCode); byte[] cbxFileBytes = new GenerateCbxFileContentWorker().GenerateCbxBinaryData(buildContext, resDb, compilationResult, byteCode); Dictionary <string, FileOutput> fileOutputContext = new Dictionary <string, FileOutput>(); new PopulateFileOutputContextForCbxWorker().GenerateFileOutput(fileOutputContext, buildContext, resDb, cbxFileBytes); new EmitFilesToDiskWorker().DoWorkImpl(fileOutputContext, outputDirectory); string absoluteCbxFilePath = new GetCbxFileLocation().DoWorkImpl(outputDirectory, buildContext); return(absoluteCbxFilePath); }
public ExportBundle ExportVmBundle(ExportCommand command, BuildContext buildContext) { // TODO: Worker: platform = GetPlatform(buildContext, command) string platformId = buildContext.Platform.ToLowerInvariant(); Platform.AbstractPlatform platform = command.PlatformProvider.GetPlatform(platformId); if (platform == null) { throw new InvalidOperationException("Unrecognized platform. See usage."); } // TODO: Worker: Compile ExportBundle compilationResult = ExportBundle.Compile(buildContext); AssemblyMetadata[] libraries = compilationResult.LibraryScopesUsed.Select(scope => scope.Metadata).ToArray(); ResourceDatabase resourceDatabase = ResourceDatabaseBuilder.PrepareResources(buildContext, compilationResult.ByteCode); string outputDirectory = command.HasOutputDirectoryOverride ? command.OutputDirectoryOverride : buildContext.OutputFolder; if (!Path.IsAbsolute(outputDirectory)) { outputDirectory = FileUtil.JoinPath(buildContext.ProjectDirectory, outputDirectory); } outputDirectory = FileUtil.GetCanonicalizeUniversalPath(outputDirectory); FileOutputExporter exporter = new FileOutputExporter(outputDirectory); VmGenerator vmGenerator = new VmGenerator(); Dictionary <string, FileOutput> result = new Dictionary <string, FileOutput>(); vmGenerator.GenerateVmSourceCodeForPlatform( result, platform, compilationResult, resourceDatabase, libraries, outputDirectory, VmGenerationMode.EXPORT_SELF_CONTAINED_PROJECT_SOURCE); exporter.ExportFiles(result); // TODO: this needs to be the result of an earlier step after this is split into workers. return(compilationResult); }