Core flows no longer reach into the terminal UI: build_source_package takes a BuildSourceOptions struct (source tree, domain options, view, prompter) and reports phases, messages and outcomes through the environment-agnostic ports in the new report module. The classifiers move from ui/logfmt to the core logfmt module, DebUi becomes a BuildView adapter, the re-vendor retry asks the prompter instead of checking for a TTY, and artifact/success printing moves to the CLI. Headless consumers pass report::Quiet; an embedding (e.g. a builder server forwarding events to a web frontend) implements BuildView and maps the plain-data events onto its own wire format.
77 lines
2.7 KiB
Rust
77 lines
2.7 KiB
Rust
//! pkh: Debian packaging helper
|
|
//!
|
|
//! pkh allows working with Debian packages, with multiple actions/submodules
|
|
#![deny(missing_docs)]
|
|
|
|
/// Handle apt data (apt sources)
|
|
pub mod apt;
|
|
/// Build a Debian source package (into a .dsc)
|
|
pub mod build;
|
|
/// Parse or edit a Debian changelog of a source package
|
|
pub mod changelog;
|
|
/// Embedding convention for static reference data (`data/*.yml`), applied
|
|
/// by each owning module via the `embed_data!` macro
|
|
pub(crate) mod data;
|
|
/// Build a Debian package into a binary (.deb)
|
|
pub mod deb;
|
|
/// Reusable Debian format primitives (control/deb822, checksums, versions,
|
|
/// changelog entries, artifact registries)
|
|
pub mod debian;
|
|
/// Obtain general information about distribution, series, etc
|
|
pub mod distro_info;
|
|
/// Launchpad integration: PPA upload targets and account discovery
|
|
pub mod launchpad;
|
|
/// Scaffold a new Debian source package (`pkh new`)
|
|
pub mod new;
|
|
/// Obtain information about one or multiple packages
|
|
pub mod package_info;
|
|
/// Prune residual pkh build artifacts and caches
|
|
pub mod prune;
|
|
/// Download a source package locally
|
|
pub mod pull;
|
|
/// Upload a built source package to a PPA (or archive)
|
|
pub mod put;
|
|
/// Handle package-specific quirks and workarounds
|
|
pub mod quirks;
|
|
|
|
/// Line classifiers rewriting raw subprocess output into display actions
|
|
/// and countable progress (pure logic, shared by build views)
|
|
pub mod logfmt;
|
|
|
|
/// Reporting ports: environment-agnostic build observation ([`BuildView`])
|
|
/// and question answering ([`Prompter`]), implemented by terminal views,
|
|
/// server bridges or the inert [`Quiet`]
|
|
pub mod report;
|
|
|
|
/// Terminal UI helpers (progress bars, live build views, prompts)
|
|
pub mod ui;
|
|
|
|
/// Handle context for .deb building: locally, over ssh, in a chroot...
|
|
pub mod context;
|
|
|
|
/// Quiet test runs: per-test log files, subprocess capture and failure
|
|
/// matrix (inert passthrough outside test binaries)
|
|
pub(crate) mod test_support;
|
|
|
|
/// Utility functions
|
|
pub(crate) mod utils;
|
|
|
|
/// Optional callback function (taking 4 arguments)
|
|
/// - Name of the current main operation (e.g. pulling package)
|
|
/// - Name of the current nested operation (e.g. cloning git repo)
|
|
/// - Progress, position, index of current operation (e.g. amount of data downloaded)
|
|
/// - Total amount for current operation (e.g. size of the file to download)
|
|
pub type ProgressCallback<'a> = Option<&'a dyn Fn(&str, &str, usize, usize)>;
|
|
|
|
/// Returns the architecture of current CPU, debian-compatible
|
|
pub fn get_current_arch() -> String {
|
|
match std::env::consts::ARCH {
|
|
"x86" => "i386".to_string(),
|
|
"x86_64" => "amd64".to_string(),
|
|
"arm" => "armhf".to_string(),
|
|
"aarch64" => "arm64".to_string(),
|
|
"powerpc64" => "ppc64el".to_string(),
|
|
x => x.to_string(),
|
|
}
|
|
}
|