/// <summary> /// Writes out <c>BuildInfo</c> prior to build. /// </summary> public override void OnBeforeBuild() { GDXConfig config = GDXConfig.Get(); if (config == null || !config.developerBuildInfoEnabled) { return; } // Cache for destructor _enabled = true; try { string path = Path.Combine(Application.dataPath, config.developerBuildInfoPath); Platform.EnsureFileFolderHierarchyExists(path); File.WriteAllText(path, BuildInfoProvider.GetContent(config, false, Context.BuildConfigurationName)); BuildInfoProvider.CheckForAssemblyDefinition(); } catch (Exception e) { Debug.LogWarning(e); } }
/// <summary> /// Restores the default <c>BuildInfo</c> after a build process finishes. /// </summary> /// <param name="report">Build process reported information.</param> public void OnPostprocessBuild(BuildReport report) { GDXConfig config = GDXConfig.Get(); if (config == null || !config.developerBuildInfoEnabled) { return; } BuildInfoProvider.WriteDefaultFile(); }
/// <summary> /// Process an array of arguments into <see cref="Arguments" /> and <see cref="Flags" />. /// </summary> /// <param name="argumentArray">An array of arguments to process.</param> /// <param name="shouldClear">Should the storage containers be cleared.</param> public static void ProcessArguments(string[] argumentArray, bool shouldClear = true) { if (shouldClear) { Arguments.Clear(); Flags.Clear(); } // Grabs runtime method of GDX Config GDXConfig gdxConfig = GDXConfig.Get(); string argumentPrefix = gdxConfig.developerCommandLineParserArgumentPrefix; int prefixLength = argumentPrefix.Length; string argumentSplit = gdxConfig.developerCommandLineParserArgumentSplit; int argumentLength = argumentArray.Length; for (int i = 0; i < argumentLength; i++) { // Cache current argument string argument = argumentArray[i]; // Has the starter and has an assignment if (!argument.StartsWith(argumentPrefix)) { continue; } if (argument.Contains(argumentSplit)) { int keyEnd = argument.IndexOf(argumentSplit, StringComparison.Ordinal); string key = argument.Substring(prefixLength, keyEnd - prefixLength); int valueStart = argument.IndexOf(argumentSplit, StringComparison.Ordinal) + 1; int valueEnd = argument.Length; string value = argument.Substring(valueStart, valueEnd - valueStart); // Value parameter Arguments.Add(key.ToUpper(), value); } else { string flag = argument.Substring(prefixLength).ToUpper(); // Flag parameter, ensure they are unique if (!Flags.Contains(flag)) { Flags.Add(flag); } } } }
/// <summary> /// Check if an assembly definition should be placed along side the written <c>BuildInfo</c> and write one. /// </summary> public static void CheckForAssemblyDefinition() { GDXConfig config = GDXConfig.Get(); if (config == null || !config.developerBuildInfoAssemblyDefinition) { return; } string assemblyDefinition = Path.Combine( Path.GetDirectoryName(Path.Combine(Application.dataPath, config.developerBuildInfoPath)) ?? string.Empty, config.developerBuildInfoNamespace + ".asmdef"); if (File.Exists(assemblyDefinition)) { return; } StringBuilder fileBuilder = new StringBuilder(); fileBuilder.AppendLine("{"); fileBuilder.Append("\t\"name\": \""); fileBuilder.Append(config.developerBuildInfoNamespace); fileBuilder.AppendLine("\","); fileBuilder.Append("\t\"rootNamespace\": \""); fileBuilder.Append(config.developerBuildInfoNamespace); fileBuilder.AppendLine("\","); fileBuilder.AppendLine("\t\"references\": [],"); fileBuilder.AppendLine("\t\"includePlatforms\": [],"); fileBuilder.AppendLine("\t\"excludePlatforms\": [],"); fileBuilder.AppendLine("\t\"allowUnsafeCode\": false,"); fileBuilder.AppendLine("\t\"overrideReferences\": false,"); fileBuilder.AppendLine("\t\"precompiledReferences\": [],"); fileBuilder.AppendLine("\t\"autoReferenced\": true,"); fileBuilder.AppendLine("\t\"defineConstraints\": [],"); fileBuilder.AppendLine("\t\"versionDefines\": [],"); fileBuilder.AppendLine("\t\"noEngineReferences\": true"); fileBuilder.AppendLine("}"); File.WriteAllText(assemblyDefinition, fileBuilder.ToString()); AssetDatabase.ImportAsset("Assets/" + Path.GetDirectoryName(config.developerBuildInfoPath) + "/" + config.developerBuildInfoNamespace + ".asmdef"); }
/// <summary> /// Writes out <c>BuildInfo</c> prior to build. /// </summary> /// <param name="report">Build process reported information.</param> public void OnPreprocessBuild(BuildReport report) { GDXConfig config = GDXConfig.Get(); if (config == null || !config.developerBuildInfoEnabled) { return; } try { string path = Path.Combine(Application.dataPath, config.developerBuildInfoPath); Platform.EnsureFileFolderHierarchyExists(path); File.WriteAllText(path, BuildInfoProvider.GetContent(config, false, "Legacy")); BuildInfoProvider.CheckForAssemblyDefinition(); } catch (Exception e) { Debug.LogWarning(e); } }
/// <summary> /// Write default content to <c>BuildInfo</c> file. /// </summary> public static void WriteDefaultFile() { GDXConfig config = GDXConfig.Get(); if (config == null) { return; } try { string path = Path.Combine(Application.dataPath, config.developerBuildInfoPath); Platform.EnsureFileFolderHierarchyExists(path); File.WriteAllText(path, GetContent(config, true)); CheckForAssemblyDefinition(); } catch (Exception e) { Debug.LogWarning(e); } }
public void True_GetContent_ForceDefaults() { string generateContent = BuildInfoProvider.GetContent(GDXConfig.Get(), true); Assert.IsTrue(generateContent.Contains(" public const int Changelist = 0;"), "Expected to find 'public const int Changelist = 0;'"); }