name: Wyatt-Packages
#repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages Gitea not yet supported

packages:
  - packages/**

command:
  bootstrap:
    usePubspecOverrides: true
  
  version:
    updateGitTagRefs: true
    linkToCommits: false # Gitea not yet supported
    workspaceChangelog: true
    branch: master

scripts:
  lint:all:
    run: melos run analyze && melos run format
    description: Run all static analysis checks.

  analyze:
    run: |
      melos exec -c 1 -- flutter analyze --fatal-infos
    description: Run `flutter analyze` for all packages.

  format:
    run: melos exec flutter format . --fix
    description: Run `flutter format` for all packages.
  
  format-check:
    run: melos exec flutter format . --set-exit-if-changed
    description: Run `flutter format` checks for all packages.

  clean:deep:
    run: git clean -x -d -f -q
    description: Clean things very deeply with `git clean`.

  test:selective_unit_test:
    run: melos exec -- flutter test --no-pub --coverage
    description: Run Flutter tests for a specific package in this project.
    select-package:
      dir-exists:
        - test
      ignore:
        - '*example*'

  test:all:
    run: melos run test:selective_unit_test --no-select
    description: Run all Flutter tests in this project.

  gen-coverage: melos exec -- sh "\$MELOS_ROOT_PATH/combine_coverage.sh" && genhtml coverage/lcov.info -o coverage/html

  gen-class-models: 
    run: melos exec -- dart pub global run dcdg -o models/class-models.puml
    select-package:
      ignore:
        - '*example*'

  quality-check:
    run: |
      melos clean && \
      melos bootstrap && \
      melos run test:all
    description: Run all targets generally expected in CI for a full local quality check.

  publish:validate:
    run: melos publish --diff="origin/$DRONE_COMMIT_BRANCH...HEAD" --yes
  
  # publish:
  #   run: melos publish --diff="origin/$DRONE_COMMIT_BRANCH...HEAD" --no-dry-run --yes
  
  # Additional cleanup lifecycle script, executed when `melos clean` is run.
  postclean: >
    melos exec -c 6 -- "flutter clean"