50321c6671
## Issue Addressed Related to: #2259 Made an attempt at all the necessary updates here to publish the crates to crates.io. I incremented the minor versions on all the crates that have been previously published. We still might run into some issues as we try to publish because I'm not able to test this out but I think it's a good starting point. ## Proposed Changes - Add description and license to `ssz_types` and `serde_util` - rename `serde_util` to `eth2_serde_util` - increment minor versions - remove path dependencies - remove patch dependencies ## Additional Info Crates published: - [x] `tree_hash` -- need to publish `tree_hash_derive` and `eth2_hashing` first - [x] `eth2_ssz_types` -- need to publish `eth2_serde_util` first - [x] `tree_hash_derive` - [x] `eth2_ssz` - [x] `eth2_ssz_derive` - [x] `eth2_serde_util` - [x] `eth2_hashing` Co-authored-by: realbigsean <seananderson33@gmail.com>
110 lines
2.3 KiB
Bash
Executable File
110 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Based on: https://github.com/tokio-rs/tokio/blob/master/bin/publish
|
|
|
|
set -e
|
|
USAGE="Publish a new release of a lighthouse crate
|
|
USAGE:
|
|
$(basename "$0") [OPTIONS] [CRATE_PATH] [CRATE] [TAG]
|
|
OPTIONS:
|
|
-v, --verbose Use verbose Cargo output
|
|
-d, --dry-run Perform a dry run (do not publish the release)
|
|
-h, --help Show this help text and exit
|
|
--allow-dirty Allow dirty working directories to be packaged"
|
|
|
|
DRY_RUN=""
|
|
DIRTY=""
|
|
VERBOSE=""
|
|
|
|
verify() {
|
|
echo "Verifying if $CRATE v$VERSION can be released"
|
|
|
|
# `cargo pkgid` has different formats based on whether the `[lib]` name and `[package]` name
|
|
# are the same, necessitating the following logic.
|
|
#
|
|
# Try to match on `#`
|
|
ACTUAL=$(cargo pkgid | sed -n 's/.*#\([0-9]\)/\1/p' )
|
|
if [ -z "$ACTUAL" ]; then
|
|
# Match on the final `:`
|
|
ACTUAL=$(cargo pkgid | sed -n 's/.*:\(.*\)/\1/p')
|
|
fi
|
|
|
|
if [ "$ACTUAL" != "$VERSION" ]; then
|
|
echo "expected to release version $VERSION, but Cargo.toml contained $ACTUAL"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
release() {
|
|
echo "Releasing $CRATE v$VERSION"
|
|
cargo package $VERBOSE $DIRTY
|
|
cargo publish $VERBOSE $DRY_RUN $DIRTY
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
|
|
case "$1" in
|
|
-h|--help)
|
|
echo "$USAGE"
|
|
exit 0
|
|
;;
|
|
-v|--verbose)
|
|
VERBOSE="--verbose"
|
|
set +x
|
|
shift
|
|
;;
|
|
--allow-dirty)
|
|
DIRTY="--allow-dirty"
|
|
shift
|
|
;;
|
|
-d|--dry-run)
|
|
DRY_RUN="--dry-run"
|
|
shift
|
|
;;
|
|
-*)
|
|
echo "unknown flag \"$1\""
|
|
echo "$USAGE"
|
|
exit 1
|
|
;;
|
|
*) # crate, crate path, or version
|
|
if [ -z "$CRATE_PATH" ]; then
|
|
CRATE_PATH="$1"
|
|
elif [ -z "$CRATE" ]; then
|
|
CRATE="$1"
|
|
elif [ -z "$TAG" ]; then
|
|
TAG="$1"
|
|
VERSION=$(sed -e 's#.*-v\([0-9]\)#\1#' <<< "$TAG")
|
|
else
|
|
echo "unknown positional argument \"$1\""
|
|
echo "$USAGE"
|
|
exit 1
|
|
fi
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
# set -- "${POSITIONAL[@]}"
|
|
|
|
if [ -z "$VERSION" ]; then
|
|
echo "no version specified!"
|
|
HELP=1
|
|
fi
|
|
|
|
if [ -z "$CRATE" ]; then
|
|
echo "no crate specified!"
|
|
HELP=1
|
|
fi
|
|
|
|
if [ -n "$HELP" ]; then
|
|
echo "$USAGE"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -d "$CRATE_PATH" ]; then
|
|
(cd "$CRATE_PATH" && verify && release )
|
|
else
|
|
echo "no such dir \"$CRATE_PATH\""
|
|
exit 1
|
|
fi
|