use std::path::{Path, PathBuf};
use crate::cli::Result;
use crate::config::Config;
use crate::pack::java::plan::PreparedJvmPackaging;
use crate::pack::java::{
selected_jvm_package_artifact_name, selected_jvm_package_source_directory,
};
use super::layout::KmpPackageLayout;
pub(crate) struct KmpPackagingPlan {
source_directory: PathBuf,
source_crate_name: String,
artifact_name: String,
layout: KmpPackageLayout,
jvm_packaging: PreparedJvmPackaging,
}
impl KmpPackagingPlan {
pub(crate) fn new(config: &Config, jvm_packaging: PreparedJvmPackaging) -> Result<Self> {
let source_directory =
selected_jvm_package_source_directory(&jvm_packaging.packaging_targets)?;
let artifact_name = selected_jvm_package_artifact_name(&jvm_packaging.packaging_targets)?;
Ok(Self {
source_directory,
source_crate_name: config.library_name().to_string(),
artifact_name: artifact_name.to_string(),
layout: KmpPackageLayout::from_config(config),
jvm_packaging,
})
}
pub(crate) fn source_directory(&self) -> &Path {
&self.source_directory
}
pub(crate) fn source_crate_name(&self) -> &str {
&self.source_crate_name
}
pub(crate) fn artifact_name(&self) -> &str {
&self.artifact_name
}
pub(crate) fn layout(&self) -> &KmpPackageLayout {
&self.layout
}
pub(crate) fn jvm_packaging(&self) -> &PreparedJvmPackaging {
&self.jvm_packaging
}
}