sailfish/scripts/count-dependencies.sh

59 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
IFS=$'\n'
PACKAGES=("sailfish" "sailfish-macros" "sailfish-compiler")
git-root () {
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
cd `git rev-parse --show-toplevel`;
fi
}
get_dependencies() {
cargo tree -p "$1" | while read line; do
dev_dependencies_re="\[dev-dependencies\]"
crate_re="[a-zA-Z0-9_-]+ v[^ ]+"
if [[ "$line" =~ $crate_re ]]; then
echo ${BASH_REMATCH[0]}
continue
fi
if [[ "$line" =~ $dev_dependencies_re ]]; then
break
fi
done
}
remove_packages() {
local found
for dep in $@; do
found=0
for pkg in ${PACKAGES[@]}; do
pat="$pkg v[^ ]"
if [[ "$dep" =~ $pat ]]; then
found=1
break
fi
done
if [[ $found == 0 ]]; then
echo $dep
fi
done
}
# go to root directory
cd `git rev-parse --show-toplevel`
deps=()
for pkg in ${PACKAGES[@]}; do
deps+=( `get_dependencies $pkg` )
done
deps=( $(printf "%s\n" "${deps[@]}" | sort -u) )
remove_packages ${deps[*]} |wc -l