mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-25 13:16:11 +03:00
ci: add shellcheck linting for shell scripts
Add shellcheck to CI pipeline to ensure shell scripts follow best practices and catch common errors. Fix existing shellcheck warnings in test scripts to pass the new linting requirements.
This commit is contained in:
35
.github/workflows/test.yml
vendored
35
.github/workflows/test.yml
vendored
@ -31,6 +31,7 @@ jobs:
|
|||||||
- prettier
|
- prettier
|
||||||
- alejandra
|
- alejandra
|
||||||
- typos
|
- typos
|
||||||
|
- shellcheck
|
||||||
- translations
|
- translations
|
||||||
- blueprint-compiler
|
- blueprint-compiler
|
||||||
- test-pkg-linux
|
- test-pkg-linux
|
||||||
@ -778,6 +779,40 @@ jobs:
|
|||||||
- name: typos check
|
- name: typos check
|
||||||
run: nix develop -c typos
|
run: nix develop -c typos
|
||||||
|
|
||||||
|
shellcheck:
|
||||||
|
if: github.repository == 'ghostty-org/ghostty'
|
||||||
|
runs-on: namespace-profile-ghostty-xsm
|
||||||
|
timeout-minutes: 60
|
||||||
|
env:
|
||||||
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
||||||
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
- name: Setup Cache
|
||||||
|
uses: namespacelabs/nscloud-cache-action@449c929cd5138e6607e7e78458e88cc476e76f89 # v1.2.8
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
/nix
|
||||||
|
/zig
|
||||||
|
- uses: cachix/install-nix-action@cebd211ec2008b83bda8fb0b21c3c072f004fe04 # v31.5.0
|
||||||
|
with:
|
||||||
|
nix_path: nixpkgs=channel:nixos-unstable
|
||||||
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
||||||
|
with:
|
||||||
|
name: ghostty
|
||||||
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||||
|
skipPush: true
|
||||||
|
useDaemon: false # sometimes fails on short jobs
|
||||||
|
- name: shellcheck
|
||||||
|
run: |
|
||||||
|
nix develop -c shellcheck \
|
||||||
|
--check-sourced \
|
||||||
|
--color=always \
|
||||||
|
--severity=warning \
|
||||||
|
--shell=bash \
|
||||||
|
--external-sources \
|
||||||
|
$(find . \( -name "*.sh" -o -name "*.bash" \) -type f ! -path "./zig-out/*" ! -path "./macos/build/*" ! -path "./.git/*" | sort)
|
||||||
|
|
||||||
translations:
|
translations:
|
||||||
if: github.repository == 'ghostty-org/ghostty'
|
if: github.repository == 'ghostty-org/ghostty'
|
||||||
runs-on: namespace-profile-ghostty-xsm
|
runs-on: namespace-profile-ghostty-xsm
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
set -e # Exit immediately if a command exits with a non-zero status
|
set -e # Exit immediately if a command exits with a non-zero status
|
||||||
|
|
||||||
SCRIPT_PATH="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
SCRIPT_PATH="$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd)"
|
||||||
INPUT_FILE="$SCRIPT_PATH/../../build.zig.zon2json-lock"
|
INPUT_FILE="$SCRIPT_PATH/../../build.zig.zon2json-lock"
|
||||||
OUTPUT_DIR="blob"
|
OUTPUT_DIR="blob"
|
||||||
|
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
pinact,
|
pinact,
|
||||||
hyperfine,
|
hyperfine,
|
||||||
typos,
|
typos,
|
||||||
|
shellcheck,
|
||||||
uv,
|
uv,
|
||||||
wayland,
|
wayland,
|
||||||
wayland-scanner,
|
wayland-scanner,
|
||||||
@ -101,6 +102,7 @@ in
|
|||||||
alejandra
|
alejandra
|
||||||
pinact
|
pinact
|
||||||
typos
|
typos
|
||||||
|
shellcheck
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
parallel
|
parallel
|
||||||
|
@ -9,9 +9,6 @@ DIR=$(cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd)
|
|||||||
# We always copy the bin in case it was rebuilt
|
# We always copy the bin in case it was rebuilt
|
||||||
cp ${DIR}/../zig-out/bin/ghostty ${DIR}/
|
cp ${DIR}/../zig-out/bin/ghostty ${DIR}/
|
||||||
|
|
||||||
# Build our image once
|
|
||||||
IMAGE=$(docker build --file ${DIR}/Dockerfile -q ${DIR})
|
|
||||||
|
|
||||||
# Unix shortcut to just execute ./run-host for each one. We can do
|
# Unix shortcut to just execute ./run-host for each one. We can do
|
||||||
# this less esoterically if we ever wanted.
|
# this less esoterically if we ever wanted.
|
||||||
find ${DIR}/cases \
|
find ${DIR}/cases \
|
||||||
@ -23,4 +20,4 @@ find ${DIR}/cases \
|
|||||||
${DIR}/run-host.sh \
|
${DIR}/run-host.sh \
|
||||||
--case '{}' \
|
--case '{}' \
|
||||||
--rewrite-abs-path \
|
--rewrite-abs-path \
|
||||||
$@
|
"$@"
|
||||||
|
@ -13,4 +13,4 @@ docker run \
|
|||||||
--entrypoint "xvfb-run" \
|
--entrypoint "xvfb-run" \
|
||||||
$IMAGE \
|
$IMAGE \
|
||||||
--server-args="-screen 0, 1600x900x24" \
|
--server-args="-screen 0, 1600x900x24" \
|
||||||
/entrypoint.sh $@
|
/entrypoint.sh "$@"
|
||||||
|
@ -63,6 +63,7 @@ if [ $bad -ne 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Load our test case
|
# Load our test case
|
||||||
|
# shellcheck disable=SC1090
|
||||||
source ${ARG_CASE}
|
source ${ARG_CASE}
|
||||||
if ! has_func "test_do"; then
|
if ! has_func "test_do"; then
|
||||||
echo "Test case is invalid."
|
echo "Test case is invalid."
|
||||||
@ -79,7 +80,7 @@ if [ "$ARG_EXEC" = "ghostty" ]; then
|
|||||||
# We build in Nix (maybe). To be sure, we replace the interpreter so
|
# We build in Nix (maybe). To be sure, we replace the interpreter so
|
||||||
# it doesn't point to a Nix path. If we don't build in Nix, this should
|
# it doesn't point to a Nix path. If we don't build in Nix, this should
|
||||||
# still be safe.
|
# still be safe.
|
||||||
patchelf --set-interpreter /lib/ld-linux-$(uname -m).so.1 ${ARG_EXEC}
|
patchelf --set-interpreter /lib/ld-linux-"$(uname -m)".so.1 ${ARG_EXEC}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user