4NK_template/scripts/agents/lang_detect.sh

42 lines
1.5 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
# Détection de langages et outillages par conventions de fichiers.
# À sourcer depuis les agents. Utilise le répertoire courant comme racine projet.
has_file() { [[ -f "$1" ]]; }
has_dir() { [[ -d "$1" ]]; }
has_bin() { command -v "$1" >/dev/null 2>&1; }
export HAS_NODE=0 HAS_TYPESCRIPT=0 HAS_GO=0 HAS_RUST=0 HAS_PYTHON=0 HAS_SHELL_BASH=0 HAS_SHELL_PWSH=0
# Node / TypeScript
if has_file package.json; then HAS_NODE=1; fi
if has_file tsconfig.json || git -C "${TARGET_DIR:-.}" ls-files '*.ts' | grep -q . 2>/dev/null; then HAS_TYPESCRIPT=1; fi
# Go
if has_file go.mod || has_file go.work; then HAS_GO=1; fi
# Rust
if has_file Cargo.toml; then HAS_RUST=1; fi
# Python
if has_file pyproject.toml || has_file requirements.txt || git -C "${TARGET_DIR:-.}" ls-files '*.py' | grep -q . 2>/dev/null; then HAS_PYTHON=1; fi
# Shell (bash)
if git -C "${TARGET_DIR:-.}" ls-files '*.sh' | grep -q . 2>/dev/null; then HAS_SHELL_BASH=1; fi
# PowerShell (pwsh)
if git -C "${TARGET_DIR:-.}" ls-files '*.ps1' | grep -q . 2>/dev/null; then HAS_SHELL_PWSH=1; fi
# Exposer aussi l'état des outils lorsquils existent
export HAS_NPM=0 HAS_NPX=0 HAS_GO_BIN=0 HAS_CARGO=0 HAS_PYTHON_BIN=0 HAS_PIP=0 HAS_SHELLCHECK=0 HAS_PWSH=0
has_bin npm && HAS_NPM=1
has_bin npx && HAS_NPX=1
has_bin go && HAS_GO_BIN=1
has_bin cargo && HAS_CARGO=1
has_bin python && HAS_PYTHON_BIN=1 || true
has_bin pip && HAS_PIP=1 || true
has_bin shellcheck && HAS_SHELLCHECK=1 || true
has_bin pwsh && HAS_PWSH=1 || true