push
This commit is contained in:
+135
@@ -0,0 +1,135 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ======================
|
||||
# CONFIGURATION
|
||||
# ======================
|
||||
OUT="out"
|
||||
MAIN_CLASS="Main" # Si Main est dans un package, ex: monpackage.Main
|
||||
# ======================
|
||||
|
||||
# Se placer dans le dossier du script
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
cmd="${1:-help}"
|
||||
|
||||
|
||||
clean() {
|
||||
if [ -d "$OUT" ]; then
|
||||
echo "Suppression du dossier '$OUT'..."
|
||||
rm -rf "$OUT"
|
||||
else
|
||||
echo "Aucun dossier '$OUT' à supprimer."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
build() {
|
||||
if ! command -v javac >/dev/null 2>&1; then
|
||||
echo "[ERREUR] javac introuvable dans le PATH"
|
||||
return 1
|
||||
fi
|
||||
|
||||
mkdir -p "$OUT"
|
||||
|
||||
echo "Création de la liste des sources..."
|
||||
mapfile -t sources < <(find . -type f -name "*.java")
|
||||
|
||||
COUNT="${#sources[@]}"
|
||||
if [ "$COUNT" -eq 0 ]; then
|
||||
echo "[ERREUR] Aucun fichier .java trouvé dans $PWD"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "$COUNT fichiers trouvés. Compilation..."
|
||||
|
||||
javac -d "$OUT" "${sources[@]}"
|
||||
ERR=$?
|
||||
|
||||
if [ "$ERR" -eq 0 ]; then
|
||||
echo "Compilation réussie !"
|
||||
else
|
||||
echo "[ERREUR] Compilation (code $ERR)"
|
||||
fi
|
||||
|
||||
return $ERR
|
||||
}
|
||||
|
||||
|
||||
run() {
|
||||
build
|
||||
if [ $? -eq 0 ]; then
|
||||
echo
|
||||
echo "Exécution de $MAIN_CLASS ..."
|
||||
java -cp "$OUT" "$MAIN_CLASS"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
count() {
|
||||
COUNT=$(find . -type f -name "*.java" | wc -l)
|
||||
echo "$COUNT fichiers Java trouvés."
|
||||
|
||||
LIGNES=0
|
||||
while IFS= read -r file; do
|
||||
NB=$(wc -l < "$file")
|
||||
LIGNES=$((LIGNES + NB))
|
||||
done < <(find . -type f -name "*.java")
|
||||
|
||||
echo "$LIGNES lignes Java trouvées."
|
||||
}
|
||||
|
||||
|
||||
watch() {
|
||||
echo "Mode surveillance activé : recompilation à chaque changement..."
|
||||
echo "Ctrl+C pour quitter."
|
||||
|
||||
LASTSTATE=""
|
||||
|
||||
while true; do
|
||||
CURRENTSTATE=$(find . -type f -name "*.java" -exec stat -c "%n %Y" {} \;)
|
||||
if [ "$CURRENTSTATE" != "$LASTSTATE" ]; then
|
||||
LASTSTATE="$CURRENTSTATE"
|
||||
build
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
purge() {
|
||||
echo "Suppression des .class hors de '$OUT'..."
|
||||
find . -type f -name "*.class" ! -path "./$OUT/*" -delete
|
||||
}
|
||||
|
||||
|
||||
rebuild() {
|
||||
clean
|
||||
purge
|
||||
build
|
||||
}
|
||||
|
||||
|
||||
help() {
|
||||
echo "Usage: ./build.sh [option]"
|
||||
echo
|
||||
echo " build - Compile le projet"
|
||||
echo " clean - Supprime le dossier de sortie '$OUT'"
|
||||
echo " run - Compile puis lance $MAIN_CLASS"
|
||||
echo " count - Compte les fichiers et les lignes Java"
|
||||
echo " watch - Recompile automatiquement si un fichier change"
|
||||
echo " purge - Supprime les .class hors de '$OUT'"
|
||||
echo " rebuild - Nettoie, purge et recompile le projet"
|
||||
echo " help - Affiche cette aide"
|
||||
}
|
||||
|
||||
|
||||
case "$cmd" in
|
||||
clean) clean ;;
|
||||
build) build ;;
|
||||
run) run ;;
|
||||
count) count ;;
|
||||
watch) watch ;;
|
||||
purge) purge ;;
|
||||
rebuild) rebuild ;;
|
||||
help|*) help ;;
|
||||
esac
|
||||
Reference in New Issue
Block a user