From 521b13211aac9e5f0c005bd0a1f804ec1e19b187 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 11 Apr 2021 17:01:48 +0200 Subject: Get PDF file path from free command line argument Add 'getopts' to parse command line arguments. Replace `--fill` argument condition with 'getopts'. Replace the hard-coded PDF file path with one from the command line argument. --- Cargo.lock | 16 ++++++++++++++++ Cargo.toml | 1 + src/main.rs | 16 ++++++++++++++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c1779ef..ae4aeee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -332,11 +332,21 @@ name = "formurapid" version = "0.0.1" dependencies = [ "derive_builder", + "getopts", "pdf_forms", "serde", "toml", ] +[[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", +] + [[package]] name = "gif" version = "0.11.2" @@ -854,6 +864,12 @@ dependencies = [ "serde", ] +[[package]] +name = "unicode-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + [[package]] name = "unicode-xid" version = "0.0.4" diff --git a/Cargo.toml b/Cargo.toml index 3697c5d..af7c62b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,7 @@ edition = "2018" [dependencies] derive_builder = "0.10.0" +getopts = "0.2.21" pdf_forms = "0.3.4" serde = { version = "1.0.125", features = ["derive"] } toml = "0.5.8" diff --git a/src/main.rs b/src/main.rs index 0577197..ff765e1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ use derive_builder::Builder; +use getopts::Options; use pdf_forms::{Form, FieldType}; use serde::{Deserialize, Serialize}; @@ -27,9 +28,20 @@ struct Field<'a> { fn main() { let args: Vec = env::args().collect(); - let mut form = Form::load("./f1040.pdf").unwrap(); + let mut opts = Options::new(); + opts.optflag("", "fill", "fill in the form using a markup file"); - if args.len() == 2 && args[1] == "--fill" { + let opt_matches = opts.parse(&args[1..]).unwrap(); + + if opt_matches.free.is_empty() { + return; + } + + let form_path = &opt_matches.free[0]; + + let mut form = Form::load(form_path).unwrap(); + + if opt_matches.opt_present("fill") { fill("./f1040.toml", &mut form); return; -- cgit v1.2.3