From 0a1a9f3ec7d6c67c6c6f9ab1ae9ac5caa264bbff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey?= Date: Fri, 23 Sep 2022 16:40:17 +0200 Subject: [PATCH 1/2] Initial setup for sharing scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Brey --- .editorconfig | 3 +++ .github/sync.yml | 2 ++ .github/workflows/shell.yml | 24 ++++++++++++++++++++++++ .shellcheckrc | 4 ++++ config/scripts/get_base_branch.sh | 15 +++++++++++++++ config/scripts/lib.sh | 26 ++++++++++++++++++++++++++ 6 files changed, 74 insertions(+) create mode 100644 .editorconfig create mode 100644 .github/workflows/shell.yml create mode 100644 .shellcheckrc create mode 100755 config/scripts/get_base_branch.sh create mode 100644 config/scripts/lib.sh diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..47ff004 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,3 @@ +[*.sh] +indent_style = space +indent_size = 4 diff --git a/.github/sync.yml b/.github/sync.yml index ead6f99..da3f2c0 100644 --- a/.github/sync.yml +++ b/.github/sync.yml @@ -8,3 +8,5 @@ group: files: - source: config/workflows/ dest: .github/workflows/ + - source: config/scripts/ + dest: scripts/shared/ diff --git a/.github/workflows/shell.yml b/.github/workflows/shell.yml new file mode 100644 index 0000000..2823f3f --- /dev/null +++ b/.github/workflows/shell.yml @@ -0,0 +1,24 @@ +name: Lint shell scripts +on: + pull_request: + branches: + - main +jobs: + shellcheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install shellcheck + run: sudo apt-get update && sudo apt-get install shellcheck -y + - name: Run shellcheck + run: shellcheck config/scripts/* + shfmt: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install shfmt + run: | + wget https://github.com/mvdan/sh/releases/download/v3.5.1/shfmt_v3.5.1_linux_amd64 -O shfmt + chmod +x shfmt + - name: Run shfmt + run: ./shfmt --diff config/scripts diff --git a/.shellcheckrc b/.shellcheckrc new file mode 100644 index 0000000..c0625d3 --- /dev/null +++ b/.shellcheckrc @@ -0,0 +1,4 @@ +source-path=config/scripts +enable=avoid-nullary-conditions +enable=deprecate-which +enable=quote-safe-variables diff --git a/config/scripts/get_base_branch.sh b/config/scripts/get_base_branch.sh new file mode 100755 index 0000000..997cd42 --- /dev/null +++ b/config/scripts/get_base_branch.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# gets the "base branch" against which to compare analysis results; +# this would be the base branch for PRs and the head branch for pushes +set -euo pipefail + +PR_NUMBER="${1:-}" + +#shellcheck source=lib.sh +source "$(dirname "$0")/lib.sh" + +if [ -z "${PR_NUMBER}" ]; then + git branch --show-current +else + curl_gh "https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}" | jq .base.ref +fi diff --git a/config/scripts/lib.sh b/config/scripts/lib.sh new file mode 100644 index 0000000..5dbf7ac --- /dev/null +++ b/config/scripts/lib.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +## This file is intended to be sourced by other scripts + +## if DEBUG is present in the env, will enable echoing every command +if [ -n "${DEBUG:-}" ]; then + set -x + echo "DEBUG enabled" +fi + +## echoes to stderr +function err() { + echo >&2 "$@" +} + +## makes an authenticated request to the Github API using the GITHUB_TOKEN from the environment +function curl_gh() { + if [[ -n "${GITHUB_TOKEN:-}" ]]; then + curl \ + --silent \ + --header "Authorization: token $GITHUB_TOKEN" \ + "$@" + else + err "WARNING: No GITHUB_TOKEN found. Skipping API call" + fi + +} From d3838af49ce1283f5214a2e748c5d4ee5c3b28af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey?= Date: Thu, 29 Sep 2022 18:01:11 +0200 Subject: [PATCH 2/2] get_branch should return the head branch, not the base branch, for PRs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Brey --- config/scripts/{get_base_branch.sh => get_branch.sh} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename config/scripts/{get_base_branch.sh => get_branch.sh} (91%) diff --git a/config/scripts/get_base_branch.sh b/config/scripts/get_branch.sh similarity index 91% rename from config/scripts/get_base_branch.sh rename to config/scripts/get_branch.sh index 997cd42..81ed7dd 100755 --- a/config/scripts/get_base_branch.sh +++ b/config/scripts/get_branch.sh @@ -11,5 +11,5 @@ source "$(dirname "$0")/lib.sh" if [ -z "${PR_NUMBER}" ]; then git branch --show-current else - curl_gh "https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}" | jq .base.ref + curl_gh "https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}" | jq .head.ref fi