From 1c324765e92c23826dff4f37d3b01761a3ac6ef4 Mon Sep 17 00:00:00 2001 From: figsoda Date: Thu, 6 Apr 2023 14:14:01 -0400 Subject: Add shell completions and man pages (#582) --- cli/src/args.rs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ cli/src/main.rs | 63 +++++++-------------------------------------------------- 2 files changed, 65 insertions(+), 56 deletions(-) create mode 100644 cli/src/args.rs (limited to 'cli/src') diff --git a/cli/src/args.rs b/cli/src/args.rs new file mode 100644 index 00000000..c88c9a21 --- /dev/null +++ b/cli/src/args.rs @@ -0,0 +1,58 @@ +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", value_name = "DIR", action = ArgAction::Append)] + pub font_paths: Vec, + + /// Configure the root for absolute paths + #[clap(long = "root", value_name = "DIR")] + pub root: Option, + + /// 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, + + /// Opens the output file after compilation using the default PDF viewer + #[arg(long = "open")] + pub open: Option>, +} + +/// 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, +} diff --git a/cli/src/main.rs b/cli/src/main.rs index d0dcc2bd..1190232d 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,3 +1,5 @@ +mod args; + use std::cell::{RefCell, RefMut}; use std::collections::HashMap; use std::fs::{self, File}; @@ -6,7 +8,7 @@ use std::io::{self, Write}; use std::path::{Path, PathBuf}; use std::process; -use clap::{ArgAction, Parser, Subcommand}; +use clap::Parser; use codespan_reporting::diagnostic::{Diagnostic, Label}; use codespan_reporting::term::{self, termcolor}; use comemo::Prehashed; @@ -25,64 +27,13 @@ use typst::util::{Buffer, PathExt}; use typst::World; use walkdir::WalkDir; +use crate::args::{CliArguments, Command, CompileCommand}; + type CodespanResult = Result; type CodespanError = codespan_reporting::files::Error; -const TYPST_VERSION: &str = env!("TYPST_VERSION"); - -/// typst creates PDF files from .typ files -#[derive(Debug, Clone, Parser)] -#[clap(name = "typst", version = TYPST_VERSION, author)] -pub struct CliArguments { - /// Add additional directories to search for fonts - #[clap(long = "font-path", value_name = "DIR", action = ArgAction::Append)] - font_paths: Vec, - - /// Configure the root for absolute paths - #[clap(long = "root", value_name = "DIR")] - root: Option, - - /// The typst command to run - #[command(subcommand)] - command: Command, -} - -/// What to do. -#[derive(Debug, Clone, Subcommand)] -#[command()] -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 - input: PathBuf, - - /// Path to output PDF file - output: Option, - - /// Opens the output file after compilation using the default PDF viewer - #[arg(long = "open")] - open: Option>, -} - -/// 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)] - variants: bool, +pub fn typst_version() -> &'static str { + env!("TYPST_VERSION") } /// A summary of the input arguments relevant to compilation. -- cgit v1.2.3