diff --git a/.gitattributes b/.gitattributes index 4f89148..3095556 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,7 @@ # normalize by default * text=auto encoding=UTF-8 *.sh text eol=lf +*.sbn eol=lf # These are windows specific files which we may as well ensure are # always crlf on checkout diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..a105ac5 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: devlooped diff --git a/.github/actions/dotnet/action.yml b/.github/actions/dotnet/action.yml new file mode 100644 index 0000000..c876ae3 --- /dev/null +++ b/.github/actions/dotnet/action.yml @@ -0,0 +1,35 @@ +name: βš™ dotnet +description: Configures dotnet if the repo/org defines the DOTNET custom property + +runs: + using: composite + steps: + - name: πŸ”Ž dotnet + id: dotnet + shell: bash + run: | + VERSIONS=$(gh api repos/${{ github.repository }}/properties/values | jq -r '.[] | select(.property_name == "DOTNET") | .value') + # Remove extra whitespace from VERSIONS + VERSIONS=$(echo "$VERSIONS" | tr -s ' ' | tr -d ' ') + # Convert comma-separated to newline-separated + NEWLINE_VERSIONS=$(echo "$VERSIONS" | tr ',' '\n') + # Validate versions + while IFS= read -r version; do + if ! [[ $version =~ ^[0-9]+(\.[0-9]+(\.[0-9]+)?)?(\.x)?$ ]]; then + echo "Error: Invalid version format: $version" + exit 1 + fi + done <<< "$NEWLINE_VERSIONS" + # Write multiline output to $GITHUB_OUTPUT + { + echo 'versions<> $GITHUB_OUTPUT + + - name: βš™ dotnet + if: steps.dotnet.outputs.versions != '' + uses: actions/setup-dotnet@v4 + with: + dotnet-version: | + ${{ steps.dotnet.outputs.versions }} diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c95eb73..11c5d7d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -24,6 +24,11 @@ updates: Extensions: patterns: - "Microsoft.Extensions*" + exclude-patterns: + - "Microsoft.Extensions.AI*" + ExtensionsAI: + patterns: + - "Microsoft.Extensions.AI*" Web: patterns: - "Microsoft.AspNetCore*" @@ -38,3 +43,6 @@ updates: ProtoBuf: patterns: - "protobuf-*" + Spectre: + patterns: + - "Spectre.Console*" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6653044..d6bd793 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,7 @@ env: GH_TOKEN: ${{ secrets.GH_TOKEN }} MSBUILDTERMINALLOGGER: auto Configuration: ${{ github.event.inputs.configuration || 'Release' }} + SLEET_FEED_URL: ${{ vars.SLEET_FEED_URL }} defaults: run: @@ -65,12 +66,7 @@ jobs: fetch-depth: 0 - name: βš™ dotnet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: | - 6.x - 8.x - 9.x + uses: devlooped/actions-dotnet-env@v1 - name: πŸ™ build run: dotnet build -m:1 -bl:build.binlog @@ -104,6 +100,9 @@ jobs: submodules: recursive fetch-depth: 0 + - name: βš™ dotnet + uses: devlooped/actions-dotnet-env@v1 + - name: βœ“ ensure format run: | dotnet format whitespace --verify-no-changes -v:diag --exclude ~/.nuget diff --git a/.github/workflows/dotnet-env.yml b/.github/workflows/dotnet-env.yml new file mode 100644 index 0000000..a76d0fd --- /dev/null +++ b/.github/workflows/dotnet-env.yml @@ -0,0 +1,44 @@ +name: dotnet-env +on: + workflow_dispatch: + push: + branches: + - main + paths: + - '**/*.*proj' + +jobs: + which-dotnet: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + + steps: + - name: πŸ€– defaults + uses: devlooped/actions-bot@v1 + with: + name: ${{ secrets.BOT_NAME }} + email: ${{ secrets.BOT_EMAIL }} + gh_token: ${{ secrets.GH_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN }} + + - name: 🀘 checkout + uses: actions/checkout@v4 + with: + token: ${{ env.GH_TOKEN }} + + - name: 🀌 dotnet + uses: devlooped/actions-which-dotnet@v1 + + - name: ✍ pull request + uses: peter-evans/create-pull-request@v7 + with: + base: main + branch: which-dotnet + delete-branch: true + labels: dependencies + title: "βš™ Update dotnet versions" + body: "Update dotnet versions" + commit-message: "Update dotnet versions" + token: ${{ env.GH_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/dotnet-file-core.yml b/.github/workflows/dotnet-file-core.yml index 1230687..76aa6df 100644 --- a/.github/workflows/dotnet-file-core.yml +++ b/.github/workflows/dotnet-file-core.yml @@ -2,6 +2,13 @@ name: dotnet-file-core on: workflow_call: + secrets: + BOT_NAME: + required: false + BOT_EMAIL: + required: false + GH_TOKEN: + required: false env: DOTNET_NOLOGO: true diff --git a/.github/workflows/dotnet-file.yml b/.github/workflows/dotnet-file.yml index 083f24d..402f6ba 100644 --- a/.github/workflows/dotnet-file.yml +++ b/.github/workflows/dotnet-file.yml @@ -12,5 +12,10 @@ env: jobs: run: + permissions: + contents: write uses: devlooped/oss/.github/workflows/dotnet-file-core.yml@main - secrets: inherit \ No newline at end of file + secrets: + BOT_NAME: ${{ secrets.BOT_NAME }} + BOT_EMAIL: ${{ secrets.BOT_EMAIL }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8b065d7..03e57d9 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,8 @@ env: VersionLabel: ${{ github.ref }} GH_TOKEN: ${{ secrets.GH_TOKEN }} MSBUILDTERMINALLOGGER: auto - + SLEET_FEED_URL: https://api.nuget.org/v3/index.json + jobs: publish: runs-on: ${{ vars.PUBLISH_AGENT || 'ubuntu-latest' }} @@ -27,12 +28,7 @@ jobs: fetch-depth: 0 - name: βš™ dotnet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: | - 6.x - 8.x - 9.x + uses: devlooped/actions-dotnet-env@v1 - name: πŸ™ build run: dotnet build -m:1 -bl:build.binlog diff --git a/.netconfig b/.netconfig index 83d5031..77f732b 100644 --- a/.netconfig +++ b/.netconfig @@ -23,9 +23,9 @@ sha = e81ab754b366d52d92bd69b24bef1d5b1c610634 [file ".gitattributes"] url = https://github.com/devlooped/oss/blob/main/.gitattributes - etag = 338ba6d92c8d1774363396739c2be4257bfc58026f4b0fe92cb0ae4460e1eff7 + etag = 09cad18280ed04b67f7f87591e5481510df04d44c3403231b8af885664d8fd58 weak - sha = 5f92a68e302bae675b394ef343114139c075993e + sha = 4a9aa321c4982b83c185cf8dffed181ff84667d5 [file ".github/FUNDING.yml"] url = https://github.com/devlooped/.github/blob/main/.github/FUNDING.yml etag = a944c728facd033bbdfb4ff8d0ef10d0b3a457c277dc499458df0ffc7e6409da @@ -33,14 +33,14 @@ sha = 39f4c591716ff50dd035d2fade35e5822489ab7f [file ".github/dependabot.yml"] url = https://github.com/devlooped/oss/blob/main/.github/dependabot.yml - etag = c147ea2f3431ca0338c315c4a45b56ee233c4d30f8d6ab698d0e1980a257fd6a + etag = 3bf8d9214a15c049ca5cfe80d212a8cbe4753b8a638a9804ef73d34c7def9618 weak - sha = 49661dbf0720cde93eb5569be7523b5912351560 + sha = e733294084fb3e75d517a2e961e87df8faae7dc6 [file ".github/workflows/build.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/build.yml - etag = 0a4b3f0a875cd8c9434742b4046558aecf610d3fa3d490cfd2099266e95e9195 + etag = bf99c19427f4372ecfe38ec56aa8c411058684fb717da5661f17ac00388b3602 weak - sha = 06e898ccba692566ebf845fa7c8833ac6c318c0a + sha = 56c2b8532c2f86235a0f5bd00ba6eba126f199cf [file ".github/workflows/changelog.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/changelog.yml etag = ad1efa56d6024ee1add2bcda81a7e4e38d0e9069473c6ff70374d5ce06af1f5a @@ -48,9 +48,9 @@ sha = 5fb172362c767bef7c36478f1a6bdc264723f8f9 [file ".github/workflows/publish.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/publish.yml - etag = 2f64f75ad01f735fd05290370fb8a826111ac8dd7e74ce04226bb627a54a62ba + etag = 2ef43521627aa3a91dd55bdc2856ec0c6a93b42485d4fe9d6b181f9ee42c8e18 weak - sha = 06e898ccba692566ebf845fa7c8833ac6c318c0a + sha = 56c2b8532c2f86235a0f5bd00ba6eba126f199cf [file ".github/workflows/release-artifacts.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/release-artifacts.yml skip @@ -66,9 +66,9 @@ sha = 0f7f7f7e8a29de9b535676f75fe7c67e629a5e8c [file "_config.yml"] url = https://github.com/devlooped/oss/blob/main/_config.yml - etag = 9139148f845adf503fd3c3c140eb64421fc476a1f9c027fc50825c0efb05f557 + etag = d608aa0ddaedc2d8a87260f50756e8d8314964ad4671b76bd085bcb458757010 weak - sha = fa83a5161ba52bc5d510ce0ba75ee0b1f8d4bc63 + sha = 68b409c486842062e0de0e5b11e6fdb7cd12d6e2 [file "assets/css/style.scss"] url = https://github.com/devlooped/oss/blob/main/assets/css/style.scss etag = f710d8919abfd5a8d00050b74ba7d0bb05c6d02e40842a3012eb96555c208504 @@ -81,9 +81,9 @@ sha = 0683ee777d7d878d4bf013d7deea352685135a05 [file "src/Directory.Build.props"] url = https://github.com/devlooped/oss/blob/main/src/Directory.Build.props - etag = c8b56f3860cc7ccb8773b7bd6189f5c7a6e3a2c27e9104c1ee201fbdc5af9873 + etag = 1368697c1521e465a1dea88b93787b1c7def441c37d62afc903fb8d07179e4f6 weak - sha = b76de49afb376aa48eb172963ed70663b59b31d3 + sha = 81d972fd0760c244d134dae7f4b17d6c43cb004a [file "src/Directory.Build.targets"] url = https://github.com/devlooped/oss/blob/main/src/Directory.Build.targets etag = 19087699f05396205e6b050d999a43b175bd242f6e8fac86f6df936310178b03 @@ -106,8 +106,8 @@ sha = 90fa16ed0e7300a78a38ee1d23c34a7e875aab27 [file ".github/workflows/dotnet-file.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-file.yml - sha = 59aaf432369b5ea597831d4feec5a6ac4024c2e3 - etag = 1374e3f8c9b7af69c443605c03f7262300dcb7d783738d9eb9fe84268ed2d10c + sha = 8fa147d4799d73819040736c399d0b1db2c2d86c + etag = 1ca805a23656e99c03f9d478dba8ccef6e571f5de2ac0e9bb7e3c5216c99a694 weak [file ".github/workflows/includes.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/includes.yml @@ -136,6 +136,21 @@ weak [file ".github/workflows/dotnet-file-core.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-file-core.yml - sha = 875284ba5d565f529aba2f5d24ab8ed27c1d1c79 - etag = 8de1d974bf73b1945b5c8be684c3a0b7364114a0d795c9d68837aed9b3aff331 + sha = af171b7a87382ee665ba6fbaeb5f38a3551e1c23 + etag = 5ce370f52933ab2a4cd50f2b410e842fc5eab23088db2bf98b6c4d4ccdc9022b + weak +[file ".github/actions/dotnet/action.yml"] + url = https://github.com/devlooped/oss/blob/main/.github/actions/dotnet/action.yml + sha = f2b690ce307acb76c5b8d7faec1a5b971a93653e + etag = 27ea11baa2397b3ec9e643a935832da97719c4e44215cfd135c49cad4c29373f + weak +[file ".github/workflows/dotnet-env.yml"] + url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-env.yml + sha = 77e83f238196d2723640abef0c7b6f43994f9747 + etag = fcb9759a96966df40dcd24906fd328ddec05953b7e747a6bb8d0d1e4c3865274 + weak +[file "src/nuget.config"] + url = https://github.com/devlooped/oss/blob/main/src/nuget.config + sha = 032439dbf180fca0539a5bd3a019f18ab3484b76 + etag = da7c0104131bd474b52fc9bc9f9bda6470e24ae38d4fb9f5c4f719bc01370ab5 weak diff --git a/_config.yml b/_config.yml index a61f7e0..04e6093 100644 --- a/_config.yml +++ b/_config.yml @@ -1,3 +1,3 @@ theme: jekyll-theme-slate -exclude: [ 'src/', '*.sln', 'Gemfile*', '*.rsp' ] \ No newline at end of file +exclude: [ 'src/', '*.sln', '*.slnx', 'Gemfile*', '*.rsp' ] diff --git a/readme.md b/readme.md index c8ef1e9..1c37d2b 100644 --- a/readme.md +++ b/readme.md @@ -162,17 +162,13 @@ degrading functionality. [![Kori Francis](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/kfrancis.png "Kori Francis")](https://github.com/kfrancis) [![Toni Wenzel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/twenzel.png "Toni Wenzel")](https://github.com/twenzel) [![Uno Platform](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/unoplatform.png "Uno Platform")](https://github.com/unoplatform) -[![Dan Siegel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/dansiegel.png "Dan Siegel")](https://github.com/dansiegel) [![Reuben Swartz](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/rbnswartz.png "Reuben Swartz")](https://github.com/rbnswartz) [![Jacob Foshee](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jfoshee.png "Jacob Foshee")](https://github.com/jfoshee) [![](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Mrxx99.png "")](https://github.com/Mrxx99) [![Eric Johnson](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/eajhnsn1.png "Eric Johnson")](https://github.com/eajhnsn1) -[![Ix Technologies B.V.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/IxTechnologies.png "Ix Technologies B.V.")](https://github.com/IxTechnologies) [![David JENNI](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/davidjenni.png "David JENNI")](https://github.com/davidjenni) [![Jonathan ](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Jonathan-Hickey.png "Jonathan ")](https://github.com/Jonathan-Hickey) [![Charley Wu](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/akunzai.png "Charley Wu")](https://github.com/akunzai) -[![Jakob TikjΓΈb Andersen](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jakobt.png "Jakob TikjΓΈb Andersen")](https://github.com/jakobt) -[![Tino Hager](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/tinohager.png "Tino Hager")](https://github.com/tinohager) [![Ken Bonny](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/KenBonny.png "Ken Bonny")](https://github.com/KenBonny) [![Simon Cropp](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/SimonCropp.png "Simon Cropp")](https://github.com/SimonCropp) [![agileworks-eu](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/agileworks-eu.png "agileworks-eu")](https://github.com/agileworks-eu) @@ -184,6 +180,10 @@ degrading functionality. [![Vincent Limo](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/v-limo.png "Vincent Limo")](https://github.com/v-limo) [![Jordan S. Jones](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jordansjones.png "Jordan S. Jones")](https://github.com/jordansjones) [![domischell](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/DominicSchell.png "domischell")](https://github.com/DominicSchell) +[![Justin Wendlandt](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jwendl.png "Justin Wendlandt")](https://github.com/jwendl) +[![Adrian Alonso](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/adalon.png "Adrian Alonso")](https://github.com/adalon) +[![Michael Hagedorn](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Eule02.png "Michael Hagedorn")](https://github.com/Eule02) +[![Matt Frear](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/mattfrear.png "Matt Frear")](https://github.com/mattfrear) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 381c383..b24450d 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -126,6 +126,8 @@ <_VersionLabel>$(_VersionLabel.Replace('/merge', '')) <_VersionLabel>$(_VersionLabel.Replace('/', '-')) + + <_VersionLabel>$(_VersionLabel.Replace('_', '-')) $(_VersionLabel) @@ -153,6 +155,18 @@ + + + 1.0.0 + $(VersionPrefix)-$(VersionSuffix) + $(VersionPrefix) + + diff --git a/src/nuget.config b/src/nuget.config new file mode 100644 index 0000000..1c18c96 --- /dev/null +++ b/src/nuget.config @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + +