Compare commits

...

4 Commits

Author SHA1 Message Date
Niklas Eicker
2a15199505
Merge c9cf6bab92e5d08f4f42dc9ce2da579bf0fbe7e2 into 7278d887cf05fadc9a96478830e5876739b78f53 2025-07-24 00:54:24 -04:00
Niklas Eicker
c9cf6bab92 Clarifications in docs 2025-07-19 10:12:17 +02:00
Niklas Eicker
084a3dd0f2
Merge branch 'main' into constructors-for-manifest-types 2025-07-18 16:50:12 +02:00
Niklas Eicker
2166f257c8 Create constructor methods for manifest types 2025-07-17 22:39:50 +02:00

View File

@ -143,6 +143,16 @@ pub struct PackageInfo {
}
impl PackageManifest {
/// Create a new package manifest with the given package info.
pub fn new(package: PackageInfo) -> Self {
PackageManifest {
package,
template: None,
tool: ToolInfo::default(),
unknown_fields: UnknownFields::new(),
}
}
/// Ensure that this manifest is indeed for the specified package.
pub fn validate(&self, spec: &PackageSpec) -> Result<(), EcoString> {
if self.package.name != spec.name {
@ -173,6 +183,44 @@ impl PackageManifest {
}
}
impl TemplateInfo {
/// Create a new template info with only required fields.
pub fn new(path: impl Into<EcoString>, entrypoint: impl Into<EcoString>) -> Self {
TemplateInfo {
path: path.into(),
entrypoint: entrypoint.into(),
thumbnail: None,
unknown_fields: UnknownFields::new(),
}
}
}
impl PackageInfo {
/// Create a new package info with only required fields.
pub fn new(
name: impl Into<EcoString>,
version: PackageVersion,
entrypoint: impl Into<EcoString>,
) -> Self {
PackageInfo {
name: name.into(),
version,
entrypoint: entrypoint.into(),
authors: vec![],
categories: vec![],
compiler: None,
description: None,
disciplines: vec![],
exclude: vec![],
homepage: None,
keywords: vec![],
license: None,
repository: None,
unknown_fields: BTreeMap::new(),
}
}
}
/// Identifies a package.
#[derive(Clone, Eq, PartialEq, Hash)]
pub struct PackageSpec {
@ -535,22 +583,11 @@ mod tests {
"#
),
Ok(PackageManifest {
package: PackageInfo {
name: "package".into(),
version: PackageVersion { major: 0, minor: 1, patch: 0 },
entrypoint: "src/lib.typ".into(),
authors: vec![],
license: None,
description: None,
homepage: None,
repository: None,
keywords: vec![],
categories: vec![],
disciplines: vec![],
compiler: None,
exclude: vec![],
unknown_fields: BTreeMap::new(),
},
package: PackageInfo::new(
"package",
PackageVersion { major: 0, minor: 1, patch: 0 },
"src/lib.typ"
),
template: None,
tool: ToolInfo { sections: BTreeMap::new() },
unknown_fields: BTreeMap::new(),