Aller au contenu

Shell

Ce Makefile étend les fonctionnalités communes en ajoutant notamment un linter : ShellCheck pour le shell.

Exemple de Makefile à la racine de votre projet :

# Configuration du linter ShellCheck :
#
# AUTO    => auto-downloade ShellCheck depuis internet (valeur par défaut)
# (empty) => déactive ShellCheck
# (path)  => utile ce binaire qui doit être présent dans le PATH système
#
# [note: cette variable spécifique doit être définie AVANT les includes]
SHELLCHECK=AUTO

# Toujours inclure le "common_makefile.mk"
include .common_makefiles/common_makefile.mk

# L'inclusion de ce Makefile "shell_makefile.mk" apporte les 
# éléments spécifiques décrits sur cette page
include .common_makefiles/shell_makefile.mk

# Liste des fichiers à passer au linter
#
# par défaut : $(shell find "$(ROOT_DIR)" -type f -name "*.sh" |grep -v "^$(ROOT_DIR)/\.tools/" |grep -v "^$(ROOT_DIR)/\.tmp/" |grep "[a-zA-Z0-9]" |xargs)
#                => liste tous les fichiers .sh (à l'exception des sous-répertoires .tools et .tmp )
# sinon      : liste des fichiers shells à passer au linter (chemins séparés par des espaces)
SHELLCHECK_FILES = src/foo.sh src/bar.sh

Avec ce type de configuration, l'execution de make lint va exécuter ShellCheck sur les fichiers configurés.

Le chargement de shell_makefile.mk va également amener une nouvelle cible : lint_shellcheck qui permet de n'exécuter que ce linter (si jamais plusieurs autres linters sont configurés sous la cible lint).

Plus de détails quant aux possibilités/configurations : référence shell mais aussi référence commune.