_bashbrew-cat-sorted.sh 975 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env bash
  2. set -Eeuo pipefail
  3. # a mimic of "bashbrew cat" which should sort slightly more deterministically (so even full-order-changing PRs should have reasonable diffs)
  4. images="$(
  5. bashbrew list --repos --uniq "$@" \
  6. | sort -uV \
  7. | xargs -r bashbrew list --repos --uniq --build-order
  8. )"
  9. set -- $images
  10. declare -A seenGlobal=()
  11. first=1
  12. for img; do
  13. if [ -n "$first" ]; then
  14. first=
  15. else
  16. echo; echo
  17. fi
  18. if [ "$#" -gt 1 ]; then
  19. echo "# $img"
  20. fi
  21. repo="${img%:*}"
  22. if [ -z "${seenGlobal["$repo"]:-}" ]; then
  23. bashbrew cat --format '{{ printf "%s\n" (.Manifest.Global.ClearDefaults defaults) }}' "$img"
  24. seenGlobal["$repo"]="$img"
  25. else
  26. echo "# (see also ${seenGlobal["$repo"]} above)"
  27. fi
  28. bashbrew list --uniq "$img" \
  29. | sort -V \
  30. | xargs -r bashbrew list --uniq --build-order \
  31. | xargs -r bashbrew cat --format '
  32. {{- range $e := .TagEntries -}}
  33. {{- printf "\n%s\n" ($e.ClearDefaults $.Manifest.Global) -}}
  34. {{- end -}}
  35. '
  36. done