fix(init): bootstrap host with render mode, theme script, full theme … #42
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main, develop ] | |
| jobs: | |
| build-and-test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Cache NuGet packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.nuget/packages | |
| key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/packages.lock.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-nuget- | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: | | |
| 9.0.x | |
| - name: Restore dependencies | |
| run: dotnet restore ShellUI.sln | |
| - name: Build | |
| run: dotnet build ShellUI.sln --no-restore --configuration Release | |
| - name: Run tests | |
| run: dotnet test ShellUI.sln --no-restore --no-build --configuration Release --verbosity normal | |
| # End-to-end build of a scaffolded project — catches anything the in-process | |
| # TemplateCompileTests miss (missing usings, dependency resolution). | |
| - name: Smoke-test CLI scaffolding | |
| shell: bash | |
| run: | | |
| set -euxo pipefail | |
| TMPDIR=$(mktemp -d) | |
| dotnet pack src/ShellUI.CLI/ShellUI.CLI.csproj -c Release -o "$TMPDIR/nupkgs" --no-build | |
| dotnet tool install --tool-path "$TMPDIR/tools" --add-source "$TMPDIR/nupkgs" ShellUI.CLI --prerelease | |
| export PATH="$TMPDIR/tools:$PATH" | |
| mkdir -p "$TMPDIR/app" && cd "$TMPDIR/app" | |
| dotnet new blazor -o SmokeApp --no-restore | |
| cd SmokeApp | |
| shellui init --tailwind standalone --yes | |
| # Assert init produced a working host: App.razor patched with render mode, | |
| # theme bootstrap, and shellui.js script tag. | |
| grep -q 'HeadOutlet @rendermode="InteractiveServer"' Components/App.razor || (echo "init did not patch HeadOutlet @rendermode"; exit 1) | |
| grep -q 'Routes @rendermode="InteractiveServer"' Components/App.razor || (echo "init did not patch Routes @rendermode"; exit 1) | |
| grep -q 'ShellUI theme bootstrap' Components/App.razor || (echo "init did not inject theme bootstrap"; exit 1) | |
| grep -q '<script src="shellui.js"></script>' Components/App.razor || (echo "init did not inject shellui.js script tag"; exit 1) | |
| grep -q 'shellui-sidebar.js' Components/App.razor && (echo "init incorrectly injected shellui-sidebar.js script tag (sidebar JS is dynamically imported)"; exit 1) || true | |
| # Assert input.css has the full theme, not just @import "tailwindcss"; | |
| grep -q '@theme inline' wwwroot/input.css || (echo "init did not write full theme to input.css"; exit 1) | |
| grep -q ':root' wwwroot/input.css || (echo "init did not write :root variables to input.css"; exit 1) | |
| grep -q '\.dark' wwwroot/input.css || (echo "init did not write .dark variables to input.css"; exit 1) | |
| shellui add chart pie-chart dashboard-02 --force || true | |
| # Chart components reference ApexCharts.* types but the CLI does not yet | |
| # auto-add the runtime NuGet dep. Drop this line once `shellui add chart` | |
| # declares Blazor-ApexCharts as a nuget dependency. | |
| dotnet add package Blazor-ApexCharts --version 6.0.2 | |
| dotnet build -c Debug | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: nuget-packages | |
| path: | | |
| **/*.nupkg | |
| **/*.snupkg |