Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make the run image Target public #815

Merged
merged 1 commit into from
Apr 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed
### Added

- `libcnb`:
- `WriteLayerError` changed to contain more specific error enums instead of generic ones. ([#786](https://github.com/heroku/libcnb.rs/pull/786))
- Made `Target` (the type of `DetectContext::target` and `BuildContext::target`) public. ([#815](https://github.com/heroku/libcnb.rs/pull/815))

### Fixed
### Changed

- `libcnb`
- Fixed the Docker label names mentioned in the rustdocs for `ContextTarget`'s `distro_name` and `distro_version`. ([#811](https://github.com/heroku/libcnb.rs/pull/811))
- `libcnb`:
- `WriteLayerError` changed to contain more specific error enums instead of generic ones. ([#786](https://github.com/heroku/libcnb.rs/pull/786))
- `libcnb-data`:
- Renamed `Target` to `BuildpackTarget` to disambiguate it from the new `libcnb::Target`. ([#815](https://github.com/heroku/libcnb.rs/pull/815))

## [0.19.0] - 2024-02-23

Expand Down Expand Up @@ -47,7 +49,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Removed

- Types, errors, macros and functions related to stacks. The concept of stacks has been removed from the CNB spec. Use `Target` instead. ([#773](https://github.com/heroku/libcnb.rs/pull/773))
- Types, errors, macros and functions related to stacks. The concept of stacks has been removed from the CNB spec. Use targets instead. ([#773](https://github.com/heroku/libcnb.rs/pull/773))

## [0.17.0] - 2023-12-06

Expand Down
16 changes: 8 additions & 8 deletions libcnb-data/src/buildpack/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ impl<BM> BuildpackDescriptor<BM> {
///
/// # Example:
/// ```
/// use libcnb_data::buildpack::{ComponentBuildpackDescriptor, Target};
/// use libcnb_data::buildpack::{BuildpackTarget, ComponentBuildpackDescriptor};
/// use libcnb_data::buildpack_id;
///
/// let toml_str = r#"
Expand All @@ -108,11 +108,11 @@ impl<BM> BuildpackDescriptor<BM> {
/// assert_eq!(buildpack_descriptor.buildpack.id, buildpack_id!("foo/bar"));
/// assert_eq!(
/// buildpack_descriptor.targets,
/// [Target {
/// [BuildpackTarget {
/// os: Some(String::from("linux")),
/// arch: None,
/// variant: None,
/// distros: vec![]
/// distros: Vec::new()
/// }]
/// );
/// ```
Expand All @@ -124,7 +124,7 @@ pub struct ComponentBuildpackDescriptor<BM = GenericMetadata> {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub stacks: Vec<Stack>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub targets: Vec<Target>,
pub targets: Vec<BuildpackTarget>,
pub metadata: BM,
// As of 2024-02-09, the CNB spec does not forbid component buildpacks
// to contain `order`. This is a change from buildpack API 0.9 where `order`
Expand Down Expand Up @@ -381,7 +381,7 @@ checksum = "abc123"
assert_eq!(
buildpack_descriptor.targets,
[
Target {
BuildpackTarget {
os: Some(String::from("linux")),
arch: Some(String::from("amd64")),
variant: None,
Expand All @@ -390,19 +390,19 @@ checksum = "abc123"
version: String::from("18.04"),
}],
},
Target {
BuildpackTarget {
os: Some(String::from("linux")),
arch: Some(String::from("arm")),
variant: Some(String::from("v8")),
distros: Vec::new(),
},
Target {
BuildpackTarget {
os: Some(String::from("windows")),
arch: Some(String::from("amd64")),
variant: None,
distros: Vec::new(),
},
Target {
BuildpackTarget {
os: None,
arch: None,
variant: None,
Expand Down
2 changes: 1 addition & 1 deletion libcnb-data/src/buildpack/target.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use serde::Deserialize;

#[derive(Debug, Eq, PartialEq, Clone, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Target {
pub struct BuildpackTarget {
pub os: Option<String>,
pub arch: Option<String>,
pub variant: Option<String>,
Expand Down
4 changes: 2 additions & 2 deletions libcnb/src/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ use crate::data::{
};
use crate::layer::{HandleLayerErrorOrBuildpackError, Layer, LayerData};
use crate::sbom::Sbom;
use crate::target::ContextTarget;
use crate::Target;
use std::path::PathBuf;

/// Context for the build phase execution.
pub struct BuildContext<B: Buildpack + ?Sized> {
pub layers_dir: PathBuf,
pub app_dir: PathBuf,
pub buildpack_dir: PathBuf,
pub target: ContextTarget,
pub target: Target,
pub platform: B::Platform,
pub buildpack_plan: BuildpackPlan,
pub buildpack_descriptor: ComponentBuildpackDescriptor<B::Metadata>,
Expand Down
4 changes: 2 additions & 2 deletions libcnb/src/detect.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//! Provides detect phase specific types and helpers.

use crate::buildpack::Buildpack;
use crate::target::ContextTarget;
use crate::Target;
use crate::{data::build_plan::BuildPlan, data::buildpack::ComponentBuildpackDescriptor};
use std::fmt::Debug;
use std::path::PathBuf;
Expand All @@ -10,7 +10,7 @@ use std::path::PathBuf;
pub struct DetectContext<B: Buildpack + ?Sized> {
pub app_dir: PathBuf,
pub buildpack_dir: PathBuf,
pub target: ContextTarget,
pub target: Target,
pub platform: B::Platform,
pub buildpack_descriptor: ComponentBuildpackDescriptor<B::Metadata>,
}
Expand Down
13 changes: 6 additions & 7 deletions libcnb/src/layer/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,8 @@ use crate::layer::{
MetadataMigration,
};
use crate::layer_env::{LayerEnv, ModificationBehavior, Scope};
use crate::target::ContextTarget;
use crate::{read_toml_file, Buildpack, Env, LIBCNB_SUPPORTED_BUILDPACK_API};
use libcnb_data::buildpack::{BuildpackVersion, ComponentBuildpackDescriptor, Target};
use crate::{read_toml_file, Buildpack, Env, Target, LIBCNB_SUPPORTED_BUILDPACK_API};
use libcnb_data::buildpack::{BuildpackTarget, BuildpackVersion, ComponentBuildpackDescriptor};
use libcnb_data::buildpack_plan::BuildpackPlan;
use libcnb_data::layer_content_metadata::LayerContentMetadata;
use libcnb_data::layer_name;
Expand Down Expand Up @@ -901,7 +900,7 @@ fn build_context(temp_dir: &TempDir) -> BuildContext<TestBuildpack> {
layers_dir,
app_dir,
buildpack_dir,
target: ContextTarget {
target: Target {
os: String::from("linux"),
arch: String::from("amd64"),
arch_variant: None,
Expand All @@ -925,12 +924,12 @@ fn build_context(temp_dir: &TempDir) -> BuildContext<TestBuildpack> {
licenses: Vec::new(),
sbom_formats: HashSet::new(),
},
stacks: vec![],
targets: vec![Target {
stacks: Vec::new(),
targets: vec![BuildpackTarget {
os: Some(String::from("linux")),
arch: Some(String::from("amd64")),
variant: None,
distros: vec![],
distros: Vec::new(),
}],
metadata: GenericMetadata::default(),
},
Expand Down
1 change: 1 addition & 0 deletions libcnb/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ pub use error::*;
pub use libcnb_common::toml_file::*;
pub use platform::*;
pub use runtime::*;
pub use target::*;

#[cfg(all(test, not(feature = "trace")))]
use serde_json as _;
Expand Down
7 changes: 3 additions & 4 deletions libcnb/src/runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@ use crate::detect::{DetectContext, InnerDetectResult};
use crate::error::Error;
use crate::platform::Platform;
use crate::sbom::cnb_sbom_path;
use crate::target::ContextTarget;
#[cfg(feature = "trace")]
use crate::tracing::start_trace;
use crate::util::is_not_found_error_kind;
use crate::{exit_code, TomlFileError, LIBCNB_SUPPORTED_BUILDPACK_API};
use crate::{exit_code, Target, TomlFileError, LIBCNB_SUPPORTED_BUILDPACK_API};
use libcnb_common::toml_file::{read_toml_file, write_toml_file};
use libcnb_data::buildpack::ComponentBuildpackDescriptor;
use libcnb_data::store::Store;
Expand Down Expand Up @@ -358,7 +357,7 @@ fn read_buildpack_descriptor<BD: DeserializeOwned, E: Debug>() -> crate::Result<
})
}

fn context_target<E>() -> crate::Result<ContextTarget, E>
fn context_target<E>() -> crate::Result<Target, E>
where
E: Debug,
{
Expand All @@ -368,7 +367,7 @@ where
let distro_name = env::var("CNB_TARGET_DISTRO_NAME").ok();
let distro_version = env::var("CNB_TARGET_DISTRO_VERSION").ok();

Ok(ContextTarget {
Ok(Target {
os,
arch,
arch_variant,
Expand Down
2 changes: 1 addition & 1 deletion libcnb/src/target.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pub struct ContextTarget {
pub struct Target {
/// The name of the target operating system.
///
/// The value should conform to [Go's `$GOOS`](https://golang.org/doc/install/source#environment), for example
Expand Down