dependencies 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env bash
  2. # Copyright (C) 2017 Andrew Robbins <contact@andrewrobbins.info>
  3. #
  4. # This program is free software: you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by
  6. # the Free Software Foundation, either version 3 of the License, or
  7. # (at your option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # GNU General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU General Public License
  15. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. arguments() {
  17. tool_arguments_targets "$tool" "$@"
  18. }
  19. usage() {
  20. tool_usage_actions "$tool" 'print'
  21. tool_usage_arguments "$tool" "$@"
  22. }
  23. print() {
  24. local distro="$1"
  25. local arch="$(uname -i || uname -m)"
  26. local tool_path="$(tool_path "$tool")"
  27. if [[ -z "$arch" ]]; then
  28. printf '\n%s\n' 'uname(1) produced no output. Exiting' 1>&2
  29. return 1
  30. fi
  31. dependencies_host_supported "$distro" "$arch" || return
  32. local -a dependencies
  33. for dependency_file in "$tool_path/$CONFIGS/$distro/$arch"/*; do
  34. if [[ "${dependency_file##*/}" != 'README' ]]; then
  35. local -i origin="${#dependencies[@]}"
  36. mapfile -tO "$origin" dependencies < "$dependency_file"
  37. else
  38. continue
  39. fi
  40. done
  41. local -a sorted
  42. mapfile -t sorted < <(printf '%s\n' "${dependencies[@]}" | sort | uniq)
  43. dependencies_print "$distro" "${sorted[@]}"
  44. }