mirror of
https://github.com/rancher/os.git
synced 2025-06-24 14:01:34 +00:00
56 lines
1.3 KiB
Bash
56 lines
1.3 KiB
Bash
|
#!/bin/bash
|
||
|
set -e
|
||
|
|
||
|
cd $(dirname $0)/..
|
||
|
|
||
|
package=$(go list)
|
||
|
prefix="${package}/vendor"
|
||
|
require="github.com/stretchr/testify/require" # the only test import
|
||
|
|
||
|
imports=( )
|
||
|
importsLen=${#imports[@]}
|
||
|
|
||
|
collectImports() {
|
||
|
imports=( $(GOOS=linux go list -f '{{join .Deps "\n"}}' | egrep "^${prefix}/" | sed s%"^${package}.*/vendor/"%./vendor/%) )
|
||
|
imports=(
|
||
|
"${imports[@]}" "./vendor/${require}"
|
||
|
$(GOOS=linux go list -f '{{join .Deps "\n"}}' "${prefix}/${require}" | egrep "^${prefix}/" | sed s%"^${package}.*/vendor/"%./vendor/%)
|
||
|
)
|
||
|
echo importsLen: $importsLen
|
||
|
echo collected imports: ${#imports[@]}
|
||
|
}
|
||
|
|
||
|
nonImports() {
|
||
|
while read path; do
|
||
|
skip=0
|
||
|
for i in "${imports[@]}"; do
|
||
|
[[ "${i}" == "${path}" || ${i} = ${path}/* ]] && skip=1 && break
|
||
|
done
|
||
|
[ "$skip" == "0" ] && echo ${path}
|
||
|
done
|
||
|
}
|
||
|
|
||
|
collectImports
|
||
|
|
||
|
while [ ${#imports[@]} != ${importsLen} ]; do
|
||
|
importsLen=${#imports[@]}
|
||
|
echo '=====> Collected imports'
|
||
|
for i in "${imports[@]}"; do
|
||
|
echo ${i}
|
||
|
done
|
||
|
|
||
|
echo '=====> Removing unused packages'
|
||
|
find ./vendor -type d | nonImports | xargs -I{} rm -rf {}
|
||
|
|
||
|
echo '=====> Removing empty dirs'
|
||
|
emptyDirs=( $(find ./vendor -type d -empty) )
|
||
|
while [ ${#emptyDirs[@]} -gt 0 ]; do
|
||
|
rmdir ${emptyDirs[@]}
|
||
|
emptyDirs=( $(find ./vendor -type d -empty) )
|
||
|
done
|
||
|
|
||
|
collectImports
|
||
|
done
|
||
|
|
||
|
echo '=====> Done!'
|