chore: workspace skeleton and dev environment (#2) - #6
Open
q-soriarty wants to merge 10 commits into
Open
q-soriarty wants to merge 10 commits into
q-soriarty wants to merge 10 commits into
Conversation
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
Signed-off-by: Biró, Csaba Attila <csaba.biro@qubernetic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the Cargo workspace with the four empty-but-compiling crates and the two-layer development environment from ADR-0002: everything builds, tests and lints inside the devcontainer, the host only runs the container-built binary. Plan:
docs/plans/2026-09-09-workspace-skeleton.md.Closes #2
Changes
resolver = "3", edition 2024,rust-toolchain.tomlpinned to 1.98.0) withkeyvo-hid,keyvo-core,keyvo-daemon,keyvo-cli; clippyall+pedanticas workspace lints,unwrap_used/expect_useddenied in the lib crateskeyvo --versionviaclapderive, driven by a black-boxassert_cmdtest (red first, then green);keyvo_core::VERSIONunit test;compilesplaceholders inkeyvo-hidandkeyvo-daemonDockerfile(rust:1.98.0-slim-trixie, Node 24.21.0,just,cargo-deny,cargo-llvm-cov,cargo-nextest,cargo-instavia pinnedcargo-binstall), non-rootdevuser with the host UID/GIDdocker-compose.yml(servicerust, bind-mounted workspace, named cargo registry and git volumes),.devcontainer/devcontainer.jsonjustfile:setup dev down clean rebuild shell build test lint fmt fmt-check deny cov ciin the container;runandtest-hwon the host;diagrams/docsplaceholders for docs: architecture diagrams with archify #4/ci: build, test, lint, coverage, CodeQL #3;COMPOSE_CMDoverride for podmandeny.toml,.editorconfig,.gitattributes,.github/dependabot.yml(cargo, github-actions, docker; weekly; targetdevelop)Automated checks
just fmtproduces no diffjust lint(clippy,-D warnings) is cleanjust testpasses (4 tests across 4 crates, cargo-nextest)just denypassesjust covlands in CI with ci: build, test, lint, coverage, CodeQL #3)User test
Host only, no Rust installed. Steps from the plan §6:
git cloneinto a scratch directory,just setup: the image builds and the container starts; no cargo or rustc is used on the hostjust test: nextest lists all four crates and 4 tests passjust build && just run -- --versionprintskeyvo 0.0.0ls -l target bin(orstat -c '%U:%G' target bin/keyvo): owned by your user, not rootjust clean && just setup && just test: idempotent, tests pass againjust test-hw: lists the hidraw nodes and/dev/uinput, showsinputin your groupsrustserviceNotes for reviewer
cargo treeshows onlyclap(4.6.6) and its transitive dependencies plusassert_cmdas a dev-dependency.just run --versionandjust run -- --versionboth work; the recipe strips a leading--.missing_docsis a workspace lint atwarn; with-D warningsinjust lintit is effectively enforced, hence the crate-level doc comments.deny.tomlallows wildcard path dependencies inside the workspace (allow-wildcard-paths), otherwisekeyvo-core.workspace = trueis flagged.main; unchanged from PR docs: project foundation (#1) #5.