diff --git a/Cargo.lock b/Cargo.lock index 4145a260..5e9200f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -32,7 +32,7 @@ dependencies = [ "bardecoder", "bytes", "color-backtrace", - "cradle", + "cradle 0.0.11", "executable-path", "futures", "guard", @@ -74,7 +74,7 @@ dependencies = [ name = "agora-lnd-client" version = "0.0.0" dependencies = [ - "cradle", + "cradle 0.0.11", "hex", "hex-literal", "http", @@ -261,6 +261,37 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +[[package]] +name = "camino" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d74260d9bf6944e2208aa46841b4b8f0d7ffc0849a06837b2f510337f86b2b" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c297bd3135f558552f99a0daa180876984ea2c4ffa7470314540dff8c654109a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.4", + "serde", + "serde_json", +] + [[package]] name = "cc" version = "1.0.67" @@ -346,6 +377,15 @@ dependencies = [ "rustversion", ] +[[package]] +name = "cradle" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04279bcc0a74fad216bf5ae0108d51833097f09fddb84d8a948c9f80099cdd22" +dependencies = [ + "rustversion", +] + [[package]] name = "crc32fast" version = "1.2.1" @@ -1103,7 +1143,7 @@ dependencies = [ name = "lnd-test-context" version = "0.0.0" dependencies = [ - "cradle", + "cradle 0.0.11", "hex-literal", "lazy_static", "pretty_assertions", @@ -1777,6 +1817,16 @@ dependencies = [ "prost", ] +[[package]] +name = "publish" +version = "0.0.0" +dependencies = [ + "cargo_metadata", + "cradle 0.0.18", + "structopt", + "tempfile", +] + [[package]] name = "pulldown-cmark" version = "0.8.0" @@ -2098,7 +2148,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084" dependencies = [ - "semver", + "semver 0.1.20", ] [[package]] @@ -2257,6 +2307,15 @@ version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac" +[[package]] +name = "semver" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +dependencies = [ + "serde", +] + [[package]] name = "serde" version = "1.0.126" @@ -2445,9 +2504,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28c" +checksum = "69b041cdcb67226aca307e6e7be44c8806423d83e018bd662360a93dabce4d71" dependencies = [ "clap", "lazy_static", @@ -2456,9 +2515,9 @@ dependencies = [ [[package]] name = "structopt-derive" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90" +checksum = "7813934aecf5f51a54775e00068c237de98489463968231a51746bbbc03f9c10" dependencies = [ "heck", "proc-macro-error", diff --git a/Cargo.toml b/Cargo.toml index daf8fc10..a98a155c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ repository = "https://github.com/soenkehahn/agora" homepage = "https://github.com/soenkehahn/agora" [workspace] -members = [".", "bin/prerelease", "agora-lnd-client", "lnd-test-context"] +members = [".", "agora-lnd-client", "bin/prerelease", "bin/publish", "lnd-test-context"] [dependencies] backtrace = "0.3.61" diff --git a/bin/publish/Cargo.toml b/bin/publish/Cargo.toml new file mode 100644 index 00000000..e3b4ecfc --- /dev/null +++ b/bin/publish/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "publish" +version = "0.0.0" +edition = "2018" +publish = false + +[dependencies] +cargo_metadata = "0.14.0" +cradle = "0.0.18" +structopt = "0.3.22" +tempfile = "3.2.0" diff --git a/bin/publish/src/main.rs b/bin/publish/src/main.rs new file mode 100644 index 00000000..8dd67bf7 --- /dev/null +++ b/bin/publish/src/main.rs @@ -0,0 +1,79 @@ +use cargo_metadata::MetadataCommand; +use cradle::prelude::*; +use std::env; +use structopt::StructOpt; +use tempfile::tempdir; + +#[derive(StructOpt)] +struct Arguments { + revision: String, + #[structopt(long)] + publish_agora_lnd_client: bool, +} + +fn main() { + let arguments = Arguments::from_args(); + + let tempdir = tempdir().unwrap(); + + ( + "git", + "clone", + "git@github.com:agora-org/agora.git", + CurrentDir(tempdir.path()), + ) + .run_unit(); + + env::set_current_dir(tempdir.path().join("agora")).unwrap(); + + ( + "git", + "merge-base", + "--is-ancestor", + &arguments.revision, + "master", + ) + .run_unit(); + + ("git", "checkout", arguments.revision).run_unit(); + + let metadata = MetadataCommand::new().exec().unwrap(); + + let version = metadata + .packages + .into_iter() + .filter(|package| package.name == "agora") + .next() + .unwrap() + .version; + + if arguments.publish_agora_lnd_client { + ( + "cargo", + "publish", + "--dry-run", + CurrentDir("agora-lnd-client"), + ) + .run_unit(); + } + + ("cargo", "publish", "--dry-run").run_unit(); + + ( + "git", + "tag", + "--sign", + "--message", + format!("Release version {}", version), + version.to_string(), + ) + .run_unit(); + + ("git", "push", "origin", &version.to_string()).run_unit(); + + if arguments.publish_agora_lnd_client { + ("cargo", "publish", CurrentDir("agora-lnd-client")).run_unit(); + } + + ("cargo", "publish").run_unit(); +} diff --git a/justfile b/justfile index 0a327f76..5a9a048c 100644 --- a/justfile +++ b/justfile @@ -44,18 +44,8 @@ watch +command='ltest': push: all git push -publish remote: all - #!/usr/bin/env bash - set -euxo pipefail - VERSION=`cargo run -- --version | cut -d' ' -f2` - git diff --no-ext-diff --quiet --exit-code - git branch | grep '* master' - (cd agora-lnd-client && cargo publish --dry-run) - cargo publish --dry-run - git tag -a $VERSION -m "Release version $VERSION" - git push {{remote}} $VERSION - (cd agora-lnd-client && cargo publish) - cargo publish +publish revision: + cargo run -p publish -- {{revision}} clean-binaries: rm -rf target/bitcoin* target/ln*