Skip to content

Commit 86d3112

Browse files
fredericDelaportehazzikmaca88
committed
Automatically generate async code on pull request
Copied from nhibernate/nhibernate-core#3133 and nhibernate/nhibernate-core#2605. Co-authored-by: Alex Zaytsev <[email protected]> Co-authored-by: maca88 <[email protected]>
1 parent 5585435 commit 86d3112

File tree

9 files changed

+104
-53
lines changed

9 files changed

+104
-53
lines changed

.config/dotnet-tools.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"csharpasyncgenerator.tool": {
6+
"version": "0.20.1",
7+
"commands": [
8+
"async-generator"
9+
]
10+
}
11+
}
12+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Generate Async code
2+
3+
on:
4+
pull_request_target:
5+
paths:
6+
- '**.cs'
7+
8+
permissions: {}
9+
10+
jobs:
11+
generate-async:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- uses: actions/checkout@v3
16+
with:
17+
ref: ${{ github.event.pull_request.head.ref }}
18+
repository: ${{ github.event.pull_request.head.repo.full_name }}
19+
token: ${{ secrets.NHIBERNATE_BOT_TOKEN }}
20+
21+
- name: Setup .NET
22+
uses: actions/setup-dotnet@v2
23+
with:
24+
dotnet-version: 6.0.x
25+
26+
- name: Generate Async code
27+
run: |
28+
dotnet tool restore
29+
dotnet restore ./NHibernate.Caches.Everything.sln
30+
dotnet async-generator
31+
32+
- name: Push changes
33+
run: |
34+
git config user.name github-actions[bot]
35+
git config user.email github-actions[bot]@users.noreply.github.com
36+
if [[ -z "$(git status --porcelain)" ]]; then
37+
echo "No changes to commit"
38+
exit 0
39+
fi
40+
git add -A
41+
git commit -am "Generate async files"
42+
git push

AsyncGenerator.yml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
projects:
2-
- filePath: CoreDistributedCache\NHibernate.Caches.CoreDistributedCache\NHibernate.Caches.CoreDistributedCache.csproj
2+
- filePath: CoreDistributedCache/NHibernate.Caches.CoreDistributedCache/NHibernate.Caches.CoreDistributedCache.csproj
33
targetFramework: net461
44
concurrentRun: true
55
applyChanges: true
@@ -28,7 +28,7 @@
2828
registerPlugin:
2929
- type: AsyncGenerator.Core.Plugins.EmptyRegionRemover
3030
assemblyName: AsyncGenerator.Core
31-
- filePath: StackExchangeRedis\NHibernate.Caches.StackExchangeRedis\NHibernate.Caches.StackExchangeRedis.csproj
31+
- filePath: StackExchangeRedis/NHibernate.Caches.StackExchangeRedis/NHibernate.Caches.StackExchangeRedis.csproj
3232
targetFramework: net461
3333
concurrentRun: true
3434
applyChanges: true
@@ -87,7 +87,7 @@
8787
registerPlugin:
8888
- type: AsyncGenerator.Core.Plugins.EmptyRegionRemover
8989
assemblyName: AsyncGenerator.Core
90-
- filePath: NHibernate.Caches.Common.Tests\NHibernate.Caches.Common.Tests.csproj
90+
- filePath: NHibernate.Caches.Common.Tests/NHibernate.Caches.Common.Tests.csproj
9191
targetFramework: net461
9292
concurrentRun: true
9393
applyChanges: true
@@ -103,7 +103,7 @@
103103
- name: createNewTypes
104104
value: false
105105
assemblyName: AsyncGenerator.Core
106-
- filePath: CoreDistributedCache\NHibernate.Caches.CoreDistributedCache.Tests\NHibernate.Caches.CoreDistributedCache.Tests.csproj
106+
- filePath: CoreDistributedCache/NHibernate.Caches.CoreDistributedCache.Tests/NHibernate.Caches.CoreDistributedCache.Tests.csproj
107107
targetFramework: net461
108108
concurrentRun: true
109109
applyChanges: true
@@ -119,7 +119,7 @@
119119
- name: createNewTypes
120120
value: false
121121
assemblyName: AsyncGenerator.Core
122-
- filePath: CoreMemoryCache\NHibernate.Caches.CoreMemoryCache.Tests\NHibernate.Caches.CoreMemoryCache.Tests.csproj
122+
- filePath: CoreMemoryCache/NHibernate.Caches.CoreMemoryCache.Tests/NHibernate.Caches.CoreMemoryCache.Tests.csproj
123123
targetFramework: net461
124124
concurrentRun: true
125125
applyChanges: true
@@ -135,7 +135,7 @@
135135
- name: createNewTypes
136136
value: false
137137
assemblyName: AsyncGenerator.Core
138-
- filePath: EnyimMemcached\NHibernate.Caches.EnyimMemcached.Tests\NHibernate.Caches.EnyimMemcached.Tests.csproj
138+
- filePath: EnyimMemcached/NHibernate.Caches.EnyimMemcached.Tests/NHibernate.Caches.EnyimMemcached.Tests.csproj
139139
targetFramework: net461
140140
concurrentRun: true
141141
applyChanges: true
@@ -151,7 +151,7 @@
151151
- name: createNewTypes
152152
value: false
153153
assemblyName: AsyncGenerator.Core
154-
- filePath: MemCache\NHibernate.Caches.MemCache.Tests\NHibernate.Caches.MemCache.Tests.csproj
154+
- filePath: MemCache/NHibernate.Caches.MemCache.Tests/NHibernate.Caches.MemCache.Tests.csproj
155155
targetFramework: net461
156156
concurrentRun: true
157157
applyChanges: true
@@ -167,7 +167,7 @@
167167
- name: createNewTypes
168168
value: false
169169
assemblyName: AsyncGenerator.Core
170-
- filePath: Prevalence\NHibernate.Caches.Prevalence.Tests\NHibernate.Caches.Prevalence.Tests.csproj
170+
- filePath: Prevalence/NHibernate.Caches.Prevalence.Tests/NHibernate.Caches.Prevalence.Tests.csproj
171171
targetFramework: net461
172172
concurrentRun: true
173173
applyChanges: true
@@ -183,7 +183,7 @@
183183
- name: createNewTypes
184184
value: false
185185
assemblyName: AsyncGenerator.Core
186-
- filePath: RtMemoryCache\NHibernate.Caches.RtMemoryCache.Tests\NHibernate.Caches.RtMemoryCache.Tests.csproj
186+
- filePath: RtMemoryCache/NHibernate.Caches.RtMemoryCache.Tests/NHibernate.Caches.RtMemoryCache.Tests.csproj
187187
targetFramework: net461
188188
concurrentRun: true
189189
applyChanges: true
@@ -199,7 +199,7 @@
199199
- name: createNewTypes
200200
value: false
201201
assemblyName: AsyncGenerator.Core
202-
- filePath: SharedCache\NHibernate.Caches.SharedCache.Tests\NHibernate.Caches.SharedCache.Tests.csproj
202+
- filePath: SharedCache/NHibernate.Caches.SharedCache.Tests/NHibernate.Caches.SharedCache.Tests.csproj
203203
targetFramework: net461
204204
concurrentRun: true
205205
applyChanges: true
@@ -215,7 +215,7 @@
215215
- name: createNewTypes
216216
value: false
217217
assemblyName: AsyncGenerator.Core
218-
- filePath: StackExchangeRedis\NHibernate.Caches.StackExchangeRedis.Tests\NHibernate.Caches.StackExchangeRedis.Tests.csproj
218+
- filePath: StackExchangeRedis/NHibernate.Caches.StackExchangeRedis.Tests/NHibernate.Caches.StackExchangeRedis.Tests.csproj
219219
targetFramework: net461
220220
concurrentRun: true
221221
applyChanges: true
@@ -238,7 +238,7 @@
238238
- name: createNewTypes
239239
value: false
240240
assemblyName: AsyncGenerator.Core
241-
- filePath: SysCache\NHibernate.Caches.SysCache.Tests\NHibernate.Caches.SysCache.Tests.csproj
241+
- filePath: SysCache/NHibernate.Caches.SysCache.Tests/NHibernate.Caches.SysCache.Tests.csproj
242242
targetFramework: net461
243243
concurrentRun: true
244244
applyChanges: true
@@ -254,7 +254,7 @@
254254
- name: createNewTypes
255255
value: false
256256
assemblyName: AsyncGenerator.Core
257-
- filePath: SysCache2\NHibernate.Caches.SysCache2.Tests\NHibernate.Caches.SysCache2.Tests.csproj
257+
- filePath: SysCache2/NHibernate.Caches.SysCache2.Tests/NHibernate.Caches.SysCache2.Tests.csproj
258258
targetFramework: net461
259259
concurrentRun: true
260260
applyChanges: true
@@ -270,7 +270,7 @@
270270
- name: createNewTypes
271271
value: false
272272
assemblyName: AsyncGenerator.Core
273-
- filePath: Velocity\NHibernate.Caches.Velocity.Tests\NHibernate.Caches.Velocity.Tests.csproj
273+
- filePath: Velocity/NHibernate.Caches.Velocity.Tests/NHibernate.Caches.Velocity.Tests.csproj
274274
targetFramework: net461
275275
concurrentRun: true
276276
applyChanges: true

StackExchangeRedis/NHibernate.Caches.StackExchangeRedis/Async/AbstractRegionStrategy.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -215,14 +215,14 @@ protected virtual Task ExecutePutAsync(string cacheKey, object value, Cancellati
215215
{
216216
cancellationToken.ThrowIfCancellationRequested();
217217
return Database.ScriptEvaluateAsync(
218-
PutScript,
219-
AppendAdditionalKeys(new RedisKey[] {cacheKey}),
220-
AppendAdditionalValues(new RedisValue[]
221-
{
222-
Serializer.Serialize(value),
223-
ExpirationEnabled,
224-
(long) Expiration.TotalMilliseconds
225-
}));
218+
PutScript,
219+
AppendAdditionalKeys(new RedisKey[] {cacheKey}),
220+
AppendAdditionalValues(new RedisValue[]
221+
{
222+
Serializer.Serialize(value),
223+
ExpirationEnabled,
224+
(long) Expiration.TotalMilliseconds
225+
}));
226226
}
227227
}
228228
catch (Exception ex)
@@ -490,11 +490,11 @@ async Task<int> InternalUnlockManyAsync()
490490
}
491491

492492
var unlockedKeys =
493-
await (_keyLocker.UnlockManyAsync(cacheKeys, lockValue, UnlockManyScript, GetAdditionalKeys(), GetAdditionalValues(), cancellationToken)).ConfigureAwait(false);
493+
await (_keyLocker.UnlockManyAsync(cacheKeys, lockValue, UnlockManyScript, GetAdditionalKeys(), GetAdditionalValues(), cancellationToken)).ConfigureAwait(false);
494494
if (Log.IsDebugEnabled())
495495
{
496496
Log.Debug("Number of unlocked objects with keys ({0}): {1}", string.Join(",", cacheKeys.Select(o => $"'{o}'")),
497-
unlockedKeys);
497+
unlockedKeys);
498498
}
499499

500500
return unlockedKeys;

StackExchangeRedis/NHibernate.Caches.StackExchangeRedis/Async/DistributedLocalCacheRegionStrategy.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ async Task<string> InternalLockAsync()
9999
{
100100
object Context() => new KeyValuePair<string, CacheLockValue>(lockKey, cacheLockValue);
101101
return await (_retryPolicy
102-
.ExecuteAsync(async () =>
102+
.ExecuteAsync(async () =>
103103
{
104104
if (!LockLocal(lockKey, cacheLockValue))
105105
{
@@ -109,16 +109,16 @@ async Task<string> InternalLockAsync()
109109

110110
cacheLockValue.Setup();
111111
var subscriberCount = await (_subscriber.PublishAsync(_synchronizationChannel, Serializer.Serialize(new CacheSynchronizationMessage
112-
{
113-
OperationType = OperationType.Lock,
114-
Timestamp = DateTime.UtcNow.Ticks,
115-
ClientId = _clientId,
116-
Data = new LockData
117112
{
118-
LockKey = lockKey,
119-
LockValue = lockValue
120-
}
121-
}))).ConfigureAwait(false) - 1;
113+
OperationType = OperationType.Lock,
114+
Timestamp = DateTime.UtcNow.Ticks,
115+
ClientId = _clientId,
116+
Data = new LockData
117+
{
118+
LockKey = lockKey,
119+
LockValue = lockValue
120+
}
121+
}))).ConfigureAwait(false) - 1;
122122

123123
if (subscriberCount == 0)
124124
{
@@ -169,7 +169,7 @@ async Task<string> InternalLockManyAsync()
169169
{
170170
object Context() => new KeyValuePair<string[], CacheLockValue>(lockKeys, cacheLockValue);
171171
return await (_retryPolicy
172-
.ExecuteAsync(async () =>
172+
.ExecuteAsync(async () =>
173173
{
174174
if (!LockManyLocal(lockKeys, cacheLockValue))
175175
{
@@ -179,16 +179,16 @@ async Task<string> InternalLockManyAsync()
179179

180180
cacheLockValue.Setup();
181181
var subscriberCount = await (_subscriber.PublishAsync(_synchronizationChannel, Serializer.Serialize(new CacheSynchronizationMessage
182-
{
183-
OperationType = OperationType.LockMany,
184-
Timestamp = DateTime.UtcNow.Ticks,
185-
ClientId = _clientId,
186-
Data = new LockManyData
187182
{
188-
LockKeys = lockKeys,
189-
LockValue = lockValue
190-
}
191-
}))).ConfigureAwait(false) - 1;
183+
OperationType = OperationType.LockMany,
184+
Timestamp = DateTime.UtcNow.Ticks,
185+
ClientId = _clientId,
186+
Data = new LockManyData
187+
{
188+
LockKeys = lockKeys,
189+
LockValue = lockValue
190+
}
191+
}))).ConfigureAwait(false) - 1;
192192

193193
if (subscriberCount == 0)
194194
{

Tools/packages.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
</ItemGroup>
1212

1313
<ItemGroup>
14-
<PackageReference Include="CSharpAsyncGenerator.CommandLine" Version="0.17.1" />
1514
<PackageReference Include="NUnit.Console" Version="3.10.0" />
1615
<PackageReference Include="NUnit.ConsoleRunner" Version="3.10.0" />
1716
</ItemGroup>

buildcommon.xml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@
9191
</target>
9292

9393
<target name="common.tools-restore" depends="init">
94+
<exec workingdir="${root.dir}" program="dotnet" verbose="true">
95+
<arg line="tool restore" />
96+
</exec>
9497
<exec workingdir="${root.dir}/Tools" program="dotnet" verbose="true">
9598
<arg line="restore ./packages.csproj --packages ." />
9699
</exec>
@@ -136,12 +139,6 @@
136139
</exec>
137140
</target>
138141

139-
<target name="common.find-async-generator-console">
140-
<property name="tool.id" value="CSharpAsyncGenerator.CommandLine" />
141-
<call target="get-tool-info" />
142-
<property name="async-generator-console" value="${tool.path}tools/netcoreapp2.1/AsyncGenerator.CommandLine.dll" />
143-
</target>
144-
145142
<target name="common.nuget-pushbat"
146143
description="Creates files for the release on nuget gallery.">
147144

default.build

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@
7676
<echo message="Created a '${project.config}' package in ${build.dir}" />
7777
</target>
7878

79-
<target name="generate-async" depends="common.tools-restore common.solution-restore common.find-async-generator-console">
79+
<target name="generate-async" depends="common.tools-restore common.solution-restore">
8080
<exec workingdir="${root.dir}" program="dotnet" verbose="true">
81-
<arg line="${async-generator-console}" />
81+
<arg line="async-generator" />
8282
</exec>
8383
</target>
8484

readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ CoreDistributedCache now use a `Tuple<string, object>(keyAsString, value)` as th
3535
* #106 - Unable to use DistributedCache with JsonCacheSerializer
3636

3737
* Task
38+
* #109 - Automatically generate async code on pull request
3839
* #108 - Fix AppVeyor build
3940
* #89 - Fix iconUrl warning
4041

0 commit comments

Comments
 (0)