From 1a667920ab15850f6a67c7866d8b894b4890337a Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 3 Jan 2026 15:16:04 -0600 Subject: [PATCH] Refactor tabs.sh to use bash for tab detection Removed copyright notice and unnecessary comments. Updated script to detect tab characters in source files using bash instead of Python. Signed-off-by: Jonathan Miller --- scripts/validate/tabs.sh | 79 +++++++++++----------------------------- 1 file changed, 21 insertions(+), 58 deletions(-) diff --git a/scripts/validate/tabs.sh b/scripts/validate/tabs.sh index c39b53c..bd2394b 100644 --- a/scripts/validate/tabs.sh +++ b/scripts/validate/tabs.sh @@ -1,65 +1,28 @@ -# ============================================================================ -# Copyright (C) 2025 Moko Consulting -# -# This file is part of a Moko Consulting project. -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# FILE INFORMATION -# DEFGROUP: Scripts.Validate -# INGROUP: MokoStandards.Release -# REPO: https://github.com/mokoconsulting-tech/MokoStandards -# PATH: /scripts/validate/tabs.sh -# VERSION: 01.00.00 -# BRIEF: Detects tab characters in text files under src and fails if any are present. -# NOTE: -# ============================================================================ - +#!/usr/bin/env bash set -euo pipefail -SRC_DIR="${SRC_DIR:-src}" +# Detect TAB characters in source files tracked by Git. Uses careful +# handling of filenames and avoids heredoc pitfalls. -json_escape() { - python3 -c 'import json,sys; print(json.dumps(sys.argv[1]))' "$1" -} +# Limit file globs as appropriate for the repo +files=$(git ls-files '*.php' '*.js' '*.py' || true) -[ -d "${SRC_DIR}" ] || { - printf '{"status":"fail","error":%s} -' "$(json_escape "src directory missing")" - exit 1 -} +if [ -z "${files}" ]; then + echo "No files to check" + exit 0 +fi -python3 - <<'PY' "${SRC_DIR}" -import json -import sys -from pathlib import Path +bad=0 +while IFS= read -r f; do + if grep -n $'\t' -- "$f" >/dev/null 2>&1; then + echo "TAB found in $f" + bad=1 + fi +done <<< "${files}" -src = Path(sys.argv[1]) -exclude_dirs = {'vendor','node_modules','dist','.git','build','tmp'} +if [ "${bad}" -ne 0 ]; then + echo "ERROR: Tabs found in repository files" >&2 + exit 2 +fi -hits = [] -scanned = 0 - -for p in src.rglob('*'): - if not p.is_file(): - continue - if any(part in exclude_dirs for part in p.parts): - continue - try: - data = p.read_bytes() - except Exception: - continue - if b' +echo "tabs: ok"