diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c549d178..6b682bae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -43,3 +43,8 @@ repos: language: system files: "\\.bash$" types: [file] + - id: clean-files-txt + name: Check that clean_files.txt is sorted alphabetically. + entry: ./hooks/check-clean-files-txt.sh + language: system + files: clean_files.txt diff --git a/clean_files.txt b/clean_files.txt index a645ab12..a578732b 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -1,7 +1,7 @@ ####################################################################### # Allow-list of files to be lint-checked by CI # -# Directory Suport +# Directory Support # Directory references are allowed within the file, ie: # # themes/powerline @@ -16,15 +16,78 @@ # root directories # -docs -hooks +docs/ +hooks/ # root files # .gitattributes -lint_clean_files.sh -install.sh bash_it.sh +clean_files.txt +install.sh +lint_clean_files.sh + +# aliases +# +aliases/available/dnf.aliases.bash +aliases/available/git.aliases.bash +aliases/available/vim.aliases.bash + +# completions +# +completion/available/apm.completion.bash +completion/available/awless.completion.bash +completion/available/brew.completion.bash +completion/available/cargo.completion.bash +completion/available/composer.completion.bash +completion/available/conda.completion.bash +completion/available/consul.completion.bash +completion/available/django.completion.bash +completion/available/dmidecode.completion.bash +completion/available/docker-machine.completion.bash +completion/available/docker.completion.bash +completion/available/gcloud.completion.bash +completion/available/gem.completion.bash +completion/available/github-cli.completion.bash +completion/available/go.completion.bash +completion/available/helm.completion.bash +completion/available/jungle.completion.bash +completion/available/knife.completion.bash +completion/available/kontena.completion.bash +completion/available/kubectl.completion.bash +completion/available/lerna.completion.bash +completion/available/minikube.completion.bash +completion/available/ngrok.completion.bash +completion/available/notify-send.completion.bash +completion/available/npm.completion.bash +completion/available/packer.completion.bash +completion/available/pip.completion.bash +completion/available/pip3.completion.bash +completion/available/pipenv.completion.bash +completion/available/pipx.completion.bash +completion/available/rustup.completion.bash +completion/available/sdkman.completion.bash +completion/available/vault.completion.bash +completion/available/vuejs.completion.bash + +# plugins +# +plugins/available/alias-completion.plugin.bash +plugins/available/basher.plugin.bash +plugins/available/cmd-returned-notify.plugin.bash +plugins/available/docker-machine.plugin.bash +plugins/available/git.plugin.bash +plugins/available/go.plugin.bash +plugins/available/goenv.plugin.bash +plugins/available/history-search.plugin.bash +plugins/available/history-substring-search.plugin.bash +plugins/available/history.plugin.bash +plugins/available/xterm.plugin.bash + +# tests +# +test/plugins/alias-completion.plugin.bats +test/test_helper.bash # themes # @@ -48,67 +111,7 @@ themes/modern themes/powerline themes/purity -# plugins -# -plugins/available/alias-completion.plugin.bash -plugins/available/basher.plugin.bash -plugins/available/cmd-returned-notify.plugin.bash -plugins/available/docker-machine.plugin.bash -plugins/available/git.plugin.bash -plugins/available/go.plugin.bash -plugins/available/goenv.plugin.bash -plugins/available/history-search.plugin.bash -plugins/available/history-substring-search.plugin.bash -plugins/available/history.plugin.bash -plugins/available/xterm.plugin.bash - -# completions -# -completion/available/apm.completion.bash -completion/available/awless.completion.bash -completion/available/brew.completion.bash -completion/available/cargo.completion.bash -completion/available/composer.completion.bash -completion/available/conda.completion.bash -completion/available/consul.completion.bash -completion/available/django.completion.bash -completion/available/dmidecode.completion.bash -completion/available/docker.completion.bash -completion/available/docker-machine.completion.bash -completion/available/gcloud.completion.bash -completion/available/gem.completion.bash -completion/available/go.completion.bash -completion/available/github-cli.completion.bash -completion/available/helm.completion.bash -completion/available/jungle.completion.bash -completion/available/knife.completion.bash -completion/available/kontena.completion.bash -completion/available/kubectl.completion.bash -completion/available/lerna.completion.bash -completion/available/minikube.completion.bash -completion/available/notify-send.completion.bash -completion/available/ngrok.completion.bash -completion/available/npm.completion.bash -completion/available/packer.completion.bash -completion/available/pip.completion.bash -completion/available/pip3.completion.bash -completion/available/pipenv.completion.bash -completion/available/pipx.completion.bash -completion/available/rustup.completion.bash -completion/available/vault.completion.bash -completion/available/sdkman.completion.bash -completion/available/vuejs.completion.bash - -# aliases -# -aliases/available/dnf.aliases.bash -aliases/available/vim.aliases.bash -aliases/available/git.aliases.bash - -# tests -test/plugins/alias-completion.plugin.bats -test/test_helper.bash - # vendor init files +# vendor/.gitattributes vendor/init.d diff --git a/hooks/check-clean-files-txt.sh b/hooks/check-clean-files-txt.sh new file mode 100755 index 00000000..a37ee777 --- /dev/null +++ b/hooks/check-clean-files-txt.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +file=$1 +# Should only be run on clean_files.txt +if [ "$file" != "clean_files.txt" ]; then + echo "Please run this script on clean_files.txt only!" + exit 1 +fi + +function compare_lines() { + prev="" + while read -r line; do + # Skip unimportant lines + [[ $line =~ "#" ]] && continue + [[ $line == "" ]] && continue + # Actual check + if [[ $prev > $line ]]; then + echo "$line should be before $prev" + exit 1 + fi + prev=$line + done <<< "$1" +} + +# We compare using the legacy way +shopt -s compat31 + +# Test root files +compare_lines "$(grep -v "/" "$file")" + +# Test root directory +compare_lines "$(grep "/$" "$file")" + +# Test non root directories +compare_lines "$(grep "/." "$file")" + +shopt -u compat31 +# Yay, all good! +exit 0