1
0
зеркало из https://github.com/glebtv/tui-textarea.git synced 2026-09-03 06:16:17 +03:00

chore: ratatui 0.30 maintenance + collaboration baseline (#1)

Этот коммит содержится в:
srothgan
2026-02-18 11:46:03 +01:00
коммит произвёл GitHub
родитель 4d18622eea
Коммит 4689076df5
20 изменённых файлов: 289 добавлений и 192 удалений

121
.github/workflows/ci.yml поставляемый
Просмотреть файл

@@ -1,79 +1,62 @@
name: CI
on: [push, pull_request]
env:
CARGO_TERM_COLOR: always
on:
pull_request:
push:
branches:
- main
jobs:
unit-test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
fail-fast: true
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Run tests on Linux or macOS
run: |
cargo llvm-cov --color always --lcov --output-path lcov.info --features=search,termwiz,termion,serde,arbitrary
cargo llvm-cov --color always --no-run
if: ${{ matrix.os != 'windows-latest' }}
- name: Run tests on Windows
run: |
cargo llvm-cov --color always --lcov --output-path lcov.info --features=search,termwiz,serde,arbitrary
cargo llvm-cov --color always --no-run
if: ${{ matrix.os == 'windows-latest' }}
- run: cargo test --no-default-features --features=tuirs-crossterm,search -- --skip .rs
- run: cargo test --no-default-features --features=tuirs-termion,search -- --skip .rs
if: ${{ matrix.os != 'windows-latest' }}
- run: cargo test --no-default-features --features=no-backend,search -- --skip .rs
- run: cargo test --no-default-features --features=tuirs-no-backend,search -- --skip .rs
- uses: codecov/codecov-action@v4
with:
files: lcov.info
token: ${{ secrets.CODECOV_TOKEN }}
lint:
cargo-fmt:
name: cargo fmt --check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy,rustfmt
components: rustfmt
- uses: Swatinem/rust-cache@v2
- run: cargo fmt -- --check
- run: cargo clippy --examples --tests -- -D warnings
- run: cargo clippy --examples --tests --features search,serde -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features termion -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features termion,search -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features termwiz -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features termwiz,search -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features no-backend -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features no-backend,search -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features tuirs-crossterm -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features tuirs-crossterm,search -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features tuirs-termion -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features tuirs-termion,search -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features tuirs-no-backend -- -D warnings
- run: cargo clippy --examples --tests --no-default-features --features tuirs-no-backend,search -- -D warnings
- run: cargo rustdoc --features=search,termwiz,termion,serde -p tui-textarea -- -D warnings
cargo-doc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- name: Run `cargo rustdoc` with same configuration as docs.rs
run: |
set -e
md="$(cargo metadata --format-version=1 | jq '.packages[] | select(.name=="tui-textarea") | .metadata.docs.rs')"
rustdoc_args="$(echo "$md" | jq -r '.["rustdoc-args"] | join(" ")') -D warnings"
features="$(echo "$md" | jq -r '.features | join(",")')"
- run: cargo fmt --check
set -x
for target in $(echo "$md" | jq -r '.targets | join(" ")')
do
rustup target add "$target"
cargo rustdoc -p tui-textarea "--features=$features" "--target=$target" -- $rustdoc_args
done
cargo-clippy:
name: cargo clippy -- -D warnings
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --all-targets -- -D warnings
cargo-check:
name: cargo check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check
cargo-test:
name: cargo test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test
cross-platform:
name: cross-platform default (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check
- run: cargo test

47
.github/workflows/release.yml поставляемый Обычный файл
Просмотреть файл

@@ -0,0 +1,47 @@
name: Release
on:
workflow_dispatch:
inputs:
version:
description: "Cargo.toml version to release (for example 0.7.0)"
required: true
type: string
publish:
description: "Publish to crates.io (false runs dry validation only)"
required: true
default: false
type: boolean
permissions:
contents: read
jobs:
release:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Verify requested version matches Cargo.toml
shell: bash
run: |
actual="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
if [[ -z "$actual" ]]; then
echo "Could not parse version from Cargo.toml"
exit 1
fi
if [[ "$actual" != "${{ inputs.version }}" ]]; then
echo "Requested version ${{ inputs.version }} does not match Cargo.toml version $actual"
exit 1
fi
- name: Validate package
run: cargo package
- name: Run full test suite
run: cargo test
- name: Publish to crates.io
if: ${{ inputs.publish }}
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: cargo publish --locked --token "$CARGO_REGISTRY_TOKEN"