diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8f8f87b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,25 @@ +root = true + +# Default settings +[*] +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +# Xml project files +[*.proj] +indent_size = 2 + +# YAML files +[*.{yml,yaml}] +indent_size = 2 + +# JSON files +[*.{json,jsonc}] +indent_size = 2 + +# Markdown files +[*.md] +# Double trailing spaces can be used for BR tags, and other instances are enforced by Markdownlint +trim_trailing_whitespace = false diff --git a/.github/workflows/markdownlint-problem-matcher.json b/.github/workflows/markdownlint-problem-matcher.json new file mode 100644 index 0000000..c37cf8b --- /dev/null +++ b/.github/workflows/markdownlint-problem-matcher.json @@ -0,0 +1,17 @@ +{ + "problemMatcher": [ + { + "owner": "markdownlint", + "pattern": [ + { + "regexp": "^([^:]*):(\\d+):?(\\d+)?\\s([\\w-\\/]*)\\s(.*)$", + "file": 1, + "line": 2, + "column": 3, + "code": 4, + "message": 5 + } + ] + } + ] +} diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml new file mode 100644 index 0000000..74eae3c --- /dev/null +++ b/.github/workflows/markdownlint.yml @@ -0,0 +1,37 @@ +name: Markdownlint + +on: + push: + branches: + - main + paths: + - "**/*.md" + - ".markdownlint.json" + - ".github/workflows/markdownlint.yml" + - ".github/workflows/markdownlint-problem-matcher.json" + pull_request: + paths: + - "**/*.md" + - ".markdownlint.json" + - ".github/workflows/markdownlint.yml" + - ".github/workflows/markdownlint-problem-matcher.json" + +jobs: + lint: + runs-on: ubuntu-latest + permissions: + statuses: write + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Run Markdownlint + run: | + echo "::add-matcher::.github/workflows/markdownlint-problem-matcher.json" + npm i -g markdownlint-cli2 + markdownlint-cli2 "**/*.md" diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..b077f0e --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,4 @@ +{ + "default": true, + "MD013": false +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..8129325 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "DavidAnson.vscode-markdownlint" + ] +} diff --git a/README.md b/README.md index 4a4ac80..df7d23b 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,55 @@ # Flurl.Signed -Sometimes life isn't fair and you are stuck supporting the world as it existed 10+ years ago. So if you'd like to use the amazing [Flurl](http://tmenier.github.io/Flurl/), but for whatever reason are still using strong naming, I've signed and repackaged them for you. + +Sometimes life isn't fair and you are stuck supporting the world as it existed 10+ years ago. So if you'd like to use the amazing [Flurl](https://flurl.dev), but for whatever reason are still using strong naming, I've signed and repackaged them for you. Enjoy! -**NuGet Packages** +**NuGet Packages:** -[Flurl.Signed](https://www.nuget.org/packages/Flurl.Signed)
-[Flulr.Http.Signed](https://www.nuget.org/packages/Flurl.Http.Signed) +- [Flurl.Signed](https://www.nuget.org/packages/Flurl.Signed) +- [Flulr.Http.Signed](https://www.nuget.org/packages/Flurl.Http.Signed) ## Caveats -* These are not built from source, they simply sign the existing assemblies on NuGet and publish them back to NuGet. + +- These are not built from source, they simply sign the existing assemblies on NuGet and publish them back to NuGet. ## Acknowledgements -* Todd Menier for developing Flurl. (https://github.com/tmenier) -* Carolyn Van Slyck for developing the original version of Flurl.Signed. (https://github.com/carolynvs) + +- Todd Menier for developing Flurl. () +- Carolyn Van Slyck for developing the original version of Flurl.Signed. () ## Roadmap + I don't think I plan to do too much to this given that it already works, but some things that would be fun and make it more robust that I may be able to find time for: -* Separate the nuget package generation from the uploading to the nuget repository. -* Add verification of the nuget packages with sn.exe -* Add integration tests to verify consumption of the nuget packages -* Push based on results of verification and integration tests + +- Separate the nuget package generation from the uploading to the nuget repository. +- Add verification of the nuget packages with sn.exe +- Add integration tests to verify consumption of the nuget packages +- Push based on results of verification and integration tests ## How it works + For anyone who wants to replicate this, here's how: ### Generating a signing key + 1. Open Visual Studio Powershell as Administrator 1. Run `sn -k Flurl.Signed.snk` 1. Encode as base64 by running the command `certutil -encodehex -f .\Flurl.Signed.snk Flurl.Signed.encoded.txt 0x40000001` 1. Add as Secret "NUGET_SIGNING_KEY" to github repo ### Build Orchestration -* Build Definition in VSTS -* Get Sources from GitHub -* Phase 1 - Defaults - * Download Secure file - Downloads the signing key which was uploaded to VSTS - * MSBuild - * Project: build/build.proj - * MSBuild Version: Latest - * MSBuild Architecture: x86 - * MSBuild Arguments: `/p:NugetApiKey=$(NugetApiKey)` -* Variables: Need to define NugetApiKey as your Nuget Api Key. -* Triggers: - * When: Scheduled every day at 2am utc - * Uncheck Only schedule builds if source or definition has changed + +- Build Definition in VSTS +- Get Sources from GitHub +- Phase 1 - Defaults + - Download Secure file - Downloads the signing key which was uploaded to VSTS + - MSBuild + - Project: build/build.proj + - MSBuild Version: Latest + - MSBuild Architecture: x86 + - MSBuild Arguments: `/p:NugetApiKey=$(NugetApiKey)` +- Variables: Need to define NugetApiKey as your Nuget Api Key. +- Triggers: + - When: Scheduled every day at 2am utc + - Uncheck Only schedule builds if source or definition has changed