#![cfg_attr(not(doctest), doc = include_str!("../README.md"))]
pub mod action;
pub mod build;
pub mod config;
pub mod cpu;
pub mod db;
pub mod logging;
pub mod makejobs;
pub mod report;
pub mod sandbox;
pub mod scan;
pub mod scheduler;
pub mod state;
pub mod summary;
mod history;
mod init;
mod pkgstate;
mod tui;
use std::io::{self, Write};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum Align {
#[default]
Left,
Right,
}
pub trait ColumnAlign: strum::EnumProperty {
fn align(&self) -> Align {
match self.get_str("align") {
Some("right") => Align::Right,
_ => Align::Left,
}
}
}
pub fn try_println(s: &str) -> bool {
let result = writeln!(io::stdout(), "{}", s);
!matches!(result, Err(e) if e.kind() == io::ErrorKind::BrokenPipe)
}
#[derive(Debug)]
pub struct Interrupted;
impl std::fmt::Display for Interrupted {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Interrupted")
}
}
impl std::error::Error for Interrupted {}
pub use action::{Action, ActionType, FSType};
pub use build::{
Build, BuildCounts, BuildReason, BuildResult, BuildSummary, PkgBuildStats, Stage,
pkg_up_to_date,
};
pub use config::{Config, DynamicConfig, Options, Pkgsrc, PkgsrcEnv, Sandboxes, WrkObjDir};
pub use cpu::{CpuSample, CpuSamplerHandle, start_cpu_sampler};
pub use db::Database;
pub use history::{History, HistoryKind, format_duration};
pub use init::Init;
pub use makejobs::PkgMakeJobs;
pub use pkgstate::{PackageCounts, PackageState, PackageStateKind};
pub use report::write_html_report;
pub use sandbox::Sandbox;
pub use scan::{ResolvedPackage, Scan, ScanResult, ScanSummary};
pub use scheduler::{PackageNode, ScheduledPackage, Scheduler};
pub use state::RunState;
pub use summary::generate_pkg_summary;