libcnb_package/
buildpack_kind.rs1use libcnb_common::toml_file::read_toml_file;
2use libcnb_data::buildpack::BuildpackDescriptor;
3use std::path::Path;
4
5#[must_use]
6pub(crate) fn determine_buildpack_kind(buildpack_dir: &Path) -> Option<BuildpackKind> {
7 read_toml_file::<BuildpackDescriptor>(buildpack_dir.join("buildpack.toml"))
8 .ok()
9 .map(|buildpack_descriptor| match buildpack_descriptor {
10 BuildpackDescriptor::Component(_) => {
11 if buildpack_dir.join("Cargo.toml").is_file() {
12 BuildpackKind::LibCnbRs
13 } else {
14 BuildpackKind::Other
15 }
16 }
17 BuildpackDescriptor::Composite(_) => BuildpackKind::Composite,
18 })
19}
20
21pub(crate) enum BuildpackKind {
22 Composite,
23 LibCnbRs,
24 Other,
25}