swift_package/conf/
swift_package.rs

1use anyhow::Result;
2use camino_fs::{Utf8Path, Utf8PathBuf};
3use serde::Deserialize;
4
5#[derive(Deserialize, Debug, Default)]
6#[serde(rename_all = "kebab-case")]
7pub struct SwiftPackageConfiguration {
8    pub package_name: String,
9    pub udl_file: Utf8PathBuf,
10    #[serde(default)]
11    pub resource_dirs: Vec<Utf8PathBuf>,
12}
13
14impl SwiftPackageConfiguration {
15    /// Parses the [package.metadata.swift-package] section of the Cargo.toml
16    pub fn parse(xcfr: &serde_json::Value, package_dir: &Utf8Path) -> Result<Self> {
17        let mut me = serde_json::from_value::<Self>(xcfr.clone())?;
18        me.resource_dirs = me
19            .resource_dirs
20            .into_iter()
21            .map(|res| package_dir.join(res))
22            .collect();
23        me.udl_file = package_dir.join(me.udl_file);
24        Ok(me)
25    }
26}