From e55538cc44b5da4047b3e87fefeb53703d9a2267 Mon Sep 17 00:00:00 2001 From: Stanislav Felinskyi Date: Wed, 15 Mar 2023 15:03:58 +0200 Subject: [PATCH 1/2] Fixed multiple defines editor error --- .../CustomEditors/BuildPipelinesProjectSettingsProvider.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Editor/Core/Pipelines/CustomEditors/BuildPipelinesProjectSettingsProvider.cs b/Editor/Core/Pipelines/CustomEditors/BuildPipelinesProjectSettingsProvider.cs index b3d5bad..b191bdb 100644 --- a/Editor/Core/Pipelines/CustomEditors/BuildPipelinesProjectSettingsProvider.cs +++ b/Editor/Core/Pipelines/CustomEditors/BuildPipelinesProjectSettingsProvider.cs @@ -45,6 +45,7 @@ public override void OnActivate(string searchContext, VisualElement rootElement) m_allParameterKeys.AddRange(m_parameterPresenters.Select(k => k.CliKey)); //Find defines + m_defineSymbolsPresenters.Clear(); guids = AssetDatabase.FindAssets($"t:{nameof(ScriptingDefineSymbols)}"); foreach (string guid in guids) { From ebb914cffd78e5a905513ba57d48c759a96d4249 Mon Sep 17 00:00:00 2001 From: Stanislav Felinskyi Date: Wed, 15 Mar 2023 15:41:50 +0200 Subject: [PATCH 2/2] Version 0.1.6-preview --- .../Parameters/Int/IntBuildParameterEditor.cs | 4 ++-- .../Parameters/ScriptableBuildParameter.cs | 22 ++++++++++++++----- .../String/StringBuildParameterEditor.cs | 4 ++-- .../CustomEditors/BuildPipelinePresenter.cs | 15 ++++++++++--- .../BuildPipelinesProjectSettingsProvider.cs | 6 ++++- Editor/Defines/ScriptingDefineSymbols.cs | 8 ++----- .../Defines/ScriptingDefineSymbolsEditor.cs | 4 ++-- package.json | 2 +- 8 files changed, 42 insertions(+), 23 deletions(-) diff --git a/Editor/Core/Parameters/Int/IntBuildParameterEditor.cs b/Editor/Core/Parameters/Int/IntBuildParameterEditor.cs index d5eeffb..f00f16a 100644 --- a/Editor/Core/Parameters/Int/IntBuildParameterEditor.cs +++ b/Editor/Core/Parameters/Int/IntBuildParameterEditor.cs @@ -49,7 +49,7 @@ public static void Draw(IntBuildParameter target, SerializedObject serializedObj EditorGUILayout.BeginHorizontal(); { - EditorGUILayout.LabelField($"CLI: {target.CliKey} {value.intValue}"); + EditorGUILayout.LabelField($"CLI: {target.CliCommand}"); copyToClipboard = GUILayout.Button("Copy"); } EditorGUILayout.EndHorizontal(); @@ -58,7 +58,7 @@ public static void Draw(IntBuildParameter target, SerializedObject serializedObj if (copyToClipboard) { - EditorGUIUtility.systemCopyBuffer = $"{target.CliKey} {value.intValue}"; + EditorGUIUtility.systemCopyBuffer = $"{target.CliCommand}"; } } } diff --git a/Editor/Core/Parameters/ScriptableBuildParameter.cs b/Editor/Core/Parameters/ScriptableBuildParameter.cs index 6d20e2e..6383520 100644 --- a/Editor/Core/Parameters/ScriptableBuildParameter.cs +++ b/Editor/Core/Parameters/ScriptableBuildParameter.cs @@ -4,18 +4,26 @@ namespace UniTools.Build { - /// - /// Any value that can used inside a build pipeline and can be overriden from the command line - /// - public abstract class ScriptableBuildParameter : ScriptableObject + public abstract class ScriptableBuildParameter : ScriptableObject { - [SerializeField] private TValue m_value = default; - /// /// The name of the parameter that can be used inside a command line /// public string CliKey => $"--{name.Replace(" ", string.Empty).ToLower()}"; + /// + /// The command for the CLI with a current value + /// + public abstract string CliCommand { get; } + } + + /// + /// Any value that can used inside a build pipeline and can be overriden from the command line + /// + public abstract class ScriptableBuildParameter : ScriptableBuildParameter + { + [SerializeField] private TValue m_value = default; + /// /// Is this collection if not empty the values can be selected as enum /// @@ -36,6 +44,8 @@ public TValue Value } } + public override string CliCommand => $"{CliKey} {Value.ToString()}"; + protected abstract bool TryParseFromCommandLine(string commandLine, out TValue v); } } \ No newline at end of file diff --git a/Editor/Core/Parameters/String/StringBuildParameterEditor.cs b/Editor/Core/Parameters/String/StringBuildParameterEditor.cs index 1a8869d..39c869c 100644 --- a/Editor/Core/Parameters/String/StringBuildParameterEditor.cs +++ b/Editor/Core/Parameters/String/StringBuildParameterEditor.cs @@ -49,7 +49,7 @@ public static void Draw(StringBuildParameter target, SerializedObject serialized EditorGUILayout.BeginHorizontal(); { - EditorGUILayout.LabelField($"CLI: {target.CliKey} {value.stringValue}"); + EditorGUILayout.LabelField($"CLI: {target.CliCommand}"); copyToClipboard = GUILayout.Button("Copy"); } EditorGUILayout.EndHorizontal(); @@ -58,7 +58,7 @@ public static void Draw(StringBuildParameter target, SerializedObject serialized if (copyToClipboard) { - EditorGUIUtility.systemCopyBuffer = $"{target.CliKey} {value.stringValue}"; + EditorGUIUtility.systemCopyBuffer = $"{target.CliCommand}"; } } } diff --git a/Editor/Core/Pipelines/CustomEditors/BuildPipelinePresenter.cs b/Editor/Core/Pipelines/CustomEditors/BuildPipelinePresenter.cs index af3ed33..60a2ba2 100644 --- a/Editor/Core/Pipelines/CustomEditors/BuildPipelinePresenter.cs +++ b/Editor/Core/Pipelines/CustomEditors/BuildPipelinePresenter.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using UnityEditor; using UnityEngine; @@ -6,21 +7,29 @@ namespace UniTools.Build public sealed class BuildPipelinePresenter { private readonly BuildPipeline m_buildPipeline = default; + private readonly List m_parameters = default; private bool m_foldout = false; - public BuildPipelinePresenter(BuildPipeline buildPipeline) + public BuildPipelinePresenter(BuildPipeline buildPipeline, IEnumerable parameters) { m_buildPipeline = buildPipeline; + m_parameters = new List(parameters); } public void Draw() { bool run = false; bool select = false; + string command = string.Empty; + foreach (ScriptableBuildParameter p in m_parameters) + { + command += $" {p.CliCommand} "; + } + if (m_foldout) { - string sh = $"./build.sh --pipeline {m_buildPipeline.name}"; - string ps = $".\\build.ps1 --pipeline {m_buildPipeline.name}"; + string sh = $"./build.sh --pipeline {m_buildPipeline.name} {command}"; + string ps = $".\\build.ps1 --pipeline {m_buildPipeline.name} {command}"; bool copySh = false; bool copyPs = false; diff --git a/Editor/Core/Pipelines/CustomEditors/BuildPipelinesProjectSettingsProvider.cs b/Editor/Core/Pipelines/CustomEditors/BuildPipelinesProjectSettingsProvider.cs index b191bdb..c30446e 100644 --- a/Editor/Core/Pipelines/CustomEditors/BuildPipelinesProjectSettingsProvider.cs +++ b/Editor/Core/Pipelines/CustomEditors/BuildPipelinesProjectSettingsProvider.cs @@ -24,6 +24,7 @@ private BuildPipelinesProjectSettingsProvider(string path) public override void OnActivate(string searchContext, VisualElement rootElement) { //Find parameters + List parameters = new List(); m_parameterPresenters.Clear(); m_allParameterKeys.Clear(); string[] guids = AssetDatabase.FindAssets($"t:{nameof(StringBuildParameter)}"); @@ -32,6 +33,7 @@ public override void OnActivate(string searchContext, VisualElement rootElement) string path = AssetDatabase.GUIDToAssetPath(guid); StringBuildParameter parameter = AssetDatabase.LoadAssetAtPath(path); m_parameterPresenters.Add(new StringBuildParameterPresenter(parameter)); + parameters.Add(parameter); } guids = AssetDatabase.FindAssets($"t:{nameof(IntBuildParameter)}"); @@ -40,6 +42,7 @@ public override void OnActivate(string searchContext, VisualElement rootElement) string path = AssetDatabase.GUIDToAssetPath(guid); IntBuildParameter parameter = AssetDatabase.LoadAssetAtPath(path); m_parameterPresenters.Add(new IntBuildParameterPresenter(parameter)); + parameters.Add(parameter); } m_allParameterKeys.AddRange(m_parameterPresenters.Select(k => k.CliKey)); @@ -52,6 +55,7 @@ public override void OnActivate(string searchContext, VisualElement rootElement) string path = AssetDatabase.GUIDToAssetPath(guid); ScriptingDefineSymbols define = AssetDatabase.LoadAssetAtPath(path); m_defineSymbolsPresenters.Add(new ScriptingDefineSymbolsPresenter(define)); + parameters.Add(define); } //Find pipelines @@ -61,7 +65,7 @@ public override void OnActivate(string searchContext, VisualElement rootElement) { string path = AssetDatabase.GUIDToAssetPath(guid); BuildPipeline pipline = AssetDatabase.LoadAssetAtPath(path); - m_pipelinePresenters.Add(new BuildPipelinePresenter(pipline)); + m_pipelinePresenters.Add(new BuildPipelinePresenter(pipline, parameters)); } } diff --git a/Editor/Defines/ScriptingDefineSymbols.cs b/Editor/Defines/ScriptingDefineSymbols.cs index 0b72437..371433a 100644 --- a/Editor/Defines/ScriptingDefineSymbols.cs +++ b/Editor/Defines/ScriptingDefineSymbols.cs @@ -9,7 +9,7 @@ namespace UniTools.Build fileName = nameof(ScriptingDefineSymbols), menuName = MenuPaths.Defines + "DefineSymbols" )] - public sealed class ScriptingDefineSymbols : ScriptableObject + public sealed class ScriptingDefineSymbols : ScriptableBuildParameter { [Serializable] public sealed class DefineSymbol @@ -19,11 +19,7 @@ public sealed class DefineSymbol } [SerializeField] private List m_defines = new List(); - - /// - /// The name of the parameter that can be used inside a command line - /// - public string CliKey => $"--{name.ToLower()}"; + public override string CliCommand => $"{CliKey} \"{ToString()}\""; public override string ToString() { diff --git a/Editor/Defines/ScriptingDefineSymbolsEditor.cs b/Editor/Defines/ScriptingDefineSymbolsEditor.cs index c3f8a39..ee117f5 100644 --- a/Editor/Defines/ScriptingDefineSymbolsEditor.cs +++ b/Editor/Defines/ScriptingDefineSymbolsEditor.cs @@ -27,7 +27,7 @@ public static void Draw(ScriptingDefineSymbols target, SerializedObject serializ EditorGUILayout.BeginHorizontal(); { - EditorGUILayout.LabelField($"CLI: {target.CliKey} \"{target.ToString()}\""); + EditorGUILayout.LabelField($"CLI: {target.CliCommand}"); copyToClipboard = GUILayout.Button("Copy"); } EditorGUILayout.EndHorizontal(); @@ -36,7 +36,7 @@ public static void Draw(ScriptingDefineSymbols target, SerializedObject serializ if (copyToClipboard) { - EditorGUIUtility.systemCopyBuffer = $"{target.CliKey} \"{target.ToString()}\""; + EditorGUIUtility.systemCopyBuffer = $"{target.CliCommand}"; } } } diff --git a/package.json b/package.json index c164179..a4d723c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "displayName": "UniTools.Build", "name": "com.unitools.build", - "version": "0.1.5-preview", + "version": "0.1.6-preview", "unity": "2019.1", "description": "Customizable Build Pipeline for Unity3D", "keywords": [