public static async Task WriteCodeFile(this IMatrixProject project, StorageFolder folder, IBuildService buildService) { // *** // *** Get the template from the resource file. // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Reading code template."); ResourceContext resourceContext = ResourceContext.GetForViewIndependentUse(); ResourceMap resourceMap = ResourceManager.Current.MainResourceMap.GetSubtree("CodeBuilder/Code"); ResourceCandidate resourceValue = resourceMap.GetValue("cpp", resourceContext); string template = resourceValue.ValueAsString; // *** // *** Fill in the template parameters. // *** string contents = String.Format(template, project.Name, project.ColorMatrix.BackgroundColor.R, project.ColorMatrix.BackgroundColor.G, project.ColorMatrix.BackgroundColor.B, project.AccelerometerScaling, project.Elasticity, project.SortParticles.ToString().ToLower()); // *** // *** Write the file. // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, $"Writing C++ code file '{project.CppFileName()}'."); StorageFile file = await folder.CreateFileAsync(project.CppFileName(), CreationCollisionOption.ReplaceExisting); await FileIO.WriteTextAsync(file, contents, Windows.Storage.Streams.UnicodeEncoding.Utf8); }
public static async Task WriteInstructionsFile(this IMatrixProject project, StorageFolder folder, IBuildService buildService) { buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Reading instructions template."); ResourceContext resourceContext = ResourceContext.GetForViewIndependentUse(); ResourceMap resourceMap = ResourceManager.Current.MainResourceMap.GetSubtree("CodeBuilder/Code"); ResourceCandidate resourceValue = resourceMap.GetValue("instructions", resourceContext); string template = resourceValue.ValueAsString; string contents = String.Format(template, project.CppFileName(), project.HeaderFileName(), project.MakeFileName(), project.Name); buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, $"Writing instructions file '{project.InstructionsFileName()}'."); StorageFile file = await folder.CreateFileAsync(project.InstructionsFileName(), CreationCollisionOption.ReplaceExisting); await FileIO.WriteTextAsync(file, contents, Windows.Storage.Streams.UnicodeEncoding.Utf8); }
public static async Task WriteHeaderFile(this IMatrixProject project, StorageFolder folder, string headerCode, IBuildService buildService) { // *** // *** Write the header file (.h) // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, $"Writing .h code file '{project.HeaderFileName()}'."); StorageFile hFile = await folder.CreateFileAsync(project.HeaderFileName(), CreationCollisionOption.ReplaceExisting); await FileIO.WriteTextAsync(hFile, headerCode, Windows.Storage.Streams.UnicodeEncoding.Utf8); }
public static Task <string> CreateHeaderFile(this IMatrixProject project, IBuildService buildService) { StringBuilder returnValue = new StringBuilder(); // *** // *** Generate the image definition. // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Generating image code."); string imageCode = project.CreateImageCode(); // *** // *** Generate the mask definition. // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Generating mask code."); string maskCode = project.CreateMaskCode(); // *** // *** Generate the sand grain definition. // *** buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Generating grain code."); (bool result, string grainCode) = project.CreateGrainCode(); if (!result) { buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Warning, "No sand grains have been defined."); } buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, "Generating header file code."); // *** // *** Generate the header file (.h) // *** returnValue.AppendLine(grainCode); returnValue.AppendLine(); returnValue.AppendLine(imageCode); returnValue.AppendLine(); returnValue.AppendLine(maskCode); return(Task.FromResult(returnValue.ToString())); }
public static async Task WriteMakeFile(this IMatrixProject project, StorageFolder folder, IBuildService buildService) { StringBuilder contents = new StringBuilder(); contents.AppendLine($"{project.Name}: {project.CppFileName()} {project.HeaderFileName()} $(LIBS)"); contents.AppendLine($"\t$(CXX) $(CXXFLAGS) $< $(LDFLAGS) $(LIBS) -o $@"); contents.AppendLine($"\tstrip $@"); buildService.FireBuildEvent(BuildEventArgs.BuildEventType.Information, $"Writing make file '{project.MakeFileName()}'."); StorageFile file = await folder.CreateFileAsync(project.MakeFileName(), CreationCollisionOption.ReplaceExisting); await FileIO.WriteTextAsync(file, contents.ToString(), Windows.Storage.Streams.UnicodeEncoding.Utf8); }