publish-rust.sh 973 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. library_path="${1:-}"
  4. level="${2:-}"
  5. dry_run="${DRY_RUN:-false}"
  6. if [[ -z "$library_path" || -z "$level" ]]; then
  7. echo "Usage: $0 <library_path> <version-level>"
  8. echo "Example: $0 clients/rust patch"
  9. exit 1
  10. fi
  11. cd "$library_path"
  12. # Run cargo-release
  13. if [[ "$dry_run" != "true" ]]; then
  14. cargo release "$level" --no-push --no-tag --no-confirm --execute
  15. else
  16. cargo release "$level"
  17. exit 0
  18. fi
  19. # Extract crate name and version using cargo metadata
  20. metadata=$(cargo metadata --no-deps --format-version 1)
  21. crate_name=$(echo "$metadata" | jq -r '.packages[0].name')
  22. new_version=$(echo "$metadata" | jq -r '.packages[0].version')
  23. # CI output
  24. if [[ -n "${CI:-}" ]]; then
  25. echo "new_version=${new_version}" >> "$GITHUB_OUTPUT"
  26. fi
  27. # Rebuild commit and tag
  28. git reset --soft HEAD~1
  29. git commit -am "Publish ${crate_name} v${new_version}"
  30. git tag -a "${crate_name}@v${new_version}" -m "${crate_name} v${new_version}"