mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
* build: Add xtask automation for binding version management Introduces a dedicated xtask crate that keeps language binding versions in sync with the core regorus crate, following the workflow pattern used by rust-analyzer, gitoxide, and ripgrep. Key features: - Git-based change detection: compares binding source files against a base ref (merge-base with origin/main by default) plus unstaged/ untracked files to identify which bindings have been modified - SemVer-aware bumping: binding edits trigger a minor version increment (e.g. 0.5.1 → 0.6.0) under pre-1.0 semantics, signaling potential breaking changes; clean bindings simply align to the root version - Multi-language support: updates Cargo manifests (Rust FFI, Java, Python, WASM, Ruby), Maven pom.xml (Java), Ruby version constants, and C# project files in a single pass - CI integration: --check mode fails fast when manifests are out of sync, ensuring pre-commit and release-plz workflows catch stale versions before merge Integration points: - release-plz.toml: runs cargo xtask bindings --base-ref origin/main after bumping the root crate, so binding versions are updated atomically during the release process - scripts/pre-commit: invokes cargo xtask bindings --check to block commits that would leave bindings out of sync - .cargo/config.toml: defines cargo xtask alias for convenience Documentation includes inline examples showing how version bumps behave when bindings are ahead/behind the root, and notes that the minor field acts as the major version under SemVer 0.y.z initial development phase. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com> * build: refresh xtask tooling, workflows, and locks - cargo xtask bindings: keep the binding version-sync pipeline intact - cargo xtask update-deps: new helper to regenerate workspace/binding Cargo.lock files - workflows: auto-detect the Java jar version in CI and temporarily disable the Ruby workflow - lock files: refresh root + binding snapshots after the dependency sweep Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com> --------- Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
29 lines
842 B
Bash
Executable File
29 lines
842 B
Bash
Executable File
#!/bin/bash
|
|
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
set -eo pipefail
|
|
|
|
if [ -f Cargo.toml ]; then
|
|
# Ensure that all targets can be built.
|
|
cargo build -r --all-targets
|
|
|
|
#Ensure that code is correctly formatted.
|
|
cargo fmt --check || (echo "Run cargo fmt to fix formatting" && exit 1)
|
|
|
|
# Ensure that clippy warnings are addressed.
|
|
cargo clippy --all-targets --no-deps -- -Dwarnings
|
|
|
|
# Ensure binding versions reflect the staged changes.
|
|
cargo xtask bindings --check
|
|
|
|
# Ensure that all modifications are included.
|
|
# TODO refine status checking.
|
|
if git status -s | grep -e "MM " -e "??" -e "AM " -e " M " > /dev/null; then
|
|
printf "\nUnstaged changes found:\n"
|
|
git status -s | grep -e "MM " -e "??" -e "AM " -e " M "
|
|
echo "Stage them and try again"
|
|
exit 1
|
|
fi
|
|
fi
|