From 8f151334c30c071f29a577269f7091c6b521a491 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Wed, 8 May 2024 14:44:36 +0200 Subject: [PATCH 1/2] Set the crate version centrally via the workspace --- Cargo.toml | 3 +++ packages/check/Cargo.toml | 2 +- packages/crypto/Cargo.toml | 2 +- packages/derive/Cargo.toml | 2 +- packages/schema-derive/Cargo.toml | 2 +- packages/schema/Cargo.toml | 2 +- packages/std/Cargo.toml | 2 +- packages/storage/Cargo.toml | 2 +- packages/vm/Cargo.toml | 2 +- 9 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 311069d0cf..f16fe6fa2d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,6 @@ exclude = ["contracts"] # Resolver has to be set explicitely in workspaces # due to https://github.com/rust-lang/cargo/issues/9956 resolver = "2" + +[workspace.package] +version = "1.4.4" diff --git a/packages/check/Cargo.toml b/packages/check/Cargo.toml index 9e0beb9373..0b3a5176c9 100644 --- a/packages/check/Cargo.toml +++ b/packages/check/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-check" -version = "1.4.4" +version.workspace = true authors = ["Mauro Lacy "] edition = "2021" description = "A CLI tool for verifying CosmWasm smart contracts" diff --git a/packages/crypto/Cargo.toml b/packages/crypto/Cargo.toml index abd06a803d..9267e93e4a 100644 --- a/packages/crypto/Cargo.toml +++ b/packages/crypto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-crypto" -version = "1.4.4" +version.workspace = true authors = ["Mauro Lacy "] edition = "2021" description = "Crypto bindings for cosmwasm contracts" diff --git a/packages/derive/Cargo.toml b/packages/derive/Cargo.toml index f14e35aac3..f0722ec99c 100644 --- a/packages/derive/Cargo.toml +++ b/packages/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-derive" -version = "1.4.4" +version.workspace = true authors = ["Simon Warta "] edition = "2021" description = "A package for auto-generated code used for CosmWasm contract development. This is shipped as part of cosmwasm-std. Do not use directly." diff --git a/packages/schema-derive/Cargo.toml b/packages/schema-derive/Cargo.toml index 52ca88226a..97bc6e8a0b 100644 --- a/packages/schema-derive/Cargo.toml +++ b/packages/schema-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-schema-derive" -version = "1.4.4" +version.workspace = true authors = ["Tomasz Kurcz "] edition = "2021" description = "Derive macros for cosmwasm-schema" diff --git a/packages/schema/Cargo.toml b/packages/schema/Cargo.toml index ea0b450996..1ed88e6641 100644 --- a/packages/schema/Cargo.toml +++ b/packages/schema/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-schema" -version = "1.4.4" +version.workspace = true authors = ["Simon Warta ", "Ethan Frey "] edition = "2021" description = "A dev-dependency for CosmWasm contracts to generate JSON Schema files." diff --git a/packages/std/Cargo.toml b/packages/std/Cargo.toml index f406544050..2e0657dc08 100644 --- a/packages/std/Cargo.toml +++ b/packages/std/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-std" -version = "1.4.4" +version.workspace = true authors = ["Ethan Frey "] edition = "2021" description = "Standard library for Wasm based smart contracts on Cosmos blockchains" diff --git a/packages/storage/Cargo.toml b/packages/storage/Cargo.toml index a73c926fd4..a4ec7ad2c6 100644 --- a/packages/storage/Cargo.toml +++ b/packages/storage/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-storage" -version = "1.4.4" +version.workspace = true authors = ["Ethan Frey "] edition = "2021" description = "CosmWasm library with useful helpers for Storage patterns" diff --git a/packages/vm/Cargo.toml b/packages/vm/Cargo.toml index f9737d1d4d..be1ef746af 100644 --- a/packages/vm/Cargo.toml +++ b/packages/vm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-vm" -version = "1.4.4" +version.workspace = true authors = ["Ethan Frey "] edition = "2021" description = "VM bindings to run cosmwams contracts" From 6129a212dc7736d9eaf84d4587222acf6df564cc Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Wed, 8 May 2024 14:57:34 +0200 Subject: [PATCH 2/2] Setup cargo-release --- CHANGELOG.md | 4 +++ Cargo.toml | 5 ++++ devtools/release_checks.sh | 11 +++++++ devtools/set_version.sh | 61 -------------------------------------- packages/vm/Cargo.toml | 12 ++++++++ 5 files changed, 32 insertions(+), 61 deletions(-) create mode 100755 devtools/release_checks.sh delete mode 100755 devtools/set_version.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 4255a0967d..1b5048780c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + ## [Unreleased] ## [1.4.4] @@ -1930,6 +1932,8 @@ Some main points: All future Changelog entries will reference this base + + [unreleased]: https://github.com/CosmWasm/cosmwasm/compare/v1.4.4...HEAD [1.4.4]: https://github.com/CosmWasm/cosmwasm/compare/v1.4.3...v1.4.4 [1.4.3]: https://github.com/CosmWasm/cosmwasm/compare/v1.4.2...v1.4.3 diff --git a/Cargo.toml b/Cargo.toml index f16fe6fa2d..ec8bdbc67a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,3 +8,8 @@ resolver = "2" [workspace.package] version = "1.4.4" + +[workspace.metadata.release] +shared-version = true +tag-message = "chore: Release cosmwasm v{{version}}" +tag-name = "v{{version}}" diff --git a/devtools/release_checks.sh b/devtools/release_checks.sh new file mode 100755 index 0000000000..3a53e932f8 --- /dev/null +++ b/devtools/release_checks.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Move to the workspace root +WORKSPACE_PATH=$(dirname $(cargo locate-project --workspace --message-format=plain)) +cd $WORKSPACE_PATH + +cargo build + +for contract_dir in contracts/*/; do + (cd "$contract_dir" && cargo build) +done diff --git a/devtools/set_version.sh b/devtools/set_version.sh deleted file mode 100755 index 5dd6bc9034..0000000000 --- a/devtools/set_version.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -set -o errexit -o nounset -o pipefail -command -v shellcheck >/dev/null && shellcheck "$0" - -gnused="$(command -v gsed || echo sed)" - -function print_usage() { - echo "Usage: $0 NEW_VERSION" - echo "" - echo "e.g. $0 0.8.0" -} - -if [ "$#" -ne 1 ]; then - print_usage - exit 1 -fi - -# Check repo -SCRIPT_DIR="$(realpath "$(dirname "$0")")" -if [[ "$(realpath "$SCRIPT_DIR/..")" != "$(pwd)" ]]; then - echo "Script must be called from the repo root" - exit 2 -fi - -# Ensure repo is not dirty -CHANGES_IN_REPO=$(git status --porcelain) -if [[ -n "$CHANGES_IN_REPO" ]]; then - echo "Repository is dirty. Showing 'git status' and 'git --no-pager diff' for debugging now:" - git status && git --no-pager diff - exit 3 -fi - -NEW="$1" -OLD=$("$gnused" -n -e 's/^version[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' packages/std/Cargo.toml) -echo "Updating old version $OLD to new version $NEW ..." - -FILES_MODIFIED=() - -for package_dir in packages/*/; do - CARGO_TOML="$package_dir/Cargo.toml" - # The `version = "1.0.0"` cases - "$gnused" -i -e "s/version[[:space:]]*=[[:space:]]*\"$OLD\"/version = \"$NEW\"/" "$CARGO_TOML" - # The `version = "=1.0.0"` cases - "$gnused" -i -e "s/version[[:space:]]*=[[:space:]]*\"=$OLD\"/version = \"=$NEW\"/" "$CARGO_TOML" - FILES_MODIFIED+=("$CARGO_TOML") -done - -cargo build -FILES_MODIFIED+=("Cargo.lock") - -for contract_dir in contracts/*/; do - CARGO_LOCK="$contract_dir/Cargo.lock" - - (cd "$contract_dir" && cargo build) - - FILES_MODIFIED+=("$CARGO_LOCK") -done - -echo "Staging ${FILES_MODIFIED[*]} ..." -git add "${FILES_MODIFIED[@]}" -git commit -m "Set version: $NEW" diff --git a/packages/vm/Cargo.toml b/packages/vm/Cargo.toml index be1ef746af..27bd6a6794 100644 --- a/packages/vm/Cargo.toml +++ b/packages/vm/Cargo.toml @@ -7,6 +7,18 @@ description = "VM bindings to run cosmwams contracts" repository = "https://github.com/CosmWasm/cosmwasm/tree/main/packages/vm" license = "Apache-2.0" +[package.metadata.release] +pre-release-hook = [ + "../../devtools/release_checks.sh" +] +pre-release-replacements = [ + { file="../../CHANGELOG.md", search="## \\[Unreleased\\]", replace="## [{{version}}] - {{date}}", exactly=1 }, + { file="../../CHANGELOG.md", search="(U|u)nreleased", replace="{{version}}" }, + { file="../../CHANGELOG.md", search="", replace="\n\n## [Unreleased]", exactly=1 }, + { file="../../CHANGELOG.md", search="\\.\\.\\.HEAD", replace="...{{tag_name}}", exactly=1 }, + { file="../../CHANGELOG.md", search="\n", replace="\n\n[unreleased]: https://github.com/CosmWasm/cosmwasm/compare/{{tag_name}}...HEAD", exactly=1 }, +] + [features] default = ["staking", "iterator"] # backtraces provides much better context at runtime errors (in non-wasm code)