// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System; using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEditor.Build.Reporting; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Build.Editor { public class BuildInfo : IBuildInfo { public BuildInfo(bool isCommandLine = false) { IsCommandLine = isCommandLine; BuildSymbols = string.Empty; BuildTarget = EditorUserBuildSettings.activeBuildTarget; Scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(scene => scene.path); } /// public virtual BuildTarget BuildTarget { get; } /// public bool IsCommandLine { get; } private string outputDirectory; /// public string OutputDirectory { get => string.IsNullOrEmpty(outputDirectory) ? outputDirectory = BuildDeployPreferences.BuildDirectory : outputDirectory; set => outputDirectory = value; } /// public IEnumerable Scenes { get; set; } /// public Action PreBuildAction { get; set; } /// public Action PostBuildAction { get; set; } /// public BuildOptions BuildOptions { get; set; } /// public ColorSpace? ColorSpace { get; set; } /// public ScriptingImplementation? ScriptingBackend { get; set; } /// public bool AutoIncrement { get; set; } = false; /// public string BuildSymbols { get; set; } /// public string BuildPlatform { get; set; } /// public string Configuration { get { if (!this.HasConfigurationSymbol()) { return UnityPlayerBuildTools.BuildSymbolMaster; } return this.HasAnySymbols(UnityPlayerBuildTools.BuildSymbolDebug) ? UnityPlayerBuildTools.BuildSymbolDebug : this.HasAnySymbols(UnityPlayerBuildTools.BuildSymbolRelease) ? UnityPlayerBuildTools.BuildSymbolRelease : UnityPlayerBuildTools.BuildSymbolMaster; } set { if (this.HasConfigurationSymbol()) { this.RemoveSymbols(new[] { UnityPlayerBuildTools.BuildSymbolDebug, UnityPlayerBuildTools.BuildSymbolRelease, UnityPlayerBuildTools.BuildSymbolMaster }); } this.AppendSymbols(value); } } /// public string LogDirectory { get; set; } } }