mirror of
https://github.com/bndr/pipreqs.git
synced 2025-06-06 03:25:21 +00:00
pipreqs: add a script to detect duplicate mappings
This commit is contained in:
parent
c12ada8542
commit
73192af5f3
58
pipreqs/lint_mapping.sh
Executable file
58
pipreqs/lint_mapping.sh
Executable file
@ -0,0 +1,58 @@
|
||||
#!/usr/bin/bash
|
||||
# ------------------------------------------------------------------------------
|
||||
# Author : Michael Wurm <wurm.michael95@gmail.com>
|
||||
# Description : Formats mapping to lowercase and removes duplicate
|
||||
# entries from the mappings file.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Script setup
|
||||
|
||||
SCRIPT_PATH=$(cd -- "$(dirname -- "$(readlink -f "${BASH_SOURCE[0]}" || ${BASH_SOURCE[0]})")" &>/dev/null && pwd)
|
||||
cd "$SCRIPT_PATH"
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Functions
|
||||
|
||||
convert_file_to_lowercase() {
|
||||
FILE_MIXED=mapping
|
||||
FILE_LOWER=mapping.new
|
||||
|
||||
tr '[:upper:]' '[:lower:]' <$FILE_MIXED >$FILE_LOWER
|
||||
|
||||
mv $FILE_LOWER $FILE_MIXED
|
||||
echo "Converted entire file to lowercase"
|
||||
}
|
||||
|
||||
filter_duplicates() {
|
||||
# Loop through the original file line by line.
|
||||
# Write each line into a new file.
|
||||
# Skip lines with a duplicate mapping, i.e. abc:abc
|
||||
|
||||
MAPPING_OLD="$SCRIPT_PATH/mapping"
|
||||
MAPPING_NEW="$SCRIPT_PATH/mapping.new"
|
||||
|
||||
i=0
|
||||
found=0
|
||||
while IFS= read -r line; do
|
||||
((i = i + 1))
|
||||
mapelements=($(echo "$line" | tr ':' '\n'))
|
||||
if [ "${mapelements[0]}" == "${mapelements[1]}" ]; then
|
||||
echo "Found a duplicate mapping in line #$i: '$line'"
|
||||
((found = found + 1))
|
||||
continue
|
||||
fi
|
||||
echo "$line" >>"$MAPPING_NEW"
|
||||
done <"$MAPPING_OLD"
|
||||
|
||||
echo "---"
|
||||
mv "$MAPPING_NEW" "$MAPPING_OLD"
|
||||
echo "Removed $found duplicates."
|
||||
}
|
||||
|
||||
main() {
|
||||
convert_file_to_lowercase
|
||||
filter_duplicates
|
||||
}
|
||||
|
||||
main
|
Loading…
x
Reference in New Issue
Block a user