diff --git a/Makefile b/Makefile index cd29b5af90e3d..a1d6c1b15050a 100644 --- a/Makefile +++ b/Makefile @@ -410,9 +410,14 @@ else endif .PHONY: fmt/shfmt -lint: lint/shellcheck lint/go lint/ts lint/helm +lint: lint/shellcheck lint/go lint/ts lint/helm lint/site-icons .PHONY: lint +lint/site-icons: + ./scripts/check_site_icons.sh + +.PHONY: lint/site-icons + lint/ts: cd site yarn && yarn lint diff --git a/scripts/check_site_icons.sh b/scripts/check_site_icons.sh new file mode 100755 index 0000000000000..2d4406a4d321e --- /dev/null +++ b/scripts/check_site_icons.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -euo pipefail +# shellcheck source=scripts/lib.sh +source "$(dirname "${BASH_SOURCE[0]}")/lib.sh" +cdroot + +cd site/static/icon + +# These exceptions are here for backwards compatibility. All new icons should +# be SVG to minimize the size of our repo and our bundle. +exceptions=( + "aws.png" + "azure.png" + "docker.png" + "do.png" + "gcp.png" + "k8s.png" +) + +function is_exception() { + local value="$1" + shift + for item; do + [[ "$item" == "$value" ]] && return 0 + done + return 1 +} + +for file in *; do + # Extract filename + filename=$(basename -- "$file") + + # Check if the file is in the exception list + if is_exception "$filename" "${exceptions[@]}"; then + continue + fi + + # If not an exception, check if it's an svg file + if [[ "$file" != *.svg ]]; then + echo "Found a non-svg file not in exception list: $file" + exit 1 + fi +done diff --git a/scripts/lib.sh b/scripts/lib.sh index f5cf7a97c0669..1b4c48c784fdc 100644 --- a/scripts/lib.sh +++ b/scripts/lib.sh @@ -41,7 +41,19 @@ realpath() { # We have to define realpath before these otherwise it fails on Mac's bash. SCRIPT="${BASH_SOURCE[1]:-${BASH_SOURCE[0]}}" SCRIPT_DIR="$(realpath "$(dirname "$SCRIPT")")" -PROJECT_ROOT="$(cd "$SCRIPT_DIR" && realpath "$(git rev-parse --show-toplevel)")" + +function project_root { + # Try to use `git rev-parse --show-toplevel` to find the project root. + # If this directory is not a git repository, this command will fail. + git rev-parse --show-toplevel 2>/dev/null && return + + # This finds the Sapling root. This behavior is added so that @ammario + # and others can more easily experiment with Sapling, but we do not have a + # plan to support Sapling across the repo. + sl root 2>/dev/null && return +} + +PROJECT_ROOT="$(cd "$SCRIPT_DIR" && realpath "$(project_root)")" # pushd is a silent alternative to the real pushd shell command. pushd() {