- fs5 entrypoint with status, push, pull, app, shell, logs commands - lib/adb.sh: ADB wrapper functions with idempotency and --force guards - lib/output.sh: human + JSON output formatting via Python - 33 bats tests (6 status, 9 transfer, 7 app, 5 shell, 6 logs) — all passing - Zero shellcheck warnings - .env-based config (device serial, log path) - Spec-Driven Development artifacts in specs/001-android-fs5-management/ Device: exone GmbH FS5 (RD51QE202392, Android 9)
3.8 KiB
3.8 KiB
Task Breakdown: Android FS5 Device Management
Feature: 001-android-fs5-management Created: 2026-03-02 Status: Pending
Phase 1: Project Setup
- T001 Create project skeleton:
.gitignore,.env.example,README.md,lib/,tests/dirs - T002 Create
.envfrom.env.examplewith device serialRD51QE202392 - T003 Verify bats-core and shellcheck available (
bats --version,shellcheck --version)
Phase 2: Foundational Library (lib/)
- T004 Create
lib/output.sh—out_human,out_json,out_error,out_successfunctions - T005 Create
lib/adb.sh—adb_check_device,adb_cmd,adb_get_prop,adb_shell,adb_log_op - T006 Create
lib/adb.sh—adb_push,adb_pullwith existence checks and--forcesupport
Phase 3: Tests (RED phase — must fail before implementation)
- T007 [US1] Write
tests/test_status.bats— tests forstatuscommand (connected, disconnected, --json) - T008 [US2] Write
tests/test_transfer.bats— tests for push/pull (basic, idempotent, --force, directory) - T009 [US3] Write
tests/test_app.bats— tests forapp list,app install,app uninstall - T010 [US4] Write
tests/test_shell.bats— tests forshellcommand passthrough - T011 [US5] Write
tests/test_logs.bats— tests forlogscommand (stream, --lines, --filter, --output) - T012 Verify ALL tests FAIL (RED phase confirmed) before writing
fs5entrypoint
Phase 4: Implementation — P1 User Stories
- T013 [US1] Create
fs5entrypoint: argument parsing,--help, config loading,statuscommand - T014 [US1] Implement
statuscommand: collect device props, battery, storage, format human + JSON output - T015 [US2] Implement
pushcommand: file existence check, transfer, idempotency guard, logging - T016 [US2] Implement
pullcommand: device file check, transfer, local overwrite guard, logging - T017 Verify T007 + T008 tests PASS (GREEN phase for P1)
Phase 5: Implementation — P2 User Stories
- T018 [US3] Implement
app listcommand: parsepm list packages, filter system/user, version lookup - T019 [US3] Implement
app installcommand: APK validation,adb install, package name confirmation - T020 [US3] Implement
app uninstallcommand:--forceguard,pm uninstall, logging - T021 [US4] Implement
shellcommand: passthrough toadb shell, stdin pipe support - T022 Verify T009 + T010 tests PASS (GREEN phase for P2)
Phase 6: Implementation — P3 User Stories
- T023 [US5] Implement
logscommand:adb logcatstream,--lines(dump mode),--filter,--output - T024 Verify T011 tests PASS (GREEN phase for P3)
Phase 7: Polish & Quality Gates
- T025 [P] Run
shellcheck fs5 lib/adb.sh lib/output.sh— fix all warnings to zero - T026 [P] Run full test suite
bats tests/— all tests must pass - T027 [P] Write
README.mdwith installation, usage examples, and quickstart scenarios - T028 Validate all 8 quickstart scenarios from
plan.mdmanually against live device - T029 Initial git commit:
feat: add android-fs5 CLI toolset
Dependency Graph
T001 → T002 → T003
T003 → T004 → T005 → T006
T006 → T007 → T008 → T009 → T010 → T011 → T012
T012 → T013 → T014 → T015 → T016 → T017
T017 → T018 → T019 → T020 → T021 → T022
T022 → T023 → T024
T024 → T025 [P] T026 [P] T027 [P]
T025 + T026 + T027 → T028 → T029
Progress Summary
| Phase | Tasks | Status |
|---|---|---|
| 1. Setup | T001-T003 | Pending |
| 2. Foundation | T004-T006 | Pending |
| 3. Tests (RED) | T007-T012 | Pending |
| 4. P1 Impl | T013-T017 | Pending |
| 5. P2 Impl | T018-T022 | Pending |
| 6. P3 Impl | T023-T024 | Pending |
| 7. Polish | T025-T029 | Pending |