Files
android-fs5/specs/001-android-fs5-management/tasks.md
T
Jane Alesi e6e5f34455 feat: add android-fs5 CLI toolset
- 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)
2026-03-02 15:55:09 +01:00

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 .env from .env.example with device serial RD51QE202392
  • T003 Verify bats-core and shellcheck available (bats --version, shellcheck --version)

Phase 2: Foundational Library (lib/)

  • T004 Create lib/output.shout_human, out_json, out_error, out_success functions
  • T005 Create lib/adb.shadb_check_device, adb_cmd, adb_get_prop, adb_shell, adb_log_op
  • T006 Create lib/adb.shadb_push, adb_pull with existence checks and --force support

Phase 3: Tests (RED phase — must fail before implementation)

  • T007 [US1] Write tests/test_status.bats — tests for status command (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 for app list, app install, app uninstall
  • T010 [US4] Write tests/test_shell.bats — tests for shell command passthrough
  • T011 [US5] Write tests/test_logs.bats — tests for logs command (stream, --lines, --filter, --output)
  • T012 Verify ALL tests FAIL (RED phase confirmed) before writing fs5 entrypoint

Phase 4: Implementation — P1 User Stories

  • T013 [US1] Create fs5 entrypoint: argument parsing, --help, config loading, status command
  • T014 [US1] Implement status command: collect device props, battery, storage, format human + JSON output
  • T015 [US2] Implement push command: file existence check, transfer, idempotency guard, logging
  • T016 [US2] Implement pull command: 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 list command: parse pm list packages, filter system/user, version lookup
  • T019 [US3] Implement app install command: APK validation, adb install, package name confirmation
  • T020 [US3] Implement app uninstall command: --force guard, pm uninstall, logging
  • T021 [US4] Implement shell command: passthrough to adb shell, stdin pipe support
  • T022 Verify T009 + T010 tests PASS (GREEN phase for P2)

Phase 6: Implementation — P3 User Stories

  • T023 [US5] Implement logs command: adb logcat stream, --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.md with installation, usage examples, and quickstart scenarios
  • T028 Validate all 8 quickstart scenarios from plan.md manually 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