Skip to content

Commit ca9ab44

Browse files
committed
scripts: bashify publish scripts
1 parent 85a95b0 commit ca9ab44

File tree

3 files changed

+78
-4
lines changed

3 files changed

+78
-4
lines changed

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,29 @@
77
"generate:clients": "codama run --all",
88
"js:format": "cargo make --env MANIFEST_DIR=./clients/js js-format ",
99
"js:lint": "cargo make --env MANIFEST_DIR=clients/js js-lint",
10-
"js:publish": "tsx ./scripts/js.mts publish clients/js",
10+
"js:publish": "./scripts/publish-js.sh clients/js",
1111
"js:test": "cargo make --env MANIFEST_DIR=clients/js js-test",
1212
"rust:format": "cargo make --env MANIFEST_DIR=clients/rust rust-format",
1313
"rust:lint": "cargo make --env MANIFEST_DIR=clients/rust rust-lint",
1414
"rust:lint:clippy": "cargo make --env MANIFEST_DIR=clients/rust rust-lint-clippy",
1515
"rust:lint:docs": "cargo make --env MANIFEST_DIR=clients/rust rust-lint-docs",
1616
"rust:lint:features": "cargo make --env MANIFEST_DIR=clients/rust rust-lint-features",
17-
"rust:publish": "tsx ./scripts/rust.mts publish clients/rust",
17+
"rust:publish": "./scripts/publish-rust.sh clients/rust",
1818
"rust:test": "cargo make --env MANIFEST_DIR=clients/rust rust-test",
1919
"interface:format": "cargo make --env MANIFEST_DIR=interface rust-format",
2020
"interface:lint": "cargo make --env MANIFEST_DIR=interface rust-lint",
2121
"interface:lint:clippy": "cargo make --env MANIFEST_DIR=interface rust-lint-clippy",
2222
"interface:lint:docs": "cargo make --env MANIFEST_DIR=interface rust-lint-docs",
2323
"interface:lint:features": "cargo make --env MANIFEST_DIR=interface rust-lint-features",
24-
"interface:publish": "tsx ./scripts/rust.mts publish interface",
24+
"interface:publish": "./scripts/publish-rust.sh interface",
2525
"interface:test": "cargo make --env MANIFEST_DIR=interface rust-test",
2626
"interface:wasm": "cargo make --env MANIFEST_DIR=interface rust-build-wasm",
2727
"program:format": "cargo make --env MANIFEST_DIR=program rust-format",
2828
"program:lint": "cargo make --env MANIFEST_DIR=program rust-lint",
2929
"program:lint:clippy": "cargo make --env MANIFEST_DIR=program rust-lint-clippy",
3030
"program:lint:docs": "cargo make --env MANIFEST_DIR=program rust-lint-docs",
3131
"program:lint:features": "cargo make --env MANIFEST_DIR=program rust-lint-features",
32-
"program:publish": "tsx ./scripts/rust.mts publish program",
32+
"program:publish": "./scripts/publish-rust.sh program",
3333
"program:build": "cargo make --env MANIFEST_DIR=program rust-build-sbf",
3434
"program:test": "cargo make --env MANIFEST_DIR=program rust-test-sbf",
3535
"template:upgrade": "tsx ./scripts/helpers/upgrade-template.ts"

scripts/publish-js.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
library_path="${1:-}"
5+
level="${2:-}"
6+
tag="${3:-latest}"
7+
dry_run="${DRY_RUN:-false}"
8+
9+
if [[ -z "$library_path" || -z "$level" ]]; then
10+
echo "Usage: $0 <library_path> <version-level> [tag]"
11+
echo "Example: $0 clients/js patch beta"
12+
exit 1
13+
fi
14+
15+
cd "$library_path"
16+
pnpm install
17+
18+
# Build version args
19+
version_args=(--no-git-tag-version)
20+
if [[ "$level" == pre* ]]; then
21+
version_args+=(--preid "$tag")
22+
fi
23+
24+
# Bump version and capture new version
25+
new_version=$(pnpm version "$level" "${version_args[@]}" | tail -n1 | sed 's/^v//;s/\r$//')
26+
27+
# CI output
28+
if [[ -n "${CI:-}" ]]; then
29+
echo "new_version=${new_version}" >> "$GITHUB_OUTPUT"
30+
fi
31+
32+
# Publish package
33+
pnpm publish --no-git-checks --tag "$tag"
34+
35+
# Git commit and tag
36+
git commit -am "Publish JS client v${new_version}"
37+
git tag -a "js@v${new_version}" -m "JS client v${new_version}"

scripts/publish-rust.sh

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

0 commit comments

Comments
 (0)