libcnb-package 0.30.4

Library for cross-compiling and packaging buildpacks written with libcnb.rs
Documentation
use libcnb_common::toml_file::read_toml_file;
use libcnb_data::buildpack::BuildpackDescriptor;
use std::path::Path;

#[must_use]
pub(crate) fn determine_buildpack_kind(buildpack_dir: &Path) -> Option<BuildpackKind> {
    read_toml_file::<BuildpackDescriptor>(buildpack_dir.join("buildpack.toml"))
        .ok()
        .map(|buildpack_descriptor| match buildpack_descriptor {
            BuildpackDescriptor::Component(_) => {
                if buildpack_dir.join("Cargo.toml").is_file() {
                    BuildpackKind::LibCnbRs
                } else {
                    BuildpackKind::Other
                }
            }
            BuildpackDescriptor::Composite(_) => BuildpackKind::Composite,
        })
}

pub(crate) enum BuildpackKind {
    Composite,
    LibCnbRs,
    Other,
}