From 4d1a12e865409ec0ad74dbb1e64b1953ed43e2e4 Mon Sep 17 00:00:00 2001 From: Dhaval Gojiya Date: Mon, 22 Jun 2026 14:44:35 +0530 Subject: [PATCH] feat(pre-commit): add shellcheck and shfmt pre-commit hooks for shell scripts --- .pre-commit-config.yaml | 12 +++++ solr-docker-test-env.sh | 104 ++++++++++++++++++++-------------------- 2 files changed, 64 insertions(+), 52 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a97a13d4..a3e84bc2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,6 +10,7 @@ repos: - id: check-case-conflict - id: check-docstring-first - id: check-executables-have-shebangs + - id: check-shebang-scripts-are-executable - id: check-json - id: check-merge-conflict - id: check-symlinks @@ -35,6 +36,17 @@ repos: additional_dependencies: - tomli + - repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.11.0.1 + hooks: + - id: shellcheck + + - repo: https://github.com/scop/pre-commit-shfmt + rev: v3.13.1-1 + hooks: + - id: shfmt + args: ["--indent=4", "--case-indent", "--write"] + - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.15.15 hooks: diff --git a/solr-docker-test-env.sh b/solr-docker-test-env.sh index 729aa0d6..9d4db532 100755 --- a/solr-docker-test-env.sh +++ b/solr-docker-test-env.sh @@ -33,61 +33,61 @@ fi # Parse the flag case "$1" in -help | --help | -h) - usage - ;; - -setup) - echo -e "${CYAN}=== Starting Solr Docker Test Environment Setup ===${NC}" - - echo -e "${BLUE}→ SOLR_VERSION environment variable: ${SOLR_VERSION:-not set (default: 9 will be used)}${NC}" - - # Start docker compose in detached mode - echo -e "${BLUE}→ Running \`docker compose -f docker/docker-compose-solr.yml up -d --quiet-pull\`...${NC}" - docker compose -f docker/docker-compose-solr.yml up -d --quiet-pull - - # Wait for the solr-init container to finish (60-second timeout) - echo -e "${BLUE}→ Waiting for solr-init container to complete (timeout: 60 seconds)...${NC}" - if timeout 60 docker container wait solr-init; then - # Capture the exit code of the solr-init container - EXIT_CODE=$(docker inspect solr-init --format='{{.State.ExitCode}}') - echo -e "${BLUE}→ solr-init container exited with code: ${EXIT_CODE}${NC}" - - if [ "$EXIT_CODE" -eq 0 ]; then - echo -e "${GREEN}✓ Setup completed successfully!${NC}" - - SOLR_VERSION_RUNNING=$(get_solr_version) - - echo -e "${GREEN}✓ Solr test server is ready (Solr version: ${SOLR_VERSION_RUNNING})${NC}" - exit 0 + help | --help | -h) + usage + ;; + + setup) + echo -e "${CYAN}=== Starting Solr Docker Test Environment Setup ===${NC}" + + echo -e "${BLUE}→ SOLR_VERSION environment variable: ${SOLR_VERSION:-not set (default: 9 will be used)}${NC}" + + # Start docker compose in detached mode + echo -e "${BLUE}→ Running \`docker compose -f docker/docker-compose-solr.yml up -d --quiet-pull\`...${NC}" + docker compose -f docker/docker-compose-solr.yml up -d --quiet-pull + + # Wait for the solr-init container to finish (60-second timeout) + echo -e "${BLUE}→ Waiting for solr-init container to complete (timeout: 60 seconds)...${NC}" + if timeout 60 docker container wait solr-init; then + # Capture the exit code of the solr-init container + EXIT_CODE=$(docker inspect solr-init --format='{{.State.ExitCode}}') + echo -e "${BLUE}→ solr-init container exited with code: ${EXIT_CODE}${NC}" + + if [ "$EXIT_CODE" -eq 0 ]; then + echo -e "${GREEN}✓ Setup completed successfully!${NC}" + + SOLR_VERSION_RUNNING=$(get_solr_version) + + echo -e "${GREEN}✓ Solr test server is ready (Solr version: ${SOLR_VERSION_RUNNING})${NC}" + exit 0 + else + echo -e "${RED}✗ Error: solr-init container failed with exit code ${EXIT_CODE}${NC}" + echo -e "${YELLOW}Fetching logs from solr-init:${NC}" + docker logs solr-init + exit 1 + fi else - echo -e "${RED}✗ Error: solr-init container failed with exit code ${EXIT_CODE}${NC}" + echo -e "${RED}✗ Error: Timeout waiting for solr-init container${NC}" echo -e "${YELLOW}Fetching logs from solr-init:${NC}" docker logs solr-init exit 1 fi - else - echo -e "${RED}✗ Error: Timeout waiting for solr-init container${NC}" - echo -e "${YELLOW}Fetching logs from solr-init:${NC}" - docker logs solr-init - exit 1 - fi - ;; - -destroy) - echo -e "${CYAN}=== Starting Solr Docker Test Environment Teardown ===${NC}" - - # Stop docker compose and remove volumes - echo -e "${BLUE}→ Running \`docker compose -f docker/docker-compose-solr.yml down -v\`...${NC}" - docker compose -f docker/docker-compose-solr.yml down -v - - echo -e "${GREEN}✓ Teardown completed successfully!${NC}" - echo -e "${GREEN}✓ All containers and volumes removed${NC}" - exit 0 - ;; - -*) - echo -e "${RED}Error: Invalid flag '$1'${NC}" - usage - ;; + ;; + + destroy) + echo -e "${CYAN}=== Starting Solr Docker Test Environment Teardown ===${NC}" + + # Stop docker compose and remove volumes + echo -e "${BLUE}→ Running \`docker compose -f docker/docker-compose-solr.yml down -v\`...${NC}" + docker compose -f docker/docker-compose-solr.yml down -v + + echo -e "${GREEN}✓ Teardown completed successfully!${NC}" + echo -e "${GREEN}✓ All containers and volumes removed${NC}" + exit 0 + ;; + + *) + echo -e "${RED}Error: Invalid flag '$1'${NC}" + usage + ;; esac