Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 18 additions & 15 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,25 +62,19 @@ jobs:
run: |
set -euo pipefail

# All workspace crates share a single version (lockstep).
# Check the root crate to decide if publishing is needed.
# All workspace crates share a single version (lockstep), so the root
# crate's version is the target version for every crate. Whether
# there is anything to publish is decided per crate in the loop below,
# not here: a crate added to the workspace after the current version
# was released is missing from crates.io even though the root crate is
# already at that version, so an early exit keyed on `fgumi` alone
# would silently skip it.
VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r \
'.packages[] | select(.name == "fgumi") | .version')

PUBLISHED_VERSION=$(curl -sSf \
-H "User-Agent: fgumi-ci (https://github.com/fulcrumgenomics/fgumi)" \
"https://crates.io/api/v1/crates/fgumi" | jq -r \
'.crate.max_version // "0.0.0"')

echo "version=$VERSION" >> "$GITHUB_OUTPUT"

if [ "$VERSION" = "$PUBLISHED_VERSION" ]; then
echo "All crates already at v$VERSION -- nothing to publish"
echo "published=false" >> "$GITHUB_OUTPUT"
exit 0
fi

echo "Publishing all workspace crates (v$VERSION)..."
echo "Target version for all workspace crates: v$VERSION"

# Workspace crates in topological (dependency) order.
# Leaf crates first, root crate last. Update this list when
Expand All @@ -90,6 +84,9 @@ jobs:
fgumi-bgzf
fgumi-simd-fastq
fgumi-tag
fgumi-fmt
fgumi-cli-macros
fgumi-cli-common
Comment thread
nh13 marked this conversation as resolved.
fgumi-raw-bam
fgumi-bam-io
fgumi-umi
Expand Down Expand Up @@ -169,6 +166,7 @@ jobs:
exit 1
fi

PUBLISHED_ANY=false
for crate in "${CRATES[@]}"; do
CRATE_MAX_VERSION=$(curl -sS \
-H "User-Agent: fgumi-ci (https://github.com/fulcrumgenomics/fgumi)" \
Expand All @@ -183,9 +181,14 @@ jobs:
echo "Publishing $crate v$VERSION..."
cargo publish -p "$crate"
echo "✓ Published $crate v$VERSION"
PUBLISHED_ANY=true
done

echo "published=true" >> "$GITHUB_OUTPUT"
if [ "$PUBLISHED_ANY" = "false" ]; then
echo "All crates already at v$VERSION -- nothing to publish"
fi

echo "published=$PUBLISHED_ANY" >> "$GITHUB_OUTPUT"

- name: Create GitHub release
if: steps.publish.outputs.version != ''
Expand Down
73 changes: 73 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = [".", "crates/fgumi-raw-bam", "crates/fgumi-dna", "crates/fgumi-bgzf", "crates/fgumi-fmt", "crates/fgumi-metrics", "crates/fgumi-sam", "crates/fgumi-simd-fastq", "crates/fgumi-tag", "crates/fgumi-umi", "crates/fgumi-consensus", "crates/fgumi-bam-io", "crates/fgumi-sort", "crates/fgumi-cli-common", "crates/xtask"]
members = [".", "crates/fgumi-raw-bam", "crates/fgumi-dna", "crates/fgumi-bgzf", "crates/fgumi-fmt", "crates/fgumi-metrics", "crates/fgumi-sam", "crates/fgumi-simd-fastq", "crates/fgumi-tag", "crates/fgumi-umi", "crates/fgumi-consensus", "crates/fgumi-bam-io", "crates/fgumi-sort", "crates/fgumi-cli-common", "crates/fgumi-cli-macros", "crates/xtask"]
resolver = "2"

[workspace.package]
Expand All @@ -23,6 +23,7 @@ flate2 = { version = "1.1", features = ["zlib-rs"] }
fgumi-bam-io = { version = "0.5.0", path = "crates/fgumi-bam-io" }
fgumi-bgzf = { version = "0.5.0", path = "crates/fgumi-bgzf" }
fgumi-cli-common = { version = "0.5.0", path = "crates/fgumi-cli-common" }
fgumi-cli-macros = { version = "0.5.0", path = "crates/fgumi-cli-macros" }
fgumi-fmt = { version = "0.5.0", path = "crates/fgumi-fmt" }
fgumi-consensus = { version = "0.5.0", path = "crates/fgumi-consensus", default-features = false }
fgumi-dna = { version = "0.5.0", path = "crates/fgumi-dna" }
Expand Down
25 changes: 25 additions & 0 deletions crates/fgumi-cli-macros/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[package]
name = "fgumi-cli-macros"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
description = "Proc-macro support crate for fgumi CLI option re-exposure (multi_options)"
repository.workspace = true
license.workspace = true

[lib]
proc-macro = true

[dependencies]
syn = { version = "2", features = ["full"] }
quote = "1"
proc-macro2 = "1"

[dev-dependencies]
clap = { workspace = true }
anyhow = { workspace = true }
rstest = { workspace = true }
trybuild = "1.0"

[lints.clippy]
pedantic = { level = "deny", priority = -1 }
Loading
Loading