From 70ecbf4edef9261b3d7cd6be13273d77b7ce65ab Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Wed, 28 Oct 2020 00:28:32 +0900 Subject: [PATCH 1/8] refactor: refactor test workflow --- .github/workflows/unity-test.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/unity-test.yml b/.github/workflows/unity-test.yml index 2a3d496..d70a74f 100644 --- a/.github/workflows/unity-test.yml +++ b/.github/workflows/unity-test.yml @@ -44,6 +44,8 @@ jobs: "2020.1.4f1", "2020.1.5f1", ] + env: + RUN_UNITY: "xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity -batchmode -nographics -silent-crashes -logFile -projectPath ." runs-on: ubuntu-latest container: @@ -118,26 +120,22 @@ jobs: # Run playmode tests - name: "Run playmode tests" - if: always() && steps.activation.conclusion == 'success' - run: | - xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' \ - /opt/Unity/Editor/Unity -batchmode -nographics -silent-crashes -logFile -projectPath . -runTests -testPlatform playmode || exit 0 - - # Run editmode tests - - name: "Run editmode tests" if: always() && steps.activation.conclusion == 'success' run: | # Install codecoverage if [ -z "`echo ${{ matrix.unity }} | grep 2018.`" ]; then npm i -g openupm-cli openupm add com.unity.testtools.codecoverage - - xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' \ - /opt/Unity/Editor/Unity -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod Coffee.CSharpCompilerSettings.Menus.SetDevelopMode fi - xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' \ - /opt/Unity/Editor/Unity -batchmode -nographics -silent-crashes -logFile -projectPath . -runEditorTests -enableCodeCoverage -coverageOptions 'assemblyFilters:+CSharpCompilerSettings' || exit 0 + $RUN_UNITY -runTests -testPlatform playmode -enableCodeCoverage || exit 0 + + # Run editmode tests + - name: "Run editmode tests" + if: always() && steps.activation.conclusion == 'success' + run: | + $RUN_UNITY -executeMethod Coffee.CSharpCompilerSettings.Menus.SetDevelopMode || exit 0 + $RUN_UNITY -runTests -testPlatform editmode -enableCodeCoverage || exit 0 # Push test results - name: Push test results From 789edaf83d2ecab152b0efd5eb1a03c7fbfbacbd Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Sat, 7 Nov 2020 16:12:53 +0900 Subject: [PATCH 2/8] feat: support all nullable settings Close #8 --- Editor/CSharpProjectModifier.cs | 13 ++++++++++--- Editor/CscSettingsProvider.cs | 2 +- Editor/InspectorGUI.cs | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Editor/CSharpProjectModifier.cs b/Editor/CSharpProjectModifier.cs index 15ae233..174ed0a 100644 --- a/Editor/CSharpProjectModifier.cs +++ b/Editor/CSharpProjectModifier.cs @@ -28,9 +28,16 @@ private static string OnGeneratedCSProject(string path, string content) if (!setting.UseDefaultCompiler) content = Regex.Replace(content, ".*", "" + setting.LanguageVersion + "", RegexOptions.Multiline); - // Enable nullable. - if (setting.EnableNullable) - content = Regex.Replace(content, "(\\s+)(.*)([\r\n]+)", "$1$2$3$1enable$3"); + // Nullable. + var value = setting.Nullable.ToString().ToLower(); + if (Regex.IsMatch(content, ".*")) + { + content = Regex.Replace(content, ".*", "" + value + ""); + } + else + { + content = Regex.Replace(content, "(\\s+)(.*)([\r\n]+)", "$1$2$3$1" + value + "$3"); + } return content; } diff --git a/Editor/CscSettingsProvider.cs b/Editor/CscSettingsProvider.cs index 2bf711f..9e262d6 100644 --- a/Editor/CscSettingsProvider.cs +++ b/Editor/CscSettingsProvider.cs @@ -36,7 +36,7 @@ private static void OnGUI(string searchContext) EditorGUILayout.PropertyField(serializedObject.FindProperty("m_PackageName")); EditorGUILayout.PropertyField(serializedObject.FindProperty("m_PackageVersion")); EditorGUILayout.PropertyField(serializedObject.FindProperty("m_LanguageVersion")); - EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EnableNullable")); + EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Nullable")); EditorGUI.indentLevel--; } diff --git a/Editor/InspectorGUI.cs b/Editor/InspectorGUI.cs index ec8e316..9437180 100644 --- a/Editor/InspectorGUI.cs +++ b/Editor/InspectorGUI.cs @@ -143,7 +143,7 @@ private static void OnPostHeaderGUI(Editor editor) EditorGUILayout.PropertyField(_serializedObject.FindProperty("m_PackageName")); EditorGUILayout.PropertyField(_serializedObject.FindProperty("m_PackageVersion")); EditorGUILayout.PropertyField(_serializedObject.FindProperty("m_LanguageVersion")); - EditorGUILayout.PropertyField(_serializedObject.FindProperty("m_EnableNullable")); + EditorGUILayout.PropertyField(_serializedObject.FindProperty("m_Nullable")); EditorGUI.indentLevel--; } From 181ea586feda9e3a0b8cdc86578ae95c19807123 Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Sun, 8 Nov 2020 01:14:46 +0900 Subject: [PATCH 3/8] fix: support Unity 2020.2 or later Close #6 Close #7 From 0d86d20032e573771168d25dfc3027162027ce89 Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Sun, 8 Nov 2020 01:13:38 +0900 Subject: [PATCH 4/8] fix: when enabling C# Settings in asmdef inspector, edits are lost --- Editor/InspectorGUI.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Editor/InspectorGUI.cs b/Editor/InspectorGUI.cs index 9437180..fafabd9 100644 --- a/Editor/InspectorGUI.cs +++ b/Editor/InspectorGUI.cs @@ -239,6 +239,8 @@ private static void EnablePortableDll(string asmdefPath, bool enabled) AssetDatabase.DeleteAsset(path); } } + + Core.UpdatePortableDll(asmdefPath, enabled); } private static void CopyFileIfNeeded(string src, string dst) From 324648dae957067eb990cc896765331679b2727a Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Sun, 8 Nov 2020 01:11:42 +0900 Subject: [PATCH 5/8] refactor: change assembly name for development --- Editor/InspectorGUI.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/InspectorGUI.cs b/Editor/InspectorGUI.cs index fafabd9..a371394 100644 --- a/Editor/InspectorGUI.cs +++ b/Editor/InspectorGUI.cs @@ -109,7 +109,7 @@ static InspectorGUI() private static string _assetPath; private static string[] _ignoredAssetPaths = { "Assets/CSharpCompilerSettings/Dev/CSharpCompilerSettings.Dev.asmdef", - "Assets/CSharpCompilerSettings/CSharpCompilerSettings.asmdef", + "Assets/CSharpCompilerSettings/CSharpCompilerSettings_.asmdef", "Packages/com.coffee.csharp-compiler-settings/Editor/CSharpCompilerSettings.Editor.asmdef", }; From e0992ac5f64b4d807fbb3ee33e7ae0728c7edddb Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Thu, 5 Nov 2020 01:00:32 +0900 Subject: [PATCH 6/8] generate dll --- Plugins/CSharpCompilerSettings.dll | Bin 25600 -> 26624 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/CSharpCompilerSettings.dll b/Plugins/CSharpCompilerSettings.dll index cfe84880c697d30e71fc1f5c362196049512f8e0..8685773096c91de51ab227e81fbadf82cf12441c 100644 GIT binary patch literal 26624 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 VT>VY6?|BRE4cPy$`u{Hr{69l5Q>Xv{ literal 25600 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 XU!Rw;KwkX@)k!>6{;$vfe-`+EX;*a> From 9e591157c85c3c709cf0271bf23a64c2675112f3 Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Fri, 23 Oct 2020 21:10:28 +0900 Subject: [PATCH 7/8] docs: update readme --- README.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1a6dabb..dfedd21 100755 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ Change the C# compiler (csc) used on your Unity project, as you like! ![](https://img.shields.io/badge/Unity%202018.3%20or%20later-supported-blue.svg) ![](https://img.shields.io/badge/Unity%202019.x-supported-blue.svg) ![](https://img.shields.io/badge/Unity%202020.x-supported-blue.svg) +![GitHub Workflow Status](https://img.shields.io/github/workflow/status/mob-sakai/CSharpCompilerSettingsForUnity/unity-test) [![Test](https://mob-sakai.testspace.com/spaces/130862/badge?token=43a50d2fc998aa362d36934597de0c84527e5690)](https://mob-sakai.testspace.com/spaces/130862) [![CodeCoverage](https://mob-sakai.testspace.com/spaces/130862/metrics/99758/badge)](https://mob-sakai.testspace.com/spaces/130862/current/Code%20Coverage/Code%20Coverage") -![GitHub Workflow Status](https://img.shields.io/github/workflow/status/mob-sakai/CSharpCompilerSettingsForUnity/unity-test) << [Description](#description) | [Installation](#installation) | [Usage](#usage) | [Contributing](#contributing) >> @@ -51,8 +51,8 @@ However, unfortunately, [there are no plans to backport to Unity 2020.1 or earli This package changes the C# compiler (csc) used on your Unity project, to support C# 8.0. Let's enjoy C# 8.0 features with your Unity project! -![](https://user-images.githubusercontent.com/12690315/95178488-7456dc00-07fa-11eb-8489-63d6af311ed0.png) -![](https://user-images.githubusercontent.com/12690315/95178483-728d1880-07fa-11eb-89e6-c29d98e2ab02.png) +![](https://user-images.githubusercontent.com/12690315/97001486-62ec2e80-1573-11eb-9003-d40eb8ed8904.png) +![](https://user-images.githubusercontent.com/12690315/97001169-e3f6f600-1572-11eb-8504-c528130c2234.png) ### Features @@ -95,7 +95,15 @@ Let's enjoy C# 8.0 features with your Unity project! * If `dotnet` is required, install it automatically. * `CompilerType.BuiltIn` compiler option to disable this plugin. * `Enable Logging` option to display compilation log. -* `Allow Nullable` option to enable [Nullable reference types (C# 8.0)](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-reference-types). +* `Nullable` option to enable [Nullable reference types (C# 8.0)](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-reference-types). + * `enable`: The nullable annotation context is enabled. The nullable warning context is enabled. + * Variables of a reference type, string for example, are non-nullable. All nullability warnings are enabled. + * `warnings`: The nullable annotation context is disabled. The nullable warning context is enabled. + * Variables of a reference type are oblivious. All nullability warnings are enabled. + * `annotations`: The nullable annotation context is enabled. The nullable warning context is disabled. + * Variables of a reference type, string for example, are non-nullable. All nullability warnings are disabled. + * `disable`: The nullable annotation context is disabled. The nullable warning context is disabled. + * Variables of a reference type are oblivious, just like earlier versions of C#. All nullability warnings are disabled. [OpenSesame.Net.Compilers]: https://www.nuget.org/packages/OpenSesame.Net.Compilers [OpenSesame.Net.Compilers.Toolset]: https://www.nuget.org/packages/OpenSesame.Net.Compilers.Toolset @@ -158,11 +166,11 @@ Or, use [UpmGitExtension](https://github.com/mob-sakai/UpmGitExtension) to insta ![](https://user-images.githubusercontent.com/12690315/92742741-e3d3da00-f3ba-11ea-8314-4cabd88c1b2c.png) 2. Select `C# Compiler` tab 3. Set `Compiler Type` to `Custom Package`, to use custom compiler package. -![](https://user-images.githubusercontent.com/12690315/95178488-7456dc00-07fa-11eb-8489-63d6af311ed0.png) -3. Input `Package Name`, `Package Version`, `Language Version` for compilation. +![](https://user-images.githubusercontent.com/12690315/97001486-62ec2e80-1573-11eb-9003-d40eb8ed8904.png) +1. Input `Package Name`, `Package Version`, `Language Version` for compilation. * See [features](#features) section. -4. Press `Apply` button to save settings. -5. It will automatically request a recompilation. +2. Press `Apply` button to save settings. +3. It will automatically request a recompilation. The selected nuget package will be used for compilation. 6. Enjoy! @@ -187,7 +195,7 @@ The project setting asset for C# Compiler will be saved in `ProjectSettings/CSha 1. Select a `*.asmodef` file 2. Turn on `Enable C# Compilier Settings` to configure. -![](https://user-images.githubusercontent.com/12690315/95178483-728d1880-07fa-11eb-89e6-c29d98e2ab02.png) +![](https://user-images.githubusercontent.com/12690315/97001169-e3f6f600-1572-11eb-8504-c528130c2234.png) 3. Set `Compiler Type` to `Custom Package`, to use custom compiler package. 4. Input `Package Name`, `Package Version`, `Language Version` and `Modify Symbols` for compilation. * See [features](#features) section. @@ -271,8 +279,7 @@ With your support, I can spend more time on development. :) ## Author -* [mob-sakai](https://github.com/mob-sakai) [![](https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=mob_sakai) ![GitHub followers](https://img.shields.io/github/followers/mob-sakai?style=social) -![](https://user-images.githubusercontent.com/12690315/96912074-bcede500-14dc-11eb-8acd-3fdd8d0e4606.png) +* ![](https://user-images.githubusercontent.com/12690315/96986908-434a0b80-155d-11eb-8275-85138ab90afa.png) [mob-sakai](https://github.com/mob-sakai) [![](https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=mob_sakai) ![GitHub followers](https://img.shields.io/github/followers/mob-sakai?style=social) ## See Also From 443377aabe07aaae2f52cd86a52e973d25f61fa0 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 9 Nov 2020 17:22:43 +0000 Subject: [PATCH 8/8] chore(release): 1.3.0 [skip ci] # [1.3.0](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/compare/1.2.0...1.3.0) (2020-11-09) ### Bug Fixes * support Unity 2020.2 or later ([181ea58](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/commit/181ea586feda9e3a0b8cdc86578ae95c19807123)), closes [#6](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/issues/6) [#7](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/issues/7) * when enabling C# Settings in asmdef inspector, edits are lost ([0d86d20](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/commit/0d86d20032e573771168d25dfc3027162027ce89)) ### Features * support all nullable settings ([789edaf](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/commit/789edaf83d2ecab152b0efd5eb1a03c7fbfbacbd)), closes [#8](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/issues/8) --- CHANGELOG.md | 13 +++++++++++++ package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84c5637..a11cea5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# [1.3.0](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/compare/1.2.0...1.3.0) (2020-11-09) + + +### Bug Fixes + +* support Unity 2020.2 or later ([181ea58](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/commit/181ea586feda9e3a0b8cdc86578ae95c19807123)), closes [#6](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/issues/6) [#7](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/issues/7) +* when enabling C# Settings in asmdef inspector, edits are lost ([0d86d20](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/commit/0d86d20032e573771168d25dfc3027162027ce89)) + + +### Features + +* support all nullable settings ([789edaf](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/commit/789edaf83d2ecab152b0efd5eb1a03c7fbfbacbd)), closes [#8](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/issues/8) + # [1.2.0](https://github.com/mob-sakai/CSharpCompilerSettingsForUnity/compare/1.1.1...1.2.0) (2020-10-23) diff --git a/package.json b/package.json index c6f2c45..7c33435 100755 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "com.coffee.csharp-compiler-settings", "displayName": "C# Compiler Settings", "description": "Change the C# compiler (csc) used in your Unity project, as you like!", - "version": "1.2.0", + "version": "1.3.0", "unity": "2018.3", "license": "MIT", "repository": {