59 lines
1.1 KiB
Bash
Executable File
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
|