mirror of
https://github.com/rancher/os.git
synced 2025-06-21 20:47:04 +00:00
56 lines
1.3 KiB
Bash
Executable File
56 lines
1.3 KiB
Bash
Executable File
#!/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!'
|