Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create nuget package for Unity helpers. #127

Merged
merged 1 commit into from
Sep 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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