From fac75837458e4f7be4f501e40331b8162d90a1f8 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 1 Nov 2024 21:02:27 +0100 Subject: Basic feature flag mechanism (#5350) --- crates/typst-cli/src/args.rs | 9 +++++++++ crates/typst-cli/src/world.rs | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'crates/typst-cli/src') diff --git a/crates/typst-cli/src/args.rs b/crates/typst-cli/src/args.rs index a4ac4bd9..9437f848 100644 --- a/crates/typst-cli/src/args.rs +++ b/crates/typst-cli/src/args.rs @@ -274,8 +274,17 @@ pub struct SharedArgs { /// defaults to number of CPUs. Setting it to 1 disables parallelism. #[clap(long, short)] pub jobs: Option, + + /// Enables in-development features that may be changed or removed at any + /// time. + #[arg(long = "feature", value_delimiter = ',')] + pub feature: Vec, } +/// An in-development feature that may be changed or removed at any time. +#[derive(Debug, Copy, Clone, Eq, PartialEq, ValueEnum)] +pub enum Feature {} + /// Arguments related to where packages are stored in the system. #[derive(Debug, Clone, Args)] pub struct PackageStorageArgs { diff --git a/crates/typst-cli/src/world.rs b/crates/typst-cli/src/world.rs index f3597544..a04de2c0 100644 --- a/crates/typst-cli/src/world.rs +++ b/crates/typst-cli/src/world.rs @@ -112,7 +112,10 @@ impl SystemWorld { .map(|(k, v)| (k.as_str().into(), v.as_str().into_value())) .collect(); - Library::builder().with_inputs(inputs).build() + let features = + command.feature.iter().map(|&feature| match feature {}).collect(); + + Library::builder().with_inputs(inputs).with_features(features).build() }; let fonts = Fonts::searcher() -- cgit v1.2.3