Last active
April 3, 2018 18:28
-
-
Save codrcodz/ffe6004d8e73adf55fb862c42af9628d to your computer and use it in GitHub Desktop.
Finds all the dependencies of a packages, and its deps' deps, and those deps' deps...
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
main_pkg="${1}"; | |
arch="$(uname -i)" | |
deps_list=( ${main_pkg} ); | |
declare -a master_pkg_list; | |
declare -a deps_list_additions; | |
echo "[INFO] Finding deps for main_pkg: ${main_pkg}"; | |
while true; do | |
for dep in ${deps_list[@]}; do | |
if [[ "${dep}" != "${main_pkg}" ]]; then | |
echo "[INFO] Finding deps for dep: ${dep}"; | |
fi | |
dep_deps=( $(yum deplist ${dep} | grep -oP "(?<=(provider:\s)).*\.(${arch}|noarch)" | sort -u;) ); | |
deps_list_additions+=( ${dep_deps[@]} ); | |
deps_list_additions=( $(for item in ${deps_list_additions[@]}; do echo ${item}; done | sort -u) ); | |
done | |
dep_count=$(for item in ${master_pkg_list[@]} ${deps_list_additions[@]}; do echo "${item}"; done | sort -u | wc -l;); | |
if [[ "${#master_pkg_list[@]}" != "${dep_count}" ]]; then | |
deps_list=( | |
$( | |
for item in ${deps_list_additions[@]}; do | |
echo "${master_pkg_list[@]}" | grep "${item}" > /dev/null || echo "${item}"; | |
done | sort -u | |
) | |
); | |
master_pkg_list=( $(for item in ${master_pkg_list[@]} ${deps_list_additions[@]}; do echo "${item}"; done | sort -u;) ); | |
deps_list_additions=(); | |
else | |
echo "[INFO] Found the following packages:" | |
for pkg in ${main_pkg} ${master_pkg_list[@]}; do | |
echo "${pkg}"; | |
done | |
exit 0; | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment