_bashbrew-cat-sorted.sh 867 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. )"
  8. set -- $images
  9. declare -A seenGlobal=()
  10. first=1
  11. for img; do
  12. if [ -n "$first" ]; then
  13. first=
  14. else
  15. echo; echo
  16. fi
  17. if [ "$#" -gt 1 ]; then
  18. echo "# $img"
  19. fi
  20. repo="${img%:*}"
  21. if [ -z "${seenGlobal["$repo"]:-}" ]; then
  22. bashbrew cat --format '{{ printf "%s\n" (.Manifest.Global.ClearDefaults defaults) }}' "$img"
  23. seenGlobal["$repo"]="$img"
  24. else
  25. echo "# (see also ${seenGlobal["$repo"]} above)"
  26. fi
  27. bashbrew list --uniq "$img" \
  28. | sort -V \
  29. | xargs -r bashbrew cat --format '
  30. {{- range $e := .TagEntries -}}
  31. {{- printf "\n%s\n" ($e.ClearDefaults $.Manifest.Global) -}}
  32. {{- end -}}
  33. '
  34. done