diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 395c477..c3b1e19 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,4 +30,13 @@ jobs: run: cargo build --verbose --all-features - name: Run tests - run: cargo test --verbose --all-features \ No newline at end of file + run: cargo test --verbose --all-features + + - name: Test init + run: cargo run -- init + + - name: Test HTML + run: cargo run -- render README.md README.html --format html + + - name: Test PDF + run: cargo run --all-features -- render README.md README.pdf --format pdf \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 5408e17..bb33b2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "addr2line" version = "0.14.1" @@ -119,6 +121,12 @@ dependencies = [ "byteorder", ] +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + [[package]] name = "base64" version = "0.12.3" @@ -215,6 +223,27 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +[[package]] +name = "bzip2" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.10+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17fa3d1ac1ca21c5c4e36a97f3c3eb25084576f6fc47bf0139c1123434216c6c" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "cc" version = "1.0.66" @@ -263,6 +292,12 @@ dependencies = [ "time", ] +[[package]] +name = "chunked_transfer" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e" + [[package]] name = "clap" version = "2.33.3" @@ -347,6 +382,16 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "cookie" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" +dependencies = [ + "time", + "url 1.7.2", +] + [[package]] name = "core-foundation" version = "0.9.1" @@ -514,6 +559,16 @@ dependencies = [ "generic-array", ] +[[package]] +name = "directories" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371c" +dependencies = [ + "cfg-if 0.1.10", + "dirs-sys", +] + [[package]] name = "dirs" version = "2.0.2" @@ -846,6 +901,7 @@ checksum = "b972f505b0adbacd697b3d78c94fbaf9c02d569ca11d416816956851f3a83017" dependencies = [ "base64 0.10.1", "derive_builder", + "directories", "env_logger 0.6.2", "failure", "log 0.4.13", @@ -855,9 +911,11 @@ dependencies = [ "serde_derive", "serde_json", "tempfile", + "ureq", "websocket", "which", "winreg 0.6.2", + "zip", ] [[package]] @@ -1712,6 +1770,12 @@ dependencies = [ "miniz_oxide 0.3.7", ] +[[package]] +name = "podio" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b18befed8bc2b61abc79a457295e7e838417326da1586050b919414073977f19" + [[package]] name = "ppv-lite86" version = "0.2.10" @@ -1760,6 +1824,15 @@ dependencies = [ "unicode-xid 0.2.1", ] +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding 2.1.0", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -2093,6 +2166,21 @@ dependencies = [ "winreg 0.7.0", ] +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + [[package]] name = "rsass" version = "0.16.0" @@ -2133,6 +2221,19 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" +[[package]] +name = "rustls" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" +dependencies = [ + "base64 0.10.1", + "log 0.4.13", + "ring", + "sct", + "webpki", +] + [[package]] name = "ryu" version = "1.0.5" @@ -2182,6 +2283,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "sct" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "security-framework" version = "2.0.0" @@ -2363,6 +2474,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "static_assertions" version = "1.1.0" @@ -2721,6 +2838,29 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801125e6d1ba6864cf3a5a92cfb2f0b0a3ee73e40602a0cd206ad2f3c040aa96" +dependencies = [ + "base64 0.11.0", + "chunked_transfer", + "cookie", + "lazy_static", + "qstring", + "rustls", + "url 2.2.0", + "webpki", + "webpki-roots", +] + [[package]] name = "url" version = "1.7.2" @@ -2879,6 +3019,25 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" +dependencies = [ + "webpki", +] + [[package]] name = "websocket" version = "0.23.0" @@ -2996,3 +3155,16 @@ checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" dependencies = [ "linked-hash-map 0.5.4", ] + +[[package]] +name = "zip" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58287c28d78507f5f91f2a4cf1e8310e2c76fd4c6932f93ac60fd1ceb402db7d" +dependencies = [ + "bzip2", + "crc32fast", + "flate2", + "podio", + "time", +] diff --git a/Cargo.toml b/Cargo.toml index 6714646..90a23fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,5 +53,5 @@ sha2 = "0.9.2" config = "0.10.1" rsass = "0.16.0" -headless_chrome = { version = "0.9.0", optional = true } +headless_chrome = { version = "0.9.0", optional = true, features = ["fetch"] } failure = { version = "0.1.8", optional = true } diff --git a/src/format/chromium_pdf/mod.rs b/src/format/chromium_pdf/mod.rs index 761824e..5fa260d 100644 --- a/src/format/chromium_pdf/mod.rs +++ b/src/format/chromium_pdf/mod.rs @@ -12,7 +12,7 @@ use crate::settings::Settings; use crate::utils::caching::CacheStorage; use bibliographix::Mutex; use headless_chrome::protocol::page::PrintToPdfOptions; -use headless_chrome::{Browser, LaunchOptionsBuilder, Tab}; +use headless_chrome::{Browser, Tab}; use std::fs; use std::fs::OpenOptions; use std::io::BufWriter; @@ -50,7 +50,7 @@ pub fn render_to_pdf(document: Document) -> PdfRenderingResult> { } }); - let browser = Browser::new(LaunchOptionsBuilder::default().build().unwrap())?; + let browser = Browser::default()?; let tab = browser.wait_for_initial_tab()?; handle.join().unwrap()?; tab.navigate_to(format!("file:///{}", file_path.to_string_lossy()).as_str())?;