Acquire apply.lock through one lock_cli helper that takes &GlobalArgs; the sequence is open-coded 9 times and renders lock_held 3 ways
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 58/100
- Issue-Typ
- Refactoring
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- rust
- Bereich
- cli, developer-experience
Rechercherichtung
Start with crates/socket-patch-cli/src/commands/lock_cli.rs, then inspect the listed call sites in vendor.rs, scan/withdrawn.rs, scan/vendor_flow.rs, scan/hosted.rs, scan/gc.rs, agent_download.rs, and get.rs. Trace the existing lock acquisition and failure rendering, then run the existing lock tests and CLI lock end-to-end tests. Done means the listed sites use the shared helper, JSON mode keeps stderr empty, and lock error codes and exit codes remain unchanged.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
[agent] Filed by the scheduled architecture audit (audit-cli-tests). Register: register comment.
Kind: refactor. Register ID: T09.
Problem
lock_cli has a helper for taking .socket/apply.lock, acquire_or_emit, and its module doc says it exists so "call sites stay one line each". Only 5 sites use it: apply, repair, remove, rollback and vendor. Even those 5 pass the same fields by hand, args.common.json, args.common.dry_run and Duration::from_secs(lock_timeout.unwrap_or(0)).
9 more sites open-code the whole sequence instead: acquire_with_status, then lock_failure, then their own rendering. They are vendor ×2, scan/withdrawn, scan/vendor_flow, scan/hosted, scan/gc ×2, agent_download and get. In total Duration::from_secs(*.lock_timeout.unwrap_or(0)) is written 14 times in the CLI.
The copies have drifted:
lock_heldis rendered 3 ways for humans:- lock_cli
format_lock_errorprintsError: Another…plus a hint and(Lock file: <path>). - vendor eject
emit_eject_refusalprintsError (lock_held): another…, with no hint and no path. - scan/vendor_flow.rs L995-L1006 prints
Error (lock_held): ….plusHELD_RETRY_HINT, with no path.
- lock_cli
- scan/hosted writes the human error under
--jsontoo.acquire_hosted_lockalwayseprint!s theError:block, even when it also builds the JSON error envelope.agent_download::report_lock_failureandacquire_or_emitsuppress it under--json. I found this by reading the code; I did not run it. report_lock_failureis in the wrong module. It lives inagent_download.rs, notlock_cli.rs.
Proposed change
- Add
GlobalArgs::lock_timeout() -> Duration. - Replace
acquire_or_emit(dir, cmd, json, dry_run, timeout)withlock_cli::acquire(common: &GlobalArgs, cmd: Command) -> Result<LockGuard, LockFailure>. It renders through one function: human text to stderr unless--json, and the envelope error otherwise. - Move
report_lock_failureintolock_cli. - Route the 9 open-coded sites through
lock_cli::acquire. The vendor-eject and vendor_flow renderers go away. - Inline lock_cli's 4 single-caller helpers:
emit,waiting_message,held_hintandheld_message.
Size
About 12 files under crates/socket-patch-cli/src/commands/, roughly −120 lines.
Acceptance criteria
- Every lock-held and lock-io exit gives the same
errorCode(lock_held/lock_io) and the same exit code as today. The existing lock tests inlock_cli.rsand the CLI lock e2e tests still pass. - Human stderr is identical across commands, and nothing goes to stderr under
--json. Add one test that runsscan --jsonagainst a held lock and asserts that stderr is empty. - Drop the subset tests
acquire_or_emit_succeeds_on_fresh_dirandheld_message_reports_whole_seconds, and fix the doc oferror_envelope_propagates_dry_run_and_command, which claims more than it asserts.
- Vorherrschende Sprache
- Rust
- Sterne
- 9
- Forks
- 2
- Ø Merge
- 20 Std. 47 Min.
- Gemergte PRs (30 T.)
- 681
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus SocketDev/socket-patch
-
agent:triaged arch-audit priority:p3 refactor
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
SocketDev/socket-patch#1860 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agent:triaged arch-audit priority:p3 refactor
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
SocketDev/socket-patch#1838 ·
Maintainer antworten meist innerhalb von 1 Tag
-
arch-audit refactor
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 54/100
SocketDev/socket-patch#1993 ·
Maintainer antworten meist innerhalb von 1 Tag
-
arch-audit refactor
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 66/100
SocketDev/socket-patch#1992 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agent:triaged arch-audit priority:p3 refactor
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
SocketDev/socket-patch#1987 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in SocketDev/socket-patch
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
riverqueue/river#1576 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
stadelmanma/fitparse-rs#64 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
zed-extensions/java#325 ·
-
Suggestion: full-band strip — mark the tuned frequency in magenta, with triangles on the edgesOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
dividebysandwich/sdroxide#769 ·
Maintainer antworten meist innerhalb von 5 Tagen