get_revision.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/bin/bash
  2. # This script extracts the revision of a specific dependency from the Package.resolved file (Only support v3).
  3. # Usage: ./get_revision.sh <dependency_name>
  4. # Output: revision of the dependency
  5. # A `realpath` alternative using the default C implementation.
  6. filepath() {
  7. [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
  8. }
  9. REPO_ROOT="$(dirname $(dirname $(dirname $(filepath $0))))"
  10. cd $REPO_ROOT
  11. # Ensure a dependency name is provided as an argument
  12. if [[ $# -lt 1 ]]; then
  13. echo "Usage: $0 <dependency_name>"
  14. exit 1
  15. fi
  16. DEPENDENCY_NAME="$1"
  17. PACKAGE_RESOLVED_PATH="Package.resolved"
  18. # Check if the Package.resolved file exists
  19. if [[ ! -f "$PACKAGE_RESOLVED_PATH" ]]; then
  20. echo "Error: $PACKAGE_RESOLVED_PATH file not found!" >&2
  21. exit 1
  22. fi
  23. # Extract the revision using jq
  24. REVISION=$(jq -r --arg name "$DEPENDENCY_NAME" '
  25. .pins[]?
  26. | select(.identity == $name)
  27. | .state.revision
  28. ' "$PACKAGE_RESOLVED_PATH")
  29. # Check if a revision was found
  30. if [[ -z "$REVISION" ]]; then
  31. echo "No revision found for dependency: $DEPENDENCY_NAME" >&2
  32. exit 1
  33. else
  34. echo "$REVISION"
  35. fi