-
Notifications
You must be signed in to change notification settings - Fork 1.8k
fix: version sync workspace #615
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| "@googleworkspace/cli": patch | ||
| --- | ||
|
|
||
| Fix version-sync script and bump CLI crate version to 0.21.0 | ||
|
|
||
| The `version-sync.sh` script was updating the root `Cargo.toml` which no longer has a `[package]` section after the workspace refactor. Updated to target `crates/google-workspace-cli/Cargo.toml`. Also syncs the CLI crate version to 0.21.0 to match `package.json`. |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,5 +1,6 @@ | ||||||||||||||||||||||||||||||||||||||||||||||
| #!/usr/bin/env bash | ||||||||||||||||||||||||||||||||||||||||||||||
| # Syncs the version from package.json into Cargo.toml, updates Cargo.lock, and regenerates skills. | ||||||||||||||||||||||||||||||||||||||||||||||
| # Syncs the version from package.json into all workspace Cargo.toml files, | ||||||||||||||||||||||||||||||||||||||||||||||
| # updates Cargo.lock, and regenerates skills. | ||||||||||||||||||||||||||||||||||||||||||||||
| # Used by changesets/action as a custom version command. | ||||||||||||||||||||||||||||||||||||||||||||||
| set -euo pipefail | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -9,14 +10,17 @@ pnpm changeset version | |||||||||||||||||||||||||||||||||||||||||||||
| # Read the new version from package.json | ||||||||||||||||||||||||||||||||||||||||||||||
| VERSION=$(node -p "require('./package.json').version") | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| # Update Cargo.toml version field | ||||||||||||||||||||||||||||||||||||||||||||||
| # Update version in all workspace crate Cargo.toml files | ||||||||||||||||||||||||||||||||||||||||||||||
| # Uses awk to only change the version under [package], not other sections | ||||||||||||||||||||||||||||||||||||||||||||||
| awk -v ver="$VERSION" ' | ||||||||||||||||||||||||||||||||||||||||||||||
| /^\[package\]/ { in_pkg=1 } | ||||||||||||||||||||||||||||||||||||||||||||||
| /^\[/ && !/^\[package\]/ { in_pkg=0 } | ||||||||||||||||||||||||||||||||||||||||||||||
| in_pkg && /^version = / { $0 = "version = \"" ver "\"" } | ||||||||||||||||||||||||||||||||||||||||||||||
| { print } | ||||||||||||||||||||||||||||||||||||||||||||||
| ' Cargo.toml > Cargo.toml.tmp && mv Cargo.toml.tmp Cargo.toml | ||||||||||||||||||||||||||||||||||||||||||||||
| for cargo_toml in crates/*/Cargo.toml; do | ||||||||||||||||||||||||||||||||||||||||||||||
| tmp=$(mktemp) | ||||||||||||||||||||||||||||||||||||||||||||||
| awk -v ver="$VERSION" ' | ||||||||||||||||||||||||||||||||||||||||||||||
| /^\[package\]/ { in_pkg=1 } | ||||||||||||||||||||||||||||||||||||||||||||||
| /^\[/ && !/^\[package\]/ { in_pkg=0 } | ||||||||||||||||||||||||||||||||||||||||||||||
| in_pkg && /^version = / { $0 = "version = \"" ver "\"" } | ||||||||||||||||||||||||||||||||||||||||||||||
| { print } | ||||||||||||||||||||||||||||||||||||||||||||||
| ' "$cargo_toml" > "$tmp" && mv "$tmp" "$cargo_toml" | ||||||||||||||||||||||||||||||||||||||||||||||
| done | ||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+15
to
+23
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The use of To ensure temporary files are always cleaned up, it's best practice to wrap the file modification logic in a subshell with a
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| # Update Cargo.lock to match | ||||||||||||||||||||||||||||||||||||||||||||||
| cargo generate-lockfile | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -30,4 +34,5 @@ fi | |||||||||||||||||||||||||||||||||||||||||||||
| cargo run -- generate-skills --output-dir skills | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| # Stage the changed files so changesets/action commits them | ||||||||||||||||||||||||||||||||||||||||||||||
| git add Cargo.toml Cargo.lock flake.nix flake.lock skills/ | ||||||||||||||||||||||||||||||||||||||||||||||
| git add crates/*/Cargo.toml Cargo.lock flake.nix flake.lock skills/ | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current
awkscript is brittle as it assumes a specific formatting for theversionkey inCargo.toml(version = ...). TOML allows for different spacing, such asversion=...orversion = .... The script will fail to update the version if the spacing is different, which could lead to an inconsistent state in the repository during the release process. It's better to make the pattern matching more flexible to handle optional whitespace.