mirror of
https://github.com/typst/typst
synced 2025-05-15 01:25:28 +08:00
59 lines
1.6 KiB
Rust
59 lines
1.6 KiB
Rust
use std::path::PathBuf;
|
|
|
|
use clap::{ArgAction, Parser, Subcommand};
|
|
|
|
/// typst creates PDF files from .typ files
|
|
#[derive(Debug, Clone, Parser)]
|
|
#[clap(name = "typst", version = crate::typst_version(), author)]
|
|
pub struct CliArguments {
|
|
/// Add additional directories to search for fonts
|
|
#[clap(long = "font-path", env = "TYPST_FONT_PATHS", value_name = "DIR", action = ArgAction::Append)]
|
|
pub font_paths: Vec<PathBuf>,
|
|
|
|
/// Configure the root for absolute paths
|
|
#[clap(long = "root", env = "TYPST_ROOT", value_name = "DIR")]
|
|
pub root: Option<PathBuf>,
|
|
|
|
/// The typst command to run
|
|
#[command(subcommand)]
|
|
pub command: Command,
|
|
}
|
|
|
|
/// What to do.
|
|
#[derive(Debug, Clone, Subcommand)]
|
|
#[command()]
|
|
pub enum Command {
|
|
/// Compiles the input file into a PDF file
|
|
#[command(visible_alias = "c")]
|
|
Compile(CompileCommand),
|
|
|
|
/// Watches the input file and recompiles on changes
|
|
#[command(visible_alias = "w")]
|
|
Watch(CompileCommand),
|
|
|
|
/// List all discovered fonts in system and custom font paths
|
|
Fonts(FontsCommand),
|
|
}
|
|
|
|
/// Compiles the input file into a PDF file
|
|
#[derive(Debug, Clone, Parser)]
|
|
pub struct CompileCommand {
|
|
/// Path to input Typst file
|
|
pub input: PathBuf,
|
|
|
|
/// Path to output PDF file
|
|
pub output: Option<PathBuf>,
|
|
|
|
/// Opens the output file after compilation using the default PDF viewer
|
|
#[arg(long = "open")]
|
|
pub open: Option<Option<String>>,
|
|
}
|
|
|
|
/// List all discovered fonts in system and custom font paths
|
|
#[derive(Debug, Clone, Parser)]
|
|
pub struct FontsCommand {
|
|
/// Also list style variants of each font family
|
|
#[arg(long)]
|
|
pub variants: bool,
|
|
}
|