Skip to content

Commit

Permalink
Merge pull request #127 from timcassell/unity-helpers-nuget-package
Browse files Browse the repository at this point in the history
Create nuget package for Unity helpers.
  • Loading branch information
timcassell authored Sep 24, 2022
2 parents 9150699 + 76e690f commit 1612d78
Show file tree
Hide file tree
Showing 22 changed files with 281 additions and 179 deletions.
31 changes: 24 additions & 7 deletions .github/workflows/publish-nuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ jobs:
echo "version ${VERSION} not found in ProtoPromise.csproj"
exit 1
fi
if ! grep -q "<Version>${VERSION}</Version>" ProtoPromiseUnityHelpers/ProtoPromiseUnityHelpers.csproj; then
echo "version ${VERSION} not found in ProtoPromiseUnityHelpers.csproj"
exit 1
fi
if ! grep -q "\"version\": \"${VERSION}\"" ProtoPromise_Unity/Assets/Plugins/ProtoPromise/package.json; then
echo "version ${VERSION} not found in package.json"
exit 1
Expand All @@ -43,17 +47,22 @@ jobs:
with:
tag: v${{ steps.set_tag.outputs.version }}

- name: Overwrite nuspec version
- name: Overwrite ProtoPromise nuspec version
run: sed -i "{s/{VERSION}/${{ steps.set_tag.outputs.version }}/g}" ProtoPromise/nuget/ProtoPromise.nuspec

- name: Overwrite nuspec release notes
- name: Overwrite ProtoPromiseUnityHelpers nuspec version
run: sed -i "{s/{VERSION}/${{ steps.set_tag.outputs.version }}/g}" ProtoPromiseUnityHelpers/nuget/ProtoPromiseUnityHelpers.nuspec

- name: Overwrite ProtoPromise nuspec release notes
run: |
RELEASE_NOTES='${{ steps.get_release.outputs.body }}'
export REPLACE_RELEASE_NOTES=$(echo "$RELEASE_NOTES" | sed -e ':a' -e 'N' -e '$!ba' -e 's|\n|\n |g; s/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g')
export REPLACE_RELEASE_NOTES=$(echo "$RELEASE_NOTES" | sed -e ':a' -e 'N' -e '$!ba' -e 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g')
perl -l -p -i -e 's/{RELEASE_NOTES}/$ENV{REPLACE_RELEASE_NOTES}/g' ProtoPromise/nuget/ProtoPromise.nuspec
- name: Print nuspec
run: cat ProtoPromise/nuget/ProtoPromise.nuspec
- name: Print nuspecs
run: |
cat ProtoPromise/nuget/ProtoPromise.nuspec
cat ProtoPromiseUnityHelpers/nuget/ProtoPromiseUnityHelpers.nuspec
- name: Setup nuget
uses: nuget/setup-nuget@v1
Expand All @@ -71,10 +80,18 @@ jobs:
- name: Build Release
run: dotnet build -c Release

- name: Pack
- name: Pack ProtoPromise
run: nuget pack ProtoPromise/nuget/ProtoPromise.nuspec

- name: Push
- name: Pack Unity Helpers
run: nuget pack ProtoPromiseUnityHelpers/nuget/ProtoPromiseUnityHelpers.nuspec

- name: Push ProtoPromise
run: dotnet nuget push ProtoPromise.${VERSION}.nupkg --api-key ${NUGET_API_KEY} --source https://api.nuget.org/v3/index.json
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}

- name: Push Unity Helpers
run: dotnet nuget push ProtoPromiseUnityHelpers.${VERSION}.nupkg --api-key ${NUGET_API_KEY} --source https://api.nuget.org/v3/index.json
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
2 changes: 1 addition & 1 deletion DeveloperNotes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ VERY IMPORTANT - Before doing any of this, run unit tests locally on the IL2CPP
Also test the demo scene in Unity 5.5 to make sure it works (no need to run tests as the test runner didn't exist back then).


Update the version in both `ProtoPromise.csproj` and `package.json`.
Update the version in `ProtoPromise.csproj`, `ProtoPromiseUnityHelpers.csproj`, and `package.json`.

To create the UnityPackage for releases:

Expand Down
10 changes: 10 additions & 0 deletions ProtoPromise.sln
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProtoPromiseTests", "ProtoP
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtoPromise", "ProtoPromise\ProtoPromise.csproj", "{2A0BBD14-FA01-467C-8A42-55C5C287F66D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProtoPromiseUnityHelpers", "ProtoPromiseUnityHelpers\ProtoPromiseUnityHelpers.csproj", "{5B1E6550-0342-4240-AF91-F8059F84BF67}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_NoProgress|Any CPU = Debug_NoProgress|Any CPU
Expand All @@ -31,6 +33,14 @@ Global
{2A0BBD14-FA01-467C-8A42-55C5C287F66D}.Release_NoProgress|Any CPU.Build.0 = Release_NoProgress|Any CPU
{2A0BBD14-FA01-467C-8A42-55C5C287F66D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A0BBD14-FA01-467C-8A42-55C5C287F66D}.Release|Any CPU.Build.0 = Release|Any CPU
{5B1E6550-0342-4240-AF91-F8059F84BF67}.Debug_NoProgress|Any CPU.ActiveCfg = Debug_NoProgress|Any CPU
{5B1E6550-0342-4240-AF91-F8059F84BF67}.Debug_NoProgress|Any CPU.Build.0 = Debug_NoProgress|Any CPU
{5B1E6550-0342-4240-AF91-F8059F84BF67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5B1E6550-0342-4240-AF91-F8059F84BF67}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5B1E6550-0342-4240-AF91-F8059F84BF67}.Release_NoProgress|Any CPU.ActiveCfg = Release_NoProgress|Any CPU
{5B1E6550-0342-4240-AF91-F8059F84BF67}.Release_NoProgress|Any CPU.Build.0 = Release_NoProgress|Any CPU
{5B1E6550-0342-4240-AF91-F8059F84BF67}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5B1E6550-0342-4240-AF91-F8059F84BF67}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
1 change: 0 additions & 1 deletion ProtoPromise/ProtoPromise.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
<ItemGroup>
<Content Include="..\*.md" />
<Compile Include="..\ProtoPromise_Unity\Assets\Plugins\ProtoPromise\Core\**/*.cs" />
<Compile Remove="..\ProtoPromise_Unity\Assets\Plugins\ProtoPromise\Core\Promises\Unity\**/*" />
<Compile Remove="nuget\**" />
<Content Remove="nuget\**" />
<EmbeddedResource Remove="nuget\**" />
Expand Down
6 changes: 2 additions & 4 deletions ProtoPromise/nuget/ProtoPromise.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,8 @@
<projectUrl>https://github.com/timcassell/ProtoPromise</projectUrl>
<repository type="git" url="https://github.com/timcassell/ProtoPromise" />
<description>Robust and efficient library for management of asynchronous operations.</description>
<releaseNotes>
{RELEASE_NOTES}
</releaseNotes>
<copyright>Copyright 2022</copyright>
<releaseNotes>{RELEASE_NOTES}</releaseNotes>
<copyright>Copyright ©2022 Tim Cassell</copyright>
<tags>promise promises task tasks csharp unity dotnet mono coroutine coroutines concurrency concurrent parallel asynchronous async await thread threads threading then thenable callback callbacks</tags>

<dependencies>
Expand Down
44 changes: 44 additions & 0 deletions ProtoPromiseUnityHelpers/ProtoPromiseUnityHelpers.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<!--We target .Net Framework 3.5 to support old Unity versions, and we also target .Net Standard 2.1 to support new Unity versions, even after it drops old Framework support.-->
<TargetFrameworks>net35;netstandard2.1</TargetFrameworks>
<Configurations>Release;Debug;</Configurations>
<Version>2.2.0</Version>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<!--The newest language version Unity 5.5 supports (by default).-->
<LangVersion>4</LangVersion>
</PropertyGroup>

<!--Unity uses NET_LEGACY for old runtime prior to .Net 4.6, so we will do the same here.-->
<PropertyGroup Condition="'$(TargetFramework)'=='net35'">
<DefineConstants>$(DefineConstants);NET_LEGACY</DefineConstants>
</PropertyGroup>

<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
</PropertyGroup>

<ItemGroup>
<Compile Include="..\ProtoPromise_Unity\Assets\Plugins\ProtoPromise\UnityHelpers\**/*.cs" />
<Compile Remove="nuget\**" />
<EmbeddedResource Remove="nuget\**" />
<None Remove="nuget\**" />
<None Remove="UnityEngine.dll" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ProtoPromise\ProtoPromise.csproj">
<Private>false</Private>
</ProjectReference>
</ItemGroup>

<ItemGroup>
<Reference Include="UnityEngine">
<HintPath>UnityEngine.dll</HintPath>
<Private>false</Private>
</Reference>
</ItemGroup>

</Project>
Binary file added ProtoPromiseUnityHelpers/UnityEngine.dll
Binary file not shown.
36 changes: 36 additions & 0 deletions ProtoPromiseUnityHelpers/nuget/ProtoPromiseUnityHelpers.nuspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata minClientVersion="2.5">
<id>ProtoPromiseUnityHelpers</id>
<version>{VERSION}</version>
<title>ProtoPromise Unity Helpers</title>
<authors>Tim Cassell</authors>
<owners>Tim Cassell</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<projectUrl>https://github.com/timcassell/ProtoPromise</projectUrl>
<repository type="git" url="https://github.com/timcassell/ProtoPromise" />
<description>ProtoPromise helpers for UnityEngine.</description>
<releaseNotes></releaseNotes>
<copyright>Copyright ©2022 Tim Cassell</copyright>
<tags>promise promises task tasks csharp unity dotnet mono coroutine coroutines concurrency concurrent parallel asynchronous async await thread threads threading then thenable callback callbacks</tags>

<dependencies>
<group targetFramework="net35">
<dependency id="ProtoPromise" version="{VERSION}" exclude="Build,Analyzers" />
</group>
<group targetFramework="netstandard2.1">
<dependency id="ProtoPromise" version="{VERSION}" exclude="Build,Analyzers" />
</group>
</dependencies>

<readme>readme.md</readme>
</metadata>

<files>
<file src="..\bin\Release\net35\**" target="lib/net35/Release" />
<file src="..\bin\Release\netstandard2.1\**" target="lib/netstandard2.1/Release" />

<file src="readme.md" target="" />
</files>
</package>
3 changes: 3 additions & 0 deletions ProtoPromiseUnityHelpers/nuget/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Helpers to assist with using Promises in UnityEngine.

Note: it is not recommended to use this nuget package. Instead, you should use the Unity package available on [GitHub](https://github.com/timcassell/ProtoPromise/releases) or the [Unity Asset Store](https://assetstore.unity.com/packages/tools/integration/protopromise-181997).
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// File named AssemblyAttributes.cs instead of AssemblyInfo.cs to avoid conflicts with an auto-generated file of the same name.

using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("ProtoPromiseUnityHelpers")]
[assembly: InternalsVisibleTo("ProtoPromiseTests")]

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,11 @@
using System.Diagnostics;
using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("ProtoPromiseTests")]

namespace Proto.Promises
{
partial class Internal
{
private static event Action OnClearPool;
internal static event Action OnClearPool;

internal static void ClearPool()
{
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 1612d78

Please sign in to comment.