stages:
  - check
  - test

flatpak:
  image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-44'
  stage: test
  tags:
    - flatpak
  variables:
    BUNDLE: "gtk-rust-template-nightly.flatpak"
    MANIFEST_PATH: "build-aux/blue.hidamari.pmpdc.Devel.json"
    FLATPAK_MODULE: "gtk-rust-template"
    APP_ID: "blue.hidamari.pmpdc.Devel"
    RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
  script:
    - flatpak install --user --noninteractive org.freedesktop.Sdk.Extension.llvm14//21.08
    - >
      xvfb-run -a -s "-screen 0 1024x768x24"
      flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
    - flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APP_ID} ${BRANCH}
  artifacts:
    name: 'Flatpak artifacts'
    expose_as: 'Get Flatpak bundle here'
    when: 'always'
    paths:
      - "${BUNDLE}"
      - '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/meson-log.txt'
      - '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/testlog.txt'
    expire_in: 14 days

# Configure and run rustfmt
# Exits and builds fails if on bad format
rustfmt:
  image: "rust:slim"
  script:
    - rustup component add rustfmt
    # Create blank versions of our configured files
    # so rustfmt does not yell about non-existent files or completely empty files
    - echo -e "" >> src/config.rs
    - rustc -Vv && cargo -Vv
    - cargo fmt --version
    - cargo fmt --all -- --color=always --check
