Created
June 21, 2017 00:30
-
-
Save behnam/adf4031988229e23ed01a02fe1a0bcc2 to your computer and use it in GitHub Desktop.
Rust/Cargo: Temporary solution to publishing all components of a super-crate
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Copyright 2017 The UNIC Project Developers. | |
# | |
# See the COPYRIGHT file at the top-level directory of this distribution. | |
# | |
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | |
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | |
# option. This file may not be copied, modified, or distributed | |
# except according to those terms. | |
# Since `cargo publish --all` does not exist yet, we use this dumb alternative | |
# solution for now. | |
# | |
# Main downside of this approch is that there are separate `target/` | |
# directories used for each component, increasing the test and publish process | |
# time. | |
set -e | |
# List of components, in order of dependency | |
COMPONENTS=" | |
something | |
another_thing | |
another_thing/and_a_subcomponent | |
" | |
-() { | |
cmd="$@" | |
echo | |
echo -n " `tput bold; tput setaf 4`Executing`tput sgr0` " | |
echo "$cmd" | |
$cmd | |
} | |
# Steps | |
- cargo update --verbose | |
# First test all components and stop if anything goes wrong | |
for component in $COMPONENTS; do | |
- cargo test --verbose --manifest-path components/$component/Cargo.toml | |
done | |
# Then publish all components, and ignore failures (usually because of the version being released already) | |
for component in $COMPONENTS; do | |
- cargo publish --verbose --manifest-path components/$component/Cargo.toml || true | |
done | |
- cargo publish --verbose |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Here's the code in action: https://github.com/behnam/rust-unic/blob/master/.cargo/publish-all.sh