mirror of
https://github.com/different-ai/openwork
synced 2026-04-25 17:15:34 +02:00
feat: add cargo-lock-manager skill for handling --locked flag issues
- Create skill to manage Cargo.lock updates - Add scripts for checking and updating lock files - Document common CI failure patterns and solutions
This commit is contained in:
2
.opencode/skills/cargo-lock-manager/.gitignore
vendored
Normal file
2
.opencode/skills/cargo-lock-manager/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.env
|
||||
*.log
|
||||
67
.opencode/skills/cargo-lock-manager/SKILL.md
Normal file
67
.opencode/skills/cargo-lock-manager/SKILL.md
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
name: cargo-lock-manager
|
||||
description: |
|
||||
Manages Cargo.lock file updates and resolves --locked flag issues in CI/CD.
|
||||
|
||||
Triggers when user mentions:
|
||||
- "cargo test --locked failed"
|
||||
- "cannot update the lock file"
|
||||
- "Cargo.lock is out of date"
|
||||
- "PR failed with --locked error"
|
||||
- "fix Cargo.lock"
|
||||
---
|
||||
|
||||
## Quick Usage (Already Configured)
|
||||
|
||||
### Check Cargo.lock status
|
||||
```bash
|
||||
cd packages/desktop/src-tauri
|
||||
cargo check --locked 2>&1 | head -20
|
||||
```
|
||||
|
||||
### Update Cargo.lock locally
|
||||
```bash
|
||||
cd packages/desktop/src-tauri
|
||||
cargo update --workspace
|
||||
```
|
||||
|
||||
### Test with --locked after update
|
||||
```bash
|
||||
cd packages/desktop/src-tauri
|
||||
cargo test --locked
|
||||
```
|
||||
|
||||
## Common Gotchas
|
||||
|
||||
- The `--locked` flag prevents automatic updates to Cargo.lock, which is good for reproducible builds but fails when dependencies change.
|
||||
- PRs often fail because the lock file wasn't committed after dependency updates.
|
||||
- Running `cargo update` without `--workspace` may not update all workspace members.
|
||||
|
||||
## When CI Fails with --locked
|
||||
|
||||
### Option 1: Update lock file and commit (Recommended)
|
||||
```bash
|
||||
cd packages/desktop/src-tauri
|
||||
cargo update --workspace
|
||||
git add Cargo.lock
|
||||
git commit -m "chore: update Cargo.lock"
|
||||
git push
|
||||
```
|
||||
|
||||
### Option 2: Use --offline flag (for air-gapped environments)
|
||||
```bash
|
||||
cargo test --manifest-path packages/desktop/src-tauri/Cargo.toml --offline
|
||||
```
|
||||
|
||||
## First-Time Setup (If Not Configured)
|
||||
|
||||
No setup required. This skill assumes:
|
||||
- Rust/Cargo is installed
|
||||
- You're in the openwork repository
|
||||
- The Tauri app is in `packages/desktop/src-tauri/`
|
||||
|
||||
## Prevention Tips
|
||||
|
||||
- Always run `cargo check` or `cargo build` after modifying `Cargo.toml` files
|
||||
- Include `Cargo.lock` changes in the same commit as dependency updates
|
||||
- Consider adding a pre-commit hook to verify lock file is up to date
|
||||
20
.opencode/skills/cargo-lock-manager/scripts/check-lock.sh
Executable file
20
.opencode/skills/cargo-lock-manager/scripts/check-lock.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
# Check if Cargo.lock is up to date with --locked flag
|
||||
# Exit 0 if OK, exit 1 if needs update
|
||||
|
||||
set -e
|
||||
|
||||
CARGO_TOML="${1:-packages/desktop/src-tauri/Cargo.toml}"
|
||||
|
||||
echo "🔍 Checking Cargo.lock status for: $CARGO_TOML"
|
||||
|
||||
if cargo check --manifest-path "$CARGO_TOML" --locked 2>&1; then
|
||||
echo "✅ Cargo.lock is up to date"
|
||||
exit 0
|
||||
else
|
||||
echo "❌ Cargo.lock needs update"
|
||||
echo ""
|
||||
echo "To fix, run:"
|
||||
echo " cd $(dirname "$CARGO_TOML") && cargo update --workspace"
|
||||
exit 1
|
||||
fi
|
||||
16
.opencode/skills/cargo-lock-manager/scripts/update-lock.sh
Executable file
16
.opencode/skills/cargo-lock-manager/scripts/update-lock.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
# Update Cargo.lock for the Tauri workspace
|
||||
|
||||
set -e
|
||||
|
||||
CARGO_TOML="${1:-packages/desktop/src-tauri/Cargo.toml}"
|
||||
WORKDIR=$(dirname "$CARGO_TOML")
|
||||
|
||||
echo "📦 Updating Cargo.lock in: $WORKDIR"
|
||||
|
||||
cd "$WORKDIR"
|
||||
cargo update --workspace
|
||||
|
||||
echo ""
|
||||
echo "✅ Cargo.lock updated"
|
||||
echo "📝 Don't forget to commit the changes!"
|
||||
Reference in New Issue
Block a user