1pub mod certificate;
2pub mod cli;
3pub mod config;
4pub mod container;
5pub mod definition;
6pub mod image;
7pub mod seed;
8
9pub use config::{Config, Instance};
10pub use container::Container;
11pub use definition::Definition;
12pub use image::Image;
13pub use seed::Command;
14pub use seed::CommandCacheConfig;
15pub use seed::DuplicateSeedName;
16pub use seed::LoadError;
17pub use seed::Seed;
18pub use seed::SeedName;
19pub use seed::SeedNameError;
20
21pub(crate) const VERSION_STR: &str = env!("CARGO_PKG_VERSION");
22pub(crate) const LOCALHOST_IP: std::net::IpAddr =
23 std::net::IpAddr::V4(std::net::Ipv4Addr::LOCALHOST);
24pub(crate) const UNSPECIFIED_IP: std::net::IpAddr =
25 std::net::IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED);
26pub(crate) const LOCALHOST_HOST_ADDR: pg_client::config::HostAddr =
27 pg_client::config::HostAddr::new(LOCALHOST_IP);
28pub(crate) const ENV_DATABASE_URL: cmd_proc::EnvVariableName =
29 cmd_proc::EnvVariableName::from_static_or_panic("DATABASE_URL");
30
31#[must_use]
32pub fn version() -> &'static semver::Version {
33 static VERSION: std::sync::LazyLock<semver::Version> =
34 std::sync::LazyLock::new(|| semver::Version::parse(VERSION_STR).unwrap());
35 &VERSION
36}
37
38pub(crate) fn convert_schema(value: &[u8]) -> String {
39 std::str::from_utf8(value)
40 .expect("schema contains invalid utf8")
41 .to_string()
42}
43
44#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd, serde::Deserialize)]
45pub struct InstanceName(pub String);
46
47impl std::default::Default for InstanceName {
48 fn default() -> Self {
49 Self("main".to_string())
50 }
51}
52
53impl std::str::FromStr for InstanceName {
54 type Err = std::convert::Infallible;
55
56 fn from_str(value: &str) -> Result<Self, Self::Err> {
57 Ok(Self(value.into()))
58 }
59}
60
61impl std::fmt::Display for InstanceName {
62 fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
63 write!(formatter, "{}", self.0)
64 }
65}
66
67pub type InstanceMap = std::collections::BTreeMap<InstanceName, config::Instance>;