Skip to content

Commit 48af06a

Browse files
committed
creating WorkflowManager class to get the workflow embedded resources in assembly.
1 parent c7ab495 commit 48af06a

File tree

9 files changed

+55
-242
lines changed

9 files changed

+55
-242
lines changed

src/GitVersion.Core/Configuration/ConfigurationProvider.cs

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using GitVersion.Configuration.Init.Wizard;
2+
using GitVersion.Configuration.SupportedWorkflows;
23
using GitVersion.Extensions;
34
using GitVersion.Logging;
4-
using GitVersion.Properties;
55
using Microsoft.Extensions.Options;
66
using YamlDotNet.Core;
77

@@ -57,21 +57,10 @@ internal GitVersionConfiguration ProvideInternal(
5757

5858
var workflow = GetWorkflow(overrideConfiguration, overrideConfigurationFromFile);
5959

60-
Dictionary<object, object?>? overrideConfigurationFromWorkflow = null;
61-
62-
if (!string.IsNullOrEmpty(workflow))
63-
{
64-
var workflowResource = (byte[]?)Resources.ResourceManager.GetObject(workflow, Resources.Culture);
65-
if (workflowResource != null)
66-
{
67-
overrideConfigurationFromWorkflow = ConfigurationSerializer.Deserialize<Dictionary<object, object?>>(
68-
Encoding.UTF8.GetString(workflowResource)
69-
);
70-
}
71-
}
72-
7360
IConfigurationBuilder configurationBuilder = (workflow is null)
7461
? GitFlowConfigurationBuilder.New : ConfigurationBuilder.New;
62+
63+
var overrideConfigurationFromWorkflow = WorkflowManager.GetOverrideConfiguration(workflow);
7564
foreach (var item in new[] { overrideConfigurationFromWorkflow, overrideConfigurationFromFile, overrideConfiguration })
7665
{
7766
if (item != null) configurationBuilder.AddOverride(item);
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using GitVersion.Extensions;
2+
3+
namespace GitVersion.Configuration.SupportedWorkflows
4+
{
5+
internal static class WorkflowManager
6+
{
7+
private static readonly string ResourceNameTemplate = DetermineResourceNameTemplate();
8+
9+
private static string DetermineResourceNameTemplate()
10+
{
11+
var fullClassName = typeof(WorkflowManager).FullName!;
12+
var resourceNamePrefix = fullClassName.Substring(0, fullClassName.Length - nameof(WorkflowManager).Length - 1);
13+
return $"{resourceNamePrefix}.{{0}}.yml";
14+
}
15+
16+
public static Dictionary<object, object?>? GetOverrideConfiguration(string? workflow)
17+
{
18+
if (string.IsNullOrEmpty(workflow)) return null;
19+
20+
var resourceName = GetResourceName(workflow);
21+
var embeddedResource = ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource(
22+
resourceName, typeof(WorkflowManager).Assembly
23+
);
24+
return ConfigurationSerializer.Deserialize<Dictionary<object, object?>>(embeddedResource);
25+
}
26+
27+
private static string GetResourceName(string workflow)
28+
=> ResourceNameTemplate.Replace("{0}", workflow.Replace('/', '.'));
29+
}
30+
}

src/GitVersion.Core/Extensions/ReadEmbeddedResourceExtensions.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,20 @@ public static class ReadEmbeddedResourceExtensions
99
/// <param name="resourceName">Should include Namespace separated path to resource in assembly referenced by <typeparamref name="T"/></param>
1010
/// <returns></returns>
1111
public static string ReadAsStringFromEmbeddedResource<T>(this string resourceName)
12+
=> ReadAsStringFromEmbeddedResource(resourceName, typeof(T).Assembly);
13+
14+
public static string ReadAsStringFromEmbeddedResource(this string resourceName, Assembly assembly)
1215
{
13-
using var stream = resourceName.ReadFromEmbeddedResource<T>();
14-
using var rdr = new StreamReader(stream);
15-
return rdr.ReadToEnd();
16+
using var stream = resourceName.ReadFromEmbeddedResource(assembly);
17+
using var streamReader = new StreamReader(stream);
18+
return streamReader.ReadToEnd();
1619
}
1720

18-
private static Stream ReadFromEmbeddedResource<T>(this string resourceName)
21+
private static Stream ReadFromEmbeddedResource(this string resourceName, Assembly assembly)
1922
{
20-
var assembly = typeof(T).Assembly;
23+
assembly.NotNull();
2124

22-
return assembly.GetManifestResourceStream(resourceName) ?? throw new InvalidOperationException($"Could not find embedded resource {resourceName}");
25+
return assembly.GetManifestResourceStream(resourceName)
26+
?? throw new InvalidOperationException($"Could not find embedded resource {resourceName}");
2327
}
2428
}

src/GitVersion.Core/GitVersion.Core.csproj

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@
1111
<Product>$(AssemblyName)</Product>
1212
</PropertyGroup>
1313

14+
<ItemGroup>
15+
<None Remove="Configuration\SupportedWorkflows\GitFlowV1.yml" />
16+
<None Remove="Configuration\SupportedWorkflows\GitHubFlowV1.yml" />
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<EmbeddedResource Include="Configuration\SupportedWorkflows\GitFlow\v1.yml" />
21+
<EmbeddedResource Include="Configuration\SupportedWorkflows\GitHubFlow\v1.yml" />
22+
</ItemGroup>
23+
1424
<ItemGroup>
1525
<PackageReference Include="Polly" />
1626
<PackageReference Include="System.Net.Requests" />
@@ -30,18 +40,7 @@
3040
</ItemGroup>
3141

3242
<ItemGroup>
33-
<Compile Update="Properties\Resources.Designer.cs">
34-
<DesignTime>True</DesignTime>
35-
<AutoGen>True</AutoGen>
36-
<DependentUpon>Resources.resx</DependentUpon>
37-
</Compile>
38-
</ItemGroup>
39-
40-
<ItemGroup>
41-
<EmbeddedResource Update="Properties\Resources.resx">
42-
<Generator>ResXFileCodeGenerator</Generator>
43-
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
44-
</EmbeddedResource>
43+
<Folder Include="Properties\" />
4544
</ItemGroup>
4645

4746
</Project>

src/GitVersion.Core/Properties/Resources.Designer.cs

Lines changed: 0 additions & 83 deletions
This file was deleted.

src/GitVersion.Core/Properties/Resources.resx

Lines changed: 0 additions & 127 deletions
This file was deleted.

src/GitVersion.Core/PublicAPI.Unshipped.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,6 +1091,7 @@ static GitVersion.Extensions.GitExtensions.CreateGitLogArgs(int? maxCommits) ->
10911091
static GitVersion.Extensions.GitExtensions.DumpGraph(string! workingDirectory, System.Action<string!>? writer = null, int? maxCommits = null) -> void
10921092
static GitVersion.Extensions.ObjectExtensions.Deconstruct<TKey, TValue>(this System.Collections.Generic.KeyValuePair<TKey, TValue> kvp, out TKey key, out TValue value) -> void
10931093
static GitVersion.Extensions.ObjectExtensions.GetProperties(this object! obj) -> System.Collections.Generic.Dictionary<string!, string!>!
1094+
static GitVersion.Extensions.ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource(this string! resourceName, System.Reflection.Assembly! assembly) -> string!
10941095
static GitVersion.Extensions.ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource<T>(this string! resourceName) -> string!
10951096
static GitVersion.Extensions.ServiceCollectionExtensions.AddModule(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, GitVersion.IGitVersionModule! gitVersionModule) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
10961097
static GitVersion.Extensions.ServiceCollectionExtensions.GetServiceForType<TService, TType>(this System.IServiceProvider! serviceProvider) -> TService

0 commit comments

Comments
 (0)