#!/bin/bash
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# A wrapper that duplicates the code for the quick lint job in
# azure-pipelines.yml. The two should be kept in sync.
#
# This doesn't install dependencies, but should otherwise behave the
# same as what CI would do on a pull request.
#
# These tasks should ideally take less than a minute each

set -e

case $# in
    0)
        tgt_branch=master
        ;;
    1)
        tgt_branch="$1"
        shift
        ;;
    *)
        echo >&2 "Usage: quick-lint.sh [<tgt-branch>]"
        exit 1
esac

echo "### Display environment information"
ci/scripts/show-env.sh

echo -e "\n### Check commit metadata"
ci/scripts/lint-commits.sh $tgt_branch

echo -e "\n### Check Licence Headers"
ci/scripts/check-licence-headers.sh $tgt_branch

echo -e "\n### Check executable bits"
ci/scripts/exec-check.sh

echo -e "\n### Check for non-ASCII characters in source code"
ci/scripts/check-ascii.sh

echo -e "\n### Run Python lint (flake8)"
ci/scripts/python-lint.sh $tgt_branch || {
    echo "(ignoring python lint errors)"
}

echo -e "\n### Run Python lint (mypy)"
ci/scripts/mypy.sh $tgt_branch

echo -e "\n### Ensure all generated files are clean and up-to-date"
ci/scripts/check-generated.sh

echo -e "\n### Use clang-format to check C/C++ coding style"
ci/scripts/clang-format.sh $tgt_branch

echo -e "\n### Check formatting on header guards"
ci/scripts/include-guard.sh $tgt_branch

echo -e "\n### Use rustfmt to check Rust coding style"
ci/scripts/rust-format.sh $tgt_branch

echo -e "\n### Render documentation"
ci/scripts/build-docs.sh

echo -e "\n### Render landing site"
ci/scripts/build-site.sh

echo -e "\n### Check what kinds of changes the PR contains"
ci/scripts/get-build-type.sh $tgt_branch PullRequest
