get_revision.sh 1.1 KB

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