Ocideck/Makefile

139 lines
7.3 KiB
Makefile
Raw Permalink Normal View History

.PHONY: setup format format-check analyze test test-contracts test-preview test-export test-state test-services test-presenter deps-outdated deps-check licenses check check-full help
help:
@echo "OciDeck quality targets:"
@echo " make check Format check + static analysis + full Flutter test suite."
@echo " make check-full make check + dependency outdated report."
@echo " make test-contracts Markdown/save-load contract and parsing tests."
@echo " make test-preview Slide rendering, footer, TLP, inline markdown, and preview tests."
@echo " make test-export Export and file-service smoke tests."
@echo " make test-state Provider/state/recovery tests."
@echo " make test-services Caption/description/image service tests."
@echo " make test-presenter Fullscreen presenter interaction tests."
@echo " make deps-outdated Advisory dependency freshness report."
@echo " make deps-check Verify vendored JS bundles vs manifest + OSV CVEs."
@echo " make licenses Verify all dependencies use open-source licences."
# Install Flutter/Dart dependencies.
setup:
@echo "== OciDeck setup =="
@echo "Purpose: install Flutter/Dart dependencies with 'flutter pub get'."
flutter pub get
# Auto-format all Dart code in-place.
format:
@echo "== OciDeck format =="
@echo "Purpose: rewrite Dart files using the repository formatter."
dart format .
# Verify formatting without modifying files.
format-check:
@echo "== OciDeck check: format =="
@echo "Command: dart format --output=none --set-exit-if-changed ."
@echo "Covers: all Dart source and test files tracked in this workspace."
@echo "Failure means: at least one Dart file needs 'dart format .'."
dart format --output=none --set-exit-if-changed .
# Static analysis.
analyze:
@echo "== OciDeck check: static analysis =="
@echo "Command: flutter analyze"
@echo "Covers: analyzer/lint/type checks for the Flutter app and tests."
@echo "Failure means: inspect analyzer diagnostics above the final summary."
flutter analyze
# Run the full unit/widget test suite.
test:
@echo "== OciDeck check: tests =="
@echo "Command: flutter test"
@echo "Covers: all unit/widget tests under test/, including markdown round-trip, preview, export, provider, footer, and presenter tests."
@echo "Failure means: inspect the named failing test file and test case in the Flutter output."
flutter test
# Contract tests for persistence and parsing.
test-contracts:
@echo "== OciDeck targeted check: contracts =="
@echo "Command: flutter test test/markdown_round_trip_test.dart test/markdown_service_test.dart"
@echo "Covers: Markdown generation/parsing, save-load round-trips, slide field migration defaults, theme profile metadata."
@echo "Failure means: a UI/model field may not persist correctly, or old presentations may migrate incorrectly."
flutter test test/markdown_round_trip_test.dart test/markdown_service_test.dart
# Visual/rendering-focused widget tests.
test-preview:
@echo "== OciDeck targeted check: preview/rendering =="
@echo "Command: flutter test preview-related widget tests"
@echo "Covers: slide preview rendering, image panels, footer placement, TLP badge, inline markdown, text style regressions."
@echo "Failure means: inspect visual layout/rendering logic before changing export or slide-preview code."
flutter test test/bullets_image_preview_test.dart test/footer_preview_test.dart test/image_slides_preview_test.dart test/inline_markdown_test.dart test/slide_text_style_test.dart test/tlp_test.dart
# Export and filesystem integration smoke tests.
test-export:
@echo "== OciDeck targeted check: export/files =="
@echo "Command: flutter test test/export_service_test.dart test/file_service_test.dart"
@echo "Covers: PDF/PPTX export smoke tests and project file-save behavior, including copied logo assets."
@echo "Failure means: inspect export_service/file_service and generated artifact structure."
flutter test test/export_service_test.dart test/file_service_test.dart
# State-management and recovery tests.
test-state:
@echo "== OciDeck targeted check: state/recovery =="
@echo "Command: flutter test provider and recovery tests"
@echo "Covers: deck mutations, undo/redo, skip state, search/replace, settings profiles, recovery snapshots."
@echo "Failure means: inspect provider state transitions or recovery serialization."
flutter test test/deck_provider_test.dart test/settings_provider_test.dart test/recovery_service_test.dart
# Service-level tests.
test-services:
@echo "== OciDeck targeted check: services =="
@echo "Command: flutter test service tests"
@echo "Covers: image path/copy behavior, captions, descriptions, and sidecar metadata services."
@echo "Failure means: inspect service path handling, sidecar reads/writes, or filesystem assumptions."
flutter test test/caption_service_test.dart test/description_service_test.dart test/image_service_test.dart
# Presenter interaction tests.
test-presenter:
@echo "== OciDeck targeted check: presenter =="
@echo "Command: flutter test test/fullscreen_presenter_test.dart"
@echo "Covers: fullscreen presenter navigation, presenter view, keyboard shortcuts, grid navigation."
@echo "Failure means: inspect fullscreen presenter keyboard/focus/navigation behavior."
flutter test test/fullscreen_presenter_test.dart
# Advisory dependency freshness report; not part of normal check because it can
# depend on network availability and does not imply the current code is broken.
deps-outdated:
@echo "== OciDeck advisory check: dependencies =="
@echo "Command: flutter pub outdated"
@echo "Covers: dependency freshness only. This is advisory and may require network access."
@echo "Failure means: inspect network/tooling first; outdated packages are not necessarily regressions."
flutter pub outdated
# Security gate for the vendored JS bundles inlined into the HTML export.
# Verifies each file still matches assets/web_export/MANIFEST.json (sha256) and
# queries the OSV database for known vulnerabilities in the pinned versions.
deps-check:
@echo "== OciDeck check: bundled JavaScript =="
@echo "Command: dart run tool/check_bundled_js.dart"
@echo "Covers: integrity (sha256 vs manifest) + known CVEs (OSV) for marked,"
@echo " highlight.js, DOMPurify, mermaid and MathJax."
@echo "Failure means: a bundle drifted from the manifest, or a pinned version"
@echo " now has a known vulnerability — upgrade it and refresh the manifest."
dart run tool/check_bundled_js.dart
# Open-source licence compliance check for all resolved dependencies.
licenses:
@echo "== OciDeck check: licences =="
@echo "Command: dart run tool/check_licenses.dart"
@echo "Covers: licence of every resolved Dart/Flutter package (direct + transitive)."
@echo "Failure means: a dependency uses an unrecognised or non-open-source licence — review it."
dart run tool/check_licenses.dart
# Full local quality gate. Intended for humans, CI logs, and LLM-assisted debugging.
check: format-check analyze test
@echo "== OciDeck check complete =="
@echo "Validated: formatting, static analysis, and the full Flutter test suite."
# Extended local check with advisory dependency freshness after the required gate.
check-full: check licenses deps-check deps-outdated
@echo "== OciDeck extended check complete =="
@echo "Validated: required quality gate, licence compliance, bundled-JS CVEs, and dependency freshness."