From 3ca31722b83053d4edf2038889c78efa717a7cff Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Sat, 15 Oct 2022 21:39:49 -0400 Subject: [PATCH] feat!: rename namespace, add OpenFeature dep (#18) feat!: rename namespace, add OpenFeature dependency and readmes. --- .release-please-manifest.json | 4 +- CONTRIBUTING.md | 63 +++++++++++++++++++ DotnetSdkContribs.sln => DotnetSdkContrib.sln | 8 +-- README.md | 20 +++++- build/Common.props | 9 ++- build/Common.tests.props | 2 +- release-please-config.json | 12 ++-- src/Directory.Build.props | 2 +- .../Class1.cs | 2 +- .../OpenFeature.Contrib.Hooks.Otel.csproj} | 1 + src/OpenFeature.Contrib.Hooks.Otel/README.md | 3 + .../version.txt | 0 ...penFeature.Contrib.Providers.Flagd.csproj} | 1 + .../README.md | 3 + .../Stub.cs | 18 ++++++ .../version.txt | 0 src/OpenFeature.Providers.Flagd/Class1.cs | 12 ---- test/Directory.Build.props | 2 +- ...penFeature.Contrib.Hooks.Otel.Test.csproj} | 0 .../UnitTest1.cs | 2 +- ...eature.Contrib.Providers.Flagd.Test.csproj | 7 +++ .../UnitTest1.cs | 15 +++++ .../OpenFeature.Providers.Flagd.Test.csproj | 3 - .../UnitTest1.cs | 13 ---- 24 files changed, 153 insertions(+), 49 deletions(-) create mode 100644 CONTRIBUTING.md rename DotnetSdkContribs.sln => DotnetSdkContrib.sln (80%) rename src/{OpenFeature.Hooks.Otel => OpenFeature.Contrib.Hooks.Otel}/Class1.cs (68%) rename src/{OpenFeature.Hooks.Otel/OpenFeature.Hooks.Otel.csproj => OpenFeature.Contrib.Hooks.Otel/OpenFeature.Contrib.Hooks.Otel.csproj} (88%) create mode 100644 src/OpenFeature.Contrib.Hooks.Otel/README.md rename src/{OpenFeature.Hooks.Otel => OpenFeature.Contrib.Hooks.Otel}/version.txt (100%) rename src/{OpenFeature.Providers.Flagd/OpenFeature.Providers.Flagd.csproj => OpenFeature.Contrib.Providers.Flagd/OpenFeature.Contrib.Providers.Flagd.csproj} (87%) create mode 100644 src/OpenFeature.Contrib.Providers.Flagd/README.md create mode 100644 src/OpenFeature.Contrib.Providers.Flagd/Stub.cs rename src/{OpenFeature.Providers.Flagd => OpenFeature.Contrib.Providers.Flagd}/version.txt (100%) delete mode 100644 src/OpenFeature.Providers.Flagd/Class1.cs rename test/{OpenFeature.Hooks.Otel.Test/OpenFeature.Hooks.Otel.Test.csproj => OpenFeature.Contrib.Hooks.Otel.Test/OpenFeature.Contrib.Hooks.Otel.Test.csproj} (100%) rename test/{OpenFeature.Hooks.Otel.Test => OpenFeature.Contrib.Hooks.Otel.Test}/UnitTest1.cs (68%) create mode 100644 test/OpenFeature.Contrib.Providers.Flagd.Test/OpenFeature.Contrib.Providers.Flagd.Test.csproj create mode 100644 test/OpenFeature.Contrib.Providers.Flagd.Test/UnitTest1.cs delete mode 100644 test/OpenFeature.Providers.Flagd.Test/OpenFeature.Providers.Flagd.Test.csproj delete mode 100644 test/OpenFeature.Providers.Flagd.Test/UnitTest1.cs diff --git a/.release-please-manifest.json b/.release-please-manifest.json index faaaa8c3..d8e30000 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,4 +1,4 @@ { - "src/OpenFeature.Hooks.Otel": "0.0.2", - "src/OpenFeature.Providers.Flagd": "0.0.2" + "src/OpenFeature.Contrib.Hooks.Otel": "0.0.2", + "src/OpenFeature.Contrib.Providers.Flagd": "0.0.2" } \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..8d6d824e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,63 @@ +# Contributing + +## System Requirements + +Dotnet 6+ is recommended. + +## Compilation target(s) + +As in the Dotnet-SDK, we target C# LangVersion 7.3. The `Common.props` configures this automatically. + +## Adding a project + +1. Create a new library project under `src/`: `dotnet new classlib -o src/OpenFeature.Contrib.MyComponent --langVersion 7.3` +2. Create a new test project under `test/`: `dotnet new xunit -o test/OpenFeature.Contrib.MyComponent.Test` +3. Add the library project to the solution: `dotnet sln DotnetSdkContrib.sln add src/OpenFeature.Contrib.MyComponent/OpenFeature.Contrib.MyComponent.csproj` +4. Add the test project to the solution: `dotnet sln DotnetSdkContrib.sln add test/OpenFeature.Contrib.MyComponent.Test/OpenFeature.Contrib.MyComponent.Test.csproj` +5. Add the desired properties to your library's `.csproj` file (see example below). +5. Remove all content besides the root element from your test project's `.csproj` file (all settings will be inherited). +6. Add the new library project to `release-please-config.json`. +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`. +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. + +Sample `.csproj` file: + +```xml + + + + OpenFeature.MyComponent + 0.0.1 + $(VersionNumber) + $(VersionNumber) + $(VersionNumber) + A very valuable OpenFeature contribution! + https://openfeature.dev + https://github.com/open-feature/dotnet-sdk-contrib + Me! + + + +``` + +## Documentation + +Any published modules must have documentation in their root directory, explaining the basic purpose of the module as well as installation and usage instructions. +Instructions for how to develop a module should also be included (required system dependencies, instructions for testing locally, etc). + +## Testing + +Any published modules must have reasonable test coverage. +The instructions above will generate a test project for you. + +Use `dotnet test` to test the entire project. + +## Versioning and releasing + +As described in the [README](./README.md), this project uses release-please, and semantic versioning. +Breaking changes should be identified by using a semantic PR title. + +## Dependencies + +Keep dependencies to a minimum. +Dependencies used only for building and testing should have a `all` element to prevent them from being exposed to consumers. diff --git a/DotnetSdkContribs.sln b/DotnetSdkContrib.sln similarity index 80% rename from DotnetSdkContribs.sln rename to DotnetSdkContrib.sln index 80b5e243..d2a98ef6 100644 --- a/DotnetSdkContribs.sln +++ b/DotnetSdkContrib.sln @@ -5,15 +5,15 @@ VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0E563821-BD08-4B7F-BF9D-395CAD80F026}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Providers.Flagd", "src\OpenFeature.Providers.Flagd\OpenFeature.Providers.Flagd.csproj", "{6F8FF25A-F22B-4083-B3F9-B4B9BB6FB699}" +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}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Hooks.Otel", "src\OpenFeature.Hooks.Otel\OpenFeature.Hooks.Otel.csproj", "{82D10BAE-F1EE-432A-BD5D-DECAD07A84FE}" +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}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{B6D3230B-5E4D-4FF1-868E-2F4E325C84FE}" EndProject -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}" +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}" EndProject -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}" +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}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/README.md b/README.md index 79c6bcc0..1b117dea 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,18 @@ -# dotnet-sdk-contrib -OpenFeature Providers and Hooks for .NET +# OpenFeature .NET Contributions + +![Experimental](https://img.shields.io/badge/experimental-breaking%20changes%20allowed-yellow) +![Alpha](https://img.shields.io/badge/alpha-release-red) + +This repository is intended for OpenFeature contributions which are not included in the [OpenFeature SDK](https://github.com/open-feature/dotnet-sdk). + +## Releases + +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. + +## Contributing + +see: [CONTRIBUTING.md](./CONTRIBUTING.md) + +## License + +Apache 2.0 - See [LICENSE](./LICENSE) for more information. diff --git a/build/Common.props b/build/Common.props index aae4ba90..0b8eabfb 100644 --- a/build/Common.props +++ b/build/Common.props @@ -1,4 +1,9 @@ + + + + + 7.3 true @@ -18,7 +23,7 @@ Please sort alphabetically. Refer to https://docs.microsoft.com/nuget/concepts/package-versioning for semver syntax. --> - [2.0,6.0) [1.0.0,2.0) + [0.5,0.6) - + \ No newline at end of file diff --git a/build/Common.tests.props b/build/Common.tests.props index 99da5637..80191fca 100644 --- a/build/Common.tests.props +++ b/build/Common.tests.props @@ -12,7 +12,7 @@ - + PreserveNewest diff --git a/release-please-config.json b/release-please-config.json index 7a2326f4..905a9667 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,24 +1,24 @@ { "bootstrap-sha": "fd59f2328fd5aba0b7705b2fdbf76e39afa244dd", "packages": { - "src/OpenFeature.Hooks.Otel": { - "package-name": "OpenFeature.Hooks.Otel", + "src/OpenFeature.Contrib.Hooks.Otel": { + "package-name": "OpenFeature.Contrib.Hooks.Otel", "release-type": "simple", "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": true, "versioning": "default", "extra-files": [ - "OpenFeature.Hooks.Otel.csproj" + "OpenFeature.Contrib.Hooks.Otel.csproj" ] }, - "src/OpenFeature.Providers.Flagd": { - "package-name": "OpenFeature.Providers.Flagd", + "src/OpenFeature.Contrib.Providers.Flagd": { + "package-name": "OpenFeature.Contrib.Providers.Flagd", "release-type": "simple", "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": true, "versioning": "default", "extra-files": [ - "OpenFeature.Providers.Flagd.csproj" + "OpenFeature.Contrib.Providers.Flagd.csproj" ] } } diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 5b6076fd..75f9bff3 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,3 +1,3 @@ - + diff --git a/src/OpenFeature.Hooks.Otel/Class1.cs b/src/OpenFeature.Contrib.Hooks.Otel/Class1.cs similarity index 68% rename from src/OpenFeature.Hooks.Otel/Class1.cs rename to src/OpenFeature.Contrib.Hooks.Otel/Class1.cs index 62698295..1a44e18b 100644 --- a/src/OpenFeature.Hooks.Otel/Class1.cs +++ b/src/OpenFeature.Contrib.Hooks.Otel/Class1.cs @@ -1,4 +1,4 @@ -namespace OpenFeature.Hooks.Otel +namespace OpenFeature.Contrib.Hooks.Otel { /// /// Stub. diff --git a/src/OpenFeature.Hooks.Otel/OpenFeature.Hooks.Otel.csproj b/src/OpenFeature.Contrib.Hooks.Otel/OpenFeature.Contrib.Hooks.Otel.csproj similarity index 88% rename from src/OpenFeature.Hooks.Otel/OpenFeature.Hooks.Otel.csproj rename to src/OpenFeature.Contrib.Hooks.Otel/OpenFeature.Contrib.Hooks.Otel.csproj index 479fe595..e3cd16af 100644 --- a/src/OpenFeature.Hooks.Otel/OpenFeature.Hooks.Otel.csproj +++ b/src/OpenFeature.Contrib.Hooks.Otel/OpenFeature.Contrib.Hooks.Otel.csproj @@ -1,6 +1,7 @@ + OpenFeature.Contrib.Hooks.Otel 0.0.2 $(VersionNumber) $(VersionNumber) diff --git a/src/OpenFeature.Contrib.Hooks.Otel/README.md b/src/OpenFeature.Contrib.Hooks.Otel/README.md new file mode 100644 index 00000000..14ee3b7a --- /dev/null +++ b/src/OpenFeature.Contrib.Hooks.Otel/README.md @@ -0,0 +1,3 @@ +# OpenFeature OpenTelemetry hook for .NET + +Coming soon! diff --git a/src/OpenFeature.Hooks.Otel/version.txt b/src/OpenFeature.Contrib.Hooks.Otel/version.txt similarity index 100% rename from src/OpenFeature.Hooks.Otel/version.txt rename to src/OpenFeature.Contrib.Hooks.Otel/version.txt diff --git a/src/OpenFeature.Providers.Flagd/OpenFeature.Providers.Flagd.csproj b/src/OpenFeature.Contrib.Providers.Flagd/OpenFeature.Contrib.Providers.Flagd.csproj similarity index 87% rename from src/OpenFeature.Providers.Flagd/OpenFeature.Providers.Flagd.csproj rename to src/OpenFeature.Contrib.Providers.Flagd/OpenFeature.Contrib.Providers.Flagd.csproj index 139ddd95..4a755d1c 100644 --- a/src/OpenFeature.Providers.Flagd/OpenFeature.Providers.Flagd.csproj +++ b/src/OpenFeature.Contrib.Providers.Flagd/OpenFeature.Contrib.Providers.Flagd.csproj @@ -1,6 +1,7 @@ + OpenFeature.Contrib.Providers.Flagd 0.0.2 $(VersionNumber) $(VersionNumber) diff --git a/src/OpenFeature.Contrib.Providers.Flagd/README.md b/src/OpenFeature.Contrib.Providers.Flagd/README.md new file mode 100644 index 00000000..e9d8384f --- /dev/null +++ b/src/OpenFeature.Contrib.Providers.Flagd/README.md @@ -0,0 +1,3 @@ +# OpenFeature flagd Provider for .NET + +Coming soon! diff --git a/src/OpenFeature.Contrib.Providers.Flagd/Stub.cs b/src/OpenFeature.Contrib.Providers.Flagd/Stub.cs new file mode 100644 index 00000000..da7665e8 --- /dev/null +++ b/src/OpenFeature.Contrib.Providers.Flagd/Stub.cs @@ -0,0 +1,18 @@ +namespace OpenFeature.Contrib.Providers.Flagd +{ + /// + /// A stub class. + /// + public class Stub + { + /// + /// Get the provider name. + /// + public static string GetProviderName() + { + return Api.Instance.GetProviderMetadata().Name; + } + } +} + + diff --git a/src/OpenFeature.Providers.Flagd/version.txt b/src/OpenFeature.Contrib.Providers.Flagd/version.txt similarity index 100% rename from src/OpenFeature.Providers.Flagd/version.txt rename to src/OpenFeature.Contrib.Providers.Flagd/version.txt diff --git a/src/OpenFeature.Providers.Flagd/Class1.cs b/src/OpenFeature.Providers.Flagd/Class1.cs deleted file mode 100644 index 7761b389..00000000 --- a/src/OpenFeature.Providers.Flagd/Class1.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace OpenFeature.Providers.Flagd -{ - /// - /// Stub. - /// - public class Class1 - { - - } -} - - diff --git a/test/Directory.Build.props b/test/Directory.Build.props index ccdc84d5..316c08fa 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -1,3 +1,3 @@ - + diff --git a/test/OpenFeature.Hooks.Otel.Test/OpenFeature.Hooks.Otel.Test.csproj b/test/OpenFeature.Contrib.Hooks.Otel.Test/OpenFeature.Contrib.Hooks.Otel.Test.csproj similarity index 100% rename from test/OpenFeature.Hooks.Otel.Test/OpenFeature.Hooks.Otel.Test.csproj rename to test/OpenFeature.Contrib.Hooks.Otel.Test/OpenFeature.Contrib.Hooks.Otel.Test.csproj diff --git a/test/OpenFeature.Hooks.Otel.Test/UnitTest1.cs b/test/OpenFeature.Contrib.Hooks.Otel.Test/UnitTest1.cs similarity index 68% rename from test/OpenFeature.Hooks.Otel.Test/UnitTest1.cs rename to test/OpenFeature.Contrib.Hooks.Otel.Test/UnitTest1.cs index 08f275e1..8d3c82f4 100644 --- a/test/OpenFeature.Hooks.Otel.Test/UnitTest1.cs +++ b/test/OpenFeature.Contrib.Hooks.Otel.Test/UnitTest1.cs @@ -1,6 +1,6 @@ using Xunit; -namespace OpenFeature.Hooks.Otel.Test +namespace OpenFeature.Contrib.Hooks.Otel.Test { public class UnitTest1 { diff --git a/test/OpenFeature.Contrib.Providers.Flagd.Test/OpenFeature.Contrib.Providers.Flagd.Test.csproj b/test/OpenFeature.Contrib.Providers.Flagd.Test/OpenFeature.Contrib.Providers.Flagd.Test.csproj new file mode 100644 index 00000000..ffa7b98c --- /dev/null +++ b/test/OpenFeature.Contrib.Providers.Flagd.Test/OpenFeature.Contrib.Providers.Flagd.Test.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/OpenFeature.Contrib.Providers.Flagd.Test/UnitTest1.cs b/test/OpenFeature.Contrib.Providers.Flagd.Test/UnitTest1.cs new file mode 100644 index 00000000..06c21539 --- /dev/null +++ b/test/OpenFeature.Contrib.Providers.Flagd.Test/UnitTest1.cs @@ -0,0 +1,15 @@ + +using Xunit; +using OpenFeature.Contrib.Providers.Flagd; + +namespace OpenFeature.Contrib.Providers.Flagd.Test +{ + public class UnitTest1 + { + [Fact] + public void TestMethod1() + { + Assert.Equal("No-op Provider", Stub.GetProviderName()); + } + } +} diff --git a/test/OpenFeature.Providers.Flagd.Test/OpenFeature.Providers.Flagd.Test.csproj b/test/OpenFeature.Providers.Flagd.Test/OpenFeature.Providers.Flagd.Test.csproj deleted file mode 100644 index 80a63ecc..00000000 --- a/test/OpenFeature.Providers.Flagd.Test/OpenFeature.Providers.Flagd.Test.csproj +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/test/OpenFeature.Providers.Flagd.Test/UnitTest1.cs b/test/OpenFeature.Providers.Flagd.Test/UnitTest1.cs deleted file mode 100644 index 5bada1c3..00000000 --- a/test/OpenFeature.Providers.Flagd.Test/UnitTest1.cs +++ /dev/null @@ -1,13 +0,0 @@ - -using Xunit; - -namespace OpenFeature.Providers.Flagd.Test -{ - public class UnitTest1 - { - [Fact] - public void TestMethod1() - { - } - } -}