Skip to content

feat(parity): close hashline and TUI slash-command parity gaps #100

feat(parity): close hashline and TUI slash-command parity gaps

feat(parity): close hashline and TUI slash-command parity gaps #100

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: "0"
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
- name: Check formatting
run: cargo fmt --all -- --check
- name: Run clippy
run: cargo clippy --workspace -- -D warnings
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
- name: Run tests
run: cargo test --workspace
build-check:
name: Build Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
- name: Build workspace
run: cargo build --workspace
version-sync:
name: Version Sync Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Check version consistency
shell: bash
run: |
set -euo pipefail
cargo_version=$(grep -m1 '^version' Cargo.toml | sed -E 's/version *= *"([^"]+)".*/\1/')
npm_version=$(node -e "console.log(require('./packages/uira/package.json').version)")
hook_version=$(node -e "console.log(require('./packages/hook/package.json').version)")
echo "Cargo.toml version: ${cargo_version}"
echo "packages/uira version: ${npm_version}"
echo "packages/hook version: ${hook_version}"
errors=0
if [[ "${cargo_version}" != "${npm_version}" ]]; then
echo "::error::Version mismatch: Cargo.toml (${cargo_version}) != packages/uira (${npm_version})"
errors=$((errors + 1))
fi
if [[ "${cargo_version}" != "${hook_version}" ]]; then
echo "::error::Version mismatch: Cargo.toml (${cargo_version}) != packages/hook (${hook_version})"
errors=$((errors + 1))
fi
# Check optionalDependencies alias versions match expected platform-tagged format
opt_deps=$(node -e "
const pkg = require('./packages/uira/package.json');
const deps = pkg.optionalDependencies || {};
const platformEntries = Object.entries(deps)
.filter(([k]) => k.startsWith('@uiradev/uira-'));
if (platformEntries.length === 0) {
console.log('missing required @uiradev/uira-* optionalDependencies entries');
process.exit(1);
}
const mismatched = platformEntries
.map(([k, v]) => {
const target = k.slice('@uiradev/uira-'.length);
const expected = 'npm:@uiradev/uira@${cargo_version}-' + target;
return v === expected ? null : k + '@' + v + ' (expected ' + expected + ')';
})
.filter(Boolean);
if (mismatched.length > 0) {
console.log(mismatched.join(', '));
process.exit(1);
}
")
if [[ -n "${opt_deps}" ]]; then
echo "::error::optionalDependencies alias mismatch: ${opt_deps}"
errors=$((errors + 1))
fi
if [[ ${errors} -gt 0 ]]; then
echo ""
echo "Run: scripts/bump-version.sh ${cargo_version}"
exit 1
fi
echo "✅ All versions in sync: ${cargo_version}"