Skip to content

Commit 3ca3172

Browse files
authored
feat!: rename namespace, add OpenFeature dep (#18)
feat!: rename namespace, add OpenFeature dependency and readmes.
1 parent ac07a2d commit 3ca3172

24 files changed

+153
-49
lines changed

.release-please-manifest.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"src/OpenFeature.Hooks.Otel": "0.0.2",
3-
"src/OpenFeature.Providers.Flagd": "0.0.2"
2+
"src/OpenFeature.Contrib.Hooks.Otel": "0.0.2",
3+
"src/OpenFeature.Contrib.Providers.Flagd": "0.0.2"
44
}

CONTRIBUTING.md

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Contributing
2+
3+
## System Requirements
4+
5+
Dotnet 6+ is recommended.
6+
7+
## Compilation target(s)
8+
9+
As in the Dotnet-SDK, we target C# LangVersion 7.3. The `Common.props` configures this automatically.
10+
11+
## Adding a project
12+
13+
1. Create a new library project under `src/`: `dotnet new classlib -o src/OpenFeature.Contrib.MyComponent --langVersion 7.3`
14+
2. Create a new test project under `test/`: `dotnet new xunit -o test/OpenFeature.Contrib.MyComponent.Test`
15+
3. Add the library project to the solution: `dotnet sln DotnetSdkContrib.sln add src/OpenFeature.Contrib.MyComponent/OpenFeature.Contrib.MyComponent.csproj`
16+
4. Add the test project to the solution: `dotnet sln DotnetSdkContrib.sln add test/OpenFeature.Contrib.MyComponent.Test/OpenFeature.Contrib.MyComponent.Test.csproj`
17+
5. Add the desired properties to your library's `.csproj` file (see example below).
18+
5. Remove all content besides the root element from your test project's `.csproj` file (all settings will be inherited).
19+
6. Add the new library project to `release-please-config.json`.
20+
7. Add a `version.txt` file to the root of your library with a version matching that in your new `.csproj` file, e.g. `0.0.1`.
21+
8. If you care to release a pre `1.0.0` version, add the same version above to `.release-please-manifest.json`. Failing to do this will release a `1.0.0` initial release.
22+
23+
Sample `.csproj` file:
24+
25+
```xml
26+
<Project Sdk="Microsoft.NET.Sdk">
27+
28+
<PropertyGroup>
29+
<PackageId>OpenFeature.MyComponent</PackageId>
30+
<VersionNumber>0.0.1</VersionNumber> <!--x-release-please-version -->
31+
<Version>$(VersionNumber)</Version>
32+
<AssemblyVersion>$(VersionNumber)</AssemblyVersion>
33+
<FileVersion>$(VersionNumber)</FileVersion>
34+
<Description>A very valuable OpenFeature contribution!</Description>
35+
<PackageProjectUrl>https://openfeature.dev</PackageProjectUrl>
36+
<RepositoryUrl>https://github.com/open-feature/dotnet-sdk-contrib</RepositoryUrl>
37+
<Authors>Me!</Authors>
38+
</PropertyGroup>
39+
40+
</Project>
41+
```
42+
43+
## Documentation
44+
45+
Any published modules must have documentation in their root directory, explaining the basic purpose of the module as well as installation and usage instructions.
46+
Instructions for how to develop a module should also be included (required system dependencies, instructions for testing locally, etc).
47+
48+
## Testing
49+
50+
Any published modules must have reasonable test coverage.
51+
The instructions above will generate a test project for you.
52+
53+
Use `dotnet test` to test the entire project.
54+
55+
## Versioning and releasing
56+
57+
As described in the [README](./README.md), this project uses release-please, and semantic versioning.
58+
Breaking changes should be identified by using a semantic PR title.
59+
60+
## Dependencies
61+
62+
Keep dependencies to a minimum.
63+
Dependencies used only for building and testing should have a `<PrivateAssets>all</PrivateAssets>` element to prevent them from being exposed to consumers.

DotnetSdkContribs.sln DotnetSdkContrib.sln

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ VisualStudioVersion = 17.0.31903.59
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0E563821-BD08-4B7F-BF9D-395CAD80F026}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Providers.Flagd", "src\OpenFeature.Providers.Flagd\OpenFeature.Providers.Flagd.csproj", "{6F8FF25A-F22B-4083-B3F9-B4B9BB6FB699}"
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Contrib.Providers.Flagd", "src\OpenFeature.Contrib.Providers.Flagd\OpenFeature.Contrib.Providers.Flagd.csproj", "{6F8FF25A-F22B-4083-B3F9-B4B9BB6FB699}"
99
EndProject
10-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Hooks.Otel", "src\OpenFeature.Hooks.Otel\OpenFeature.Hooks.Otel.csproj", "{82D10BAE-F1EE-432A-BD5D-DECAD07A84FE}"
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Contrib.Hooks.Otel", "src\OpenFeature.Contrib.Hooks.Otel\OpenFeature.Contrib.Hooks.Otel.csproj", "{82D10BAE-F1EE-432A-BD5D-DECAD07A84FE}"
1111
EndProject
1212
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{B6D3230B-5E4D-4FF1-868E-2F4E325C84FE}"
1313
EndProject
14-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Hooks.Otel.Test", "test\OpenFeature.Hooks.Otel.Test\OpenFeature.Hooks.Otel.Test.csproj", "{199FA48A-06EF-4E15-8206-C095D1455A99}"
14+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Contrib.Hooks.Otel.Test", "test\OpenFeature.Contrib.Hooks.Otel.Test\OpenFeature.Contrib.Hooks.Otel.Test.csproj", "{199FA48A-06EF-4E15-8206-C095D1455A99}"
1515
EndProject
16-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Providers.Flagd.Test", "test\OpenFeature.Providers.Flagd.Test\OpenFeature.Providers.Flagd.Test.csproj", "{206323A0-7334-4723-8394-C31C150B95DC}"
16+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Contrib.Providers.Flagd.Test", "test\OpenFeature.Contrib.Providers.Flagd.Test\OpenFeature.Contrib.Providers.Flagd.Test.csproj", "{206323A0-7334-4723-8394-C31C150B95DC}"
1717
EndProject
1818
Global
1919
GlobalSection(SolutionConfigurationPlatforms) = preSolution

README.md

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,18 @@
1-
# dotnet-sdk-contrib
2-
OpenFeature Providers and Hooks for .NET
1+
# OpenFeature .NET Contributions
2+
3+
![Experimental](https://img.shields.io/badge/experimental-breaking%20changes%20allowed-yellow)
4+
![Alpha](https://img.shields.io/badge/alpha-release-red)
5+
6+
This repository is intended for OpenFeature contributions which are not included in the [OpenFeature SDK](https://github.com/open-feature/dotnet-sdk).
7+
8+
## Releases
9+
10+
This repo uses _Release Please_ to release packages. Release Please sets up a running PR that tracks all changes for the library components, and maintains the versions according to [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/), generated when [PRs are merged](https://github.com/amannn/action-semantic-pull-request). When Release Please's running PR is merged, any changed artifacts are published.
11+
12+
## Contributing
13+
14+
see: [CONTRIBUTING.md](./CONTRIBUTING.md)
15+
16+
## License
17+
18+
Apache 2.0 - See [LICENSE](./LICENSE) for more information.

build/Common.props

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
<Project>
2+
3+
<ItemGroup>
4+
<PackageReference Include="OpenFeature" Version="$(OpenFeatureVer)" />
5+
</ItemGroup>
6+
27
<PropertyGroup>
38
<LangVersion>7.3</LangVersion>
49
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
@@ -18,7 +23,7 @@
1823
Please sort alphabetically.
1924
Refer to https://docs.microsoft.com/nuget/concepts/package-versioning for semver syntax.
2025
-->
21-
<MicrosoftExtensionsLoggerVer>[2.0,6.0)</MicrosoftExtensionsLoggerVer>
2226
<MicrosoftSourceLinkGitHubPkgVer>[1.0.0,2.0)</MicrosoftSourceLinkGitHubPkgVer>
27+
<OpenFeatureVer>[0.5,0.6)</OpenFeatureVer>
2328
</PropertyGroup>
24-
</Project>
29+
</Project>

build/Common.tests.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup Condition="$(MSBuildProjectName.EndsWith('.Tests'))">
15-
<Content Include="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'DotnetSdkContribs.sln'))\build\xunit.runner.json">
15+
<Content Include="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'DotnetSdkContrib.sln'))\build\xunit.runner.json">
1616
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1717
</Content>
1818
</ItemGroup>

release-please-config.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
{
22
"bootstrap-sha": "fd59f2328fd5aba0b7705b2fdbf76e39afa244dd",
33
"packages": {
4-
"src/OpenFeature.Hooks.Otel": {
5-
"package-name": "OpenFeature.Hooks.Otel",
4+
"src/OpenFeature.Contrib.Hooks.Otel": {
5+
"package-name": "OpenFeature.Contrib.Hooks.Otel",
66
"release-type": "simple",
77
"bump-minor-pre-major": true,
88
"bump-patch-for-minor-pre-major": true,
99
"versioning": "default",
1010
"extra-files": [
11-
"OpenFeature.Hooks.Otel.csproj"
11+
"OpenFeature.Contrib.Hooks.Otel.csproj"
1212
]
1313
},
14-
"src/OpenFeature.Providers.Flagd": {
15-
"package-name": "OpenFeature.Providers.Flagd",
14+
"src/OpenFeature.Contrib.Providers.Flagd": {
15+
"package-name": "OpenFeature.Contrib.Providers.Flagd",
1616
"release-type": "simple",
1717
"bump-minor-pre-major": true,
1818
"bump-patch-for-minor-pre-major": true,
1919
"versioning": "default",
2020
"extra-files": [
21-
"OpenFeature.Providers.Flagd.csproj"
21+
"OpenFeature.Contrib.Providers.Flagd.csproj"
2222
]
2323
}
2424
}

src/Directory.Build.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<Project>
2-
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'DotnetSdkContribs.sln'))\build\Common.prod.props" />
2+
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'DotnetSdkContrib.sln'))\build\Common.prod.props" />
33
</Project>

src/OpenFeature.Hooks.Otel/Class1.cs src/OpenFeature.Contrib.Hooks.Otel/Class1.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace OpenFeature.Hooks.Otel
1+
namespace OpenFeature.Contrib.Hooks.Otel
22
{
33
/// <summary>
44
/// Stub.

src/OpenFeature.Hooks.Otel/OpenFeature.Hooks.Otel.csproj src/OpenFeature.Contrib.Hooks.Otel/OpenFeature.Contrib.Hooks.Otel.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4+
<PackageId>OpenFeature.Contrib.Hooks.Otel</PackageId>
45
<VersionNumber>0.0.2</VersionNumber> <!--x-release-please-version -->
56
<Version>$(VersionNumber)</Version>
67
<AssemblyVersion>$(VersionNumber)</AssemblyVersion>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# OpenFeature OpenTelemetry hook for .NET
2+
3+
Coming soon!

src/OpenFeature.Providers.Flagd/OpenFeature.Providers.Flagd.csproj src/OpenFeature.Contrib.Providers.Flagd/OpenFeature.Contrib.Providers.Flagd.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4+
<PackageId>OpenFeature.Contrib.Providers.Flagd</PackageId>
45
<VersionNumber>0.0.2</VersionNumber> <!--x-release-please-version -->
56
<Version>$(VersionNumber)</Version>
67
<AssemblyVersion>$(VersionNumber)</AssemblyVersion>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# OpenFeature flagd Provider for .NET
2+
3+
Coming soon!
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
namespace OpenFeature.Contrib.Providers.Flagd
2+
{
3+
/// <summary>
4+
/// A stub class.
5+
/// </summary>
6+
public class Stub
7+
{
8+
/// <summary>
9+
/// Get the provider name.
10+
/// </summary>
11+
public static string GetProviderName()
12+
{
13+
return Api.Instance.GetProviderMetadata().Name;
14+
}
15+
}
16+
}
17+
18+

src/OpenFeature.Providers.Flagd/Class1.cs

-12
This file was deleted.

test/Directory.Build.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<Project>
2-
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'DotnetSdkContribs.sln'))\build\Common.tests.props" />
2+
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'DotnetSdkContrib.sln'))\build\Common.tests.props" />
33
</Project>

test/OpenFeature.Hooks.Otel.Test/UnitTest1.cs test/OpenFeature.Contrib.Hooks.Otel.Test/UnitTest1.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Xunit;
22

3-
namespace OpenFeature.Hooks.Otel.Test
3+
namespace OpenFeature.Contrib.Hooks.Otel.Test
44
{
55
public class UnitTest1
66
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<ItemGroup>
4+
<ProjectReference Include="..\..\src\OpenFeature.Contrib.Providers.Flagd\OpenFeature.Contrib.Providers.Flagd.csproj" />
5+
</ItemGroup>
6+
7+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
using Xunit;
3+
using OpenFeature.Contrib.Providers.Flagd;
4+
5+
namespace OpenFeature.Contrib.Providers.Flagd.Test
6+
{
7+
public class UnitTest1
8+
{
9+
[Fact]
10+
public void TestMethod1()
11+
{
12+
Assert.Equal("No-op Provider", Stub.GetProviderName());
13+
}
14+
}
15+
}

test/OpenFeature.Providers.Flagd.Test/OpenFeature.Providers.Flagd.Test.csproj

-3
This file was deleted.

test/OpenFeature.Providers.Flagd.Test/UnitTest1.cs

-13
This file was deleted.

0 commit comments

Comments
 (0)