include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'

stages:
 - review
 - build
 - test
 - deploy

variables:
    BUNDLE: "extensions-git.flatpak"
    JS_LOG: "js-report.txt"
    POT_LOG: "pot-update.txt"

.only_default: &only_default
    only:
        - branches
        - tags
        - merge_requests

check_commit_log:
    image: registry.gitlab.gnome.org/gnome/mutter/master:v4
    stage: review
    variables:
        GIT_DEPTH: "100"
    script:
        - ./.gitlab-ci/check-commit-log.sh
    only:
        - merge_requests

js_check:
    image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
    stage: review
    script:
        - find js -name '*.js' -exec js68 -c -s '{}' ';' 2>&1 | tee $JS_LOG
        - (! grep -q . $JS_LOG)
    <<: *only_default
    artifacts:
        paths:
            - ${JS_LOG}
        when: on_failure

eslint:
    image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
    stage: review
    script:
        - ./.gitlab-ci/run-eslint.sh
    <<: *only_default
    artifacts:
        paths:
            - reports
        when: always

potfile_check:
    image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
    stage: review
    script:
        - ./.gitlab-ci/check-potfiles.sh
    <<: *only_default

no_template_check:
    image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
    stage: review
    script:
        - ./.gitlab-ci/check-template-strings.sh
    <<: *only_default

build:
    image: registry.gitlab.gnome.org/gnome/mutter/master:v4
    stage: build
    before_script:
        - .gitlab-ci/checkout-mutter.sh
        - meson mutter mutter/build --prefix=/usr -Dtests=false
        - ninja -C mutter/build install
    script:
        - meson . build -Dbuiltype=debugoptimized -Dman=false --werror
        - ninja -C build
        - ninja -C build install
    <<: *only_default
    artifacts:
        expire_in: 1 day
        paths:
            - mutter
            - build

test:
    image: registry.gitlab.gnome.org/gnome/mutter/master:v4
    stage: test
    variables:
        XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
        NO_AT_BRIDGE: "1"
    before_script:
        - ninja -C mutter/build install
    script:
        - dbus-run-session -- xvfb-run meson test -C build --no-rebuild
    <<: *only_default
    artifacts:
        expire_in: 1 day
        paths:
            - build/meson-logs/testlog.txt
        when: on_failure

test-pot:
    image: registry.gitlab.gnome.org/gnome/mutter/master:v4
    stage: test
    before_script:
        - ninja -C mutter/build install
    script:
        # Check that pot files are generated correctly:
        # https://savannah.gnu.org/bugs/?50920#comment5
        - ninja -C build gnome-shell-pot 2>&1 | awk '
            BEGIN { start=0; }
            start==1 { print $0; }
            /gnome-shell-pot/ { start=1; }
          ' | tee $POT_LOG
        - (! grep -q . $POT_LOG)
    <<: *only_default

flatpak:
    stage: build
    variables:
        SUBPROJECT: "subprojects/extensions-app"
        # Your manifest path
        MANIFEST_PATH: "$SUBPROJECT/build-aux/flatpak/org.gnome.Extensions.json"
        RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
        FLATPAK_MODULE: "gnome-extensions-app"
        APP_ID: "org.gnome.Extensions"
    extends: .flatpak
    <<: *only_default

nightly:
  extends: '.publish_nightly'
  variables:
    BUNDLES: '$BUNDLE'