Skip to main content

ephemeris_release/
lib.rs

1//! Ecosystem-neutral release lifecycle orchestration for independently
2//! versioned units.
3//!
4//! The shared core owns graph policy, proposal authority, tags, artifacts,
5//! retries, and forge releases. Git, package publication, and forge services
6//! use separate interfaces; the ecosystem adapters own discovery, version
7//! grouping, and edit behavior.
8
9#![expect(
10    clippy::missing_errors_doc,
11    reason = "adapter errors are implementation-defined"
12)]
13#![expect(
14    async_fn_in_trait,
15    reason = "the CLI drives these futures on one current-thread runtime"
16)]
17#![expect(
18    clippy::future_not_send,
19    reason = "the CLI drives these futures on one current-thread runtime"
20)]
21#![cfg_attr(
22    test,
23    expect(
24        clippy::unused_async_trait_impl,
25        reason = "fakes implement async traits without awaiting"
26    )
27)]
28
29mod account;
30mod adapters;
31mod artifacts;
32mod commit_subject;
33mod conventional;
34mod digest;
35mod edits;
36mod error;
37mod git;
38mod proposal;
39mod publication;
40mod publish;
41mod publisher;
42mod remote;
43mod state;
44mod traits;
45mod unit;
46mod version;
47
48pub use self::account::{Account, Author, Field};
49pub use self::adapters::{CargoRegistry, LocalChange, LocalPlan, NpmRegistry, RegistryError};
50pub use self::commit_subject::{CommitSubject, CommitSubjectError};
51pub use self::error::Error;
52pub use self::git::{GitError, GitHistory, ProposalGit, RemoteCredentials, SystemGit, UnitScope};
53pub use self::proposal::{ConfiguredProposal, ProposalOutcome, propose};
54pub use self::publish::{ArtifactInput, PublishCredentials, PublishRequest, publish};
55pub use self::publisher::Outcome;
56pub use self::remote::{RemoteAsset, RemoteRelease};
57pub use self::state::{AuthorityBranch, EmptyBranchName, ReleaseState};
58pub use self::traits::{
59    ForgeProposal, ForgeRelease, ForgeTags, GitCommands, GitRefs, PackageRegistry,
60};