feat(init): scaffold cargo workspace and CI

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
dailz
2026-04-10 21:17:22 +08:00
commit 0ee82cbccd
13 changed files with 5905 additions and 0 deletions

37
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
jobs:
ci:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Check formatting
run: cargo fmt --check --all
- name: Check
run: cargo check --workspace
- name: Test
run: cargo test --workspace
- name: Clippy
run: cargo clippy --workspace -- -D warnings

5
.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
/target/
*.swp
*.swo
.idea/
.vscode/

5784
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

24
Cargo.toml Normal file
View File

@@ -0,0 +1,24 @@
[workspace]
resolver = "2"
members = ["crates/core", "crates/gui", "crates/tui"]
default-members = ["crates/core"]
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
parking_lot = "0.12"
crossbeam-channel = "0.5"
notify = "8"
regex = "1"
memchr = "2"
toml = "0.8"
directories = "6"
insta = "1"
anyhow = "1"
egui = "0.34"
eframe = "0.34"
ratatui = "0.30"
crossterm = "0.29"
clap = { version = "4", features = ["derive"] }
log-viewer-core = { path = "crates/core" }

19
crates/core/Cargo.toml Normal file
View File

@@ -0,0 +1,19 @@
[package]
name = "log-viewer-core"
version = "0.1.0"
edition = "2024"
[dependencies]
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
notify.workspace = true
toml.workspace = true
parking_lot.workspace = true
crossbeam-channel.workspace = true
regex.workspace = true
memchr.workspace = true
directories.workspace = true
[dev-dependencies]
insta.workspace = true

1
crates/core/src/error.rs Normal file
View File

@@ -0,0 +1 @@
// Task 3 will implement error types

10
crates/core/src/lib.rs Normal file
View File

@@ -0,0 +1,10 @@
pub mod error;
pub mod types;
// pub mod io; — Task 4
// pub mod search; — Task 4
// pub mod parser; — Task 4
// pub mod watcher; — Task 4
// pub mod filter; — Task 4
// pub mod bookmark; — Task 4
// pub mod config; — Task 4
// pub mod session; — Task 4

1
crates/core/src/types.rs Normal file
View File

@@ -0,0 +1 @@
// Task 2 will implement types

9
crates/gui/Cargo.toml Normal file
View File

@@ -0,0 +1,9 @@
[package]
name = "log-viewer-gui"
version = "0.1.0"
edition = "2024"
[dependencies]
egui.workspace = true
eframe.workspace = true
log-viewer-core.workspace = true

1
crates/gui/src/main.rs Normal file
View File

@@ -0,0 +1 @@
fn main() {}

11
crates/tui/Cargo.toml Normal file
View File

@@ -0,0 +1,11 @@
[package]
name = "log-viewer-tui"
version = "0.1.0"
edition = "2024"
[dependencies]
ratatui.workspace = true
crossterm.workspace = true
clap.workspace = true
anyhow.workspace = true
log-viewer-core.workspace = true

1
crates/tui/src/main.rs Normal file
View File

@@ -0,0 +1 @@
fn main() {}

2
rust-toolchain.toml Normal file
View File

@@ -0,0 +1,2 @@
[toolchain]
channel = "1.92"