Merge pull request #1873 from NoahGorny/improve-clean-files-txt

Add clean_files.txt sorting hook
pull/1876/head
Noah Gorny 2021-04-23 00:19:05 +03:00 committed by GitHub
commit 940739a8a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 113 additions and 66 deletions

View File

@ -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

View File

@ -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

View File

@ -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