Skip to content

feat: add connection info to TUI and p2p flags #155

feat: add connection info to TUI and p2p flags

feat: add connection info to TUI and p2p flags #155

Workflow file for this run

name: Rust TUI CI
on:
pull_request:
paths:
- 'rust-tui/**'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
override: true
components: rustfmt, clippy
- name: Run clippy
working-directory: rust-tui
run: cargo clippy -- -D warnings
- name: Check formatting
working-directory: rust-tui
run: |
cargo fmt --check
if [ $? -ne 0 ]; then
echo "❌ Code formatting issues found. Run 'cargo fmt' to fix."
exit 1
fi
build:
name: Build
strategy:
matrix:
os: ["macos-latest", "ubuntu-latest"]
runs-on: ${{ matrix.os }}
needs: lint
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
override: true
components: rustfmt, clippy
- name: Build project
working-directory: rust-tui
run: |
if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
export RUSTFLAGS="-C prefer-dynamic"
fi
cargo build
test:
name: Test
runs-on: ubuntu-latest
needs: lint
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
override: true
components: rustfmt, clippy
- name: Run tests
working-directory: rust-tui
run: cargo test
integration-test:
name: Integration Test
runs-on: ubuntu-latest
needs: [lint, build, test]
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
override: true
components: rustfmt, clippy
- name: Create .env file
run: |
echo "DITTO_APP_ID=${{ secrets.DITTO_APP_ID }}" > .env
echo "DITTO_PLAYGROUND_TOKEN=${{ secrets.DITTO_PLAYGROUND_TOKEN }}" >> .env
echo "DITTO_AUTH_URL=${{ secrets.DITTO_AUTH_URL }}" >> .env
echo "DITTO_WEBSOCKET_URL=${{ secrets.DITTO_WEBSOCKET_URL }}" >> .env
- name: Seed test document to Ditto Cloud
id: seed
uses: ./.github/actions/seed-ditto-document
with:
ditto-api-key: ${{ secrets.DITTO_API_KEY }}
ditto-api-url: ${{ secrets.DITTO_API_URL }}
app-name: 'rust-tui'
- name: Build and run integration test
working-directory: rust-tui
env:
DITTO_CLOUD_TASK_TITLE: ${{ steps.seed.outputs.document-title }}
GITHUB_RUN_ID: ${{ github.run_id }}
GITHUB_RUN_NUMBER: ${{ github.run_number }}
run: |
# Build integration test
cargo build --bin integration_test
# Run integration test
cargo run --bin integration_test
summary:
name: CI Report
runs-on: ubuntu-latest
needs: [lint, build, test, integration-test]
if: always()
steps:
- name: Report Results
run: |
echo "## 🦀 Rust TUI CI" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
# Overall status
if [[ "${{ needs.lint.result }}" == "success" && \
"${{ needs.build.result }}" == "success" && \
"${{ needs.test.result }}" == "success" && \
"${{ needs.integration-test.result }}" == "success" ]]; then
echo "**Overall Status:** ✅ All checks passed" >> $GITHUB_STEP_SUMMARY
else
echo "**Overall Status:** ❌ Failed" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Job | Status |" >> $GITHUB_STEP_SUMMARY
echo "|-----|--------|" >> $GITHUB_STEP_SUMMARY
echo "| Lint | ${{ needs.lint.result == 'success' && '✅ Passed' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| Build | ${{ needs.build.result == 'success' && '✅ Passed' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| Test | ${{ needs.test.result == 'success' && '✅ Passed' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| Integration Test | ${{ needs.integration-test.result == 'success' && '✅ Passed' || (needs.integration-test.result == 'skipped' && '⏭️ Skipped') || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY