summaryrefslogtreecommitdiff
path: root/src/bin/main.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-08-02 16:56:14 +0200
committerLaurenz <laurmaedje@gmail.com>2020-08-02 16:56:14 +0200
commitd5ff97f42ed1e682a66ea8d51e5f9ed1be547b9c (patch)
tree2fdc3a368c4320051e3f62a460f3912fe5f44c7c /src/bin/main.rs
parent533374db14087ac54fdc86afa5f009487ac1b850 (diff)
Move binary into separate crate and tidy dependencies 🎭
Diffstat (limited to 'src/bin/main.rs')
-rw-r--r--src/bin/main.rs62
1 files changed, 0 insertions, 62 deletions
diff --git a/src/bin/main.rs b/src/bin/main.rs
deleted file mode 100644
index 6d115c1e..00000000
--- a/src/bin/main.rs
+++ /dev/null
@@ -1,62 +0,0 @@
-use std::cell::RefCell;
-use std::error::Error;
-use std::fs::{File, read_to_string};
-use std::io::BufWriter;
-use std::path::{Path, PathBuf};
-use std::rc::Rc;
-use futures_executor::block_on;
-
-use fontdock::fs::{FsIndex, FsProvider};
-use fontdock::FontLoader;
-use typstc::Typesetter;
-use typstc::font::DynProvider;
-use typstc::export::pdf;
-
-fn main() {
- if let Err(err) = run() {
- eprintln!("error: {}", err);
- std::process::exit(1);
- }
-}
-
-fn run() -> Result<(), Box<dyn Error>> {
- let args: Vec<String> = std::env::args().collect();
- if args.len() < 2 || args.len() > 3 {
- println!("typst");
- println!("usage: {} source [destination]",
- args.first().map(|s| s.as_str()).unwrap_or("typst"));
- std::process::exit(0);
- }
-
- let source = Path::new(&args[1]);
- let dest = if args.len() <= 2 {
- source.with_extension("pdf")
- } else {
- PathBuf::from(&args[2])
- };
-
- if source == dest {
- Err("source and destination path are the same")?;
- }
-
- let src = read_to_string(source)
- .map_err(|_| "failed to read from source file")?;
-
- let mut index = FsIndex::new();
- index.search_dir("fonts");
- index.search_os();
-
- let (descriptors, files) = index.into_vecs();
- let provider = FsProvider::new(files.clone());
- let dynamic = Box::new(provider) as Box<DynProvider>;
- let loader = FontLoader::new(dynamic, descriptors);
- let loader = Rc::new(RefCell::new(loader));
-
- let typesetter = Typesetter::new(loader.clone());
- let layouts = block_on(typesetter.typeset(&src)).output;
-
- let writer = BufWriter::new(File::create(&dest)?);
- pdf::export(&layouts, &loader, writer)?;
-
- Ok(())
-}