Updates for md2pdf #1
							
								
								
									
										38
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								src/main.rs
									
									
									
									
									
								
							| @ -1,6 +1,8 @@ | ||||
| use std::fs::File; | ||||
| use std::io::{Read, Write}; | ||||
| use std::process::exit; | ||||
| use std::path::PathBuf; | ||||
| use std::ffi::OsStr; | ||||
| 
 | ||||
| use clap::{crate_authors, crate_description, crate_name, crate_version, Command, Arg}; | ||||
| 
 | ||||
| @ -30,34 +32,42 @@ fn main() { | ||||
|              .short('i') | ||||
|              .help("Input markdown files") | ||||
|              .required(true) | ||||
|              .value_parser(clap::value_parser!(std::path::PathBuf)) | ||||
|              .value_parser(clap::value_parser!(PathBuf)) | ||||
|             ) | ||||
|         .arg(Arg::new("OUTPUT") | ||||
|              .long("output") | ||||
|              .short('o') | ||||
|              .help("Output tex or pdf file") | ||||
|              .required(true) | ||||
|              .value_parser(clap::value_parser!(std::path::PathBuf)) | ||||
|              .value_parser(clap::value_parser!(PathBuf)) | ||||
|             ) | ||||
|         .get_matches(); | ||||
| 
 | ||||
|     let input_path = matches.get_one::<std::path::PathBuf>("INPUT").unwrap(); | ||||
|     let input_path = matches.get_one::<PathBuf>("INPUT").unwrap(); | ||||
|     let mut content = String::new(); | ||||
|     let mut input = unwrap!(File::open(input_path), "couldn't open input file"); | ||||
|     unwrap!(input.read_to_string(&mut content), "couldn't read file content"); | ||||
| 
 | ||||
|     let output_path = matches.get_one::<std::path::PathBuf>("OUTPUT").unwrap(); | ||||
|     let output_path = matches.get_one::<PathBuf>("OUTPUT").unwrap(); | ||||
|     let output_path_ext = output_path.extension().and_then(OsStr::to_str); | ||||
|     let mut output = unwrap!(File::create(output_path), "couldn't open output file"); | ||||
| 
 | ||||
|     if output_path.ends_with(".tex") { | ||||
|         let tex = markdown_to_latex(content); | ||||
|         unwrap!(output.write(tex.as_bytes()), "couldn't write output file"); | ||||
|     } else if output_path.ends_with(".pdf") { | ||||
|         let data = unwrap!(markdown_to_pdf(content), "error while compiling latex, this is most likely a bug"); | ||||
|         unwrap!(output.write(&data), "coudln't write output file"); | ||||
|     } else { | ||||
|         eprintln!("unknown file format for output: {}", output_path.display()); | ||||
|         exit(1); | ||||
|     match output_path_ext { | ||||
|         Some("tex") => { | ||||
|             let tex = markdown_to_latex(content); | ||||
|             unwrap!(output.write(tex.as_bytes()), "couldn't write output file"); | ||||
|         }, | ||||
|         Some("pdf") => { | ||||
|             let data = unwrap!(markdown_to_pdf(content), "error while compiling latex, this is most likely a bug"); | ||||
|             unwrap!(output.write(&data), "couldn't write output file"); | ||||
|         }, | ||||
|         Some(ext) => { | ||||
|             eprintln!("unknown file format ({}) for output: {}", ext, output_path.display()); | ||||
|             exit(1); | ||||
|         }, | ||||
|         None => { | ||||
|             eprintln!("unknown file format for output: {}", output_path.display()); | ||||
|             exit(1); | ||||
|         }, | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user