2019-08-23 05:17:15 +02:00
|
|
|
extern crate clap;
|
|
|
|
extern crate monolith;
|
|
|
|
|
|
|
|
use clap::{Arg, App};
|
|
|
|
use monolith::http::{is_url, retrieve_asset};
|
|
|
|
use monolith::html::{walk_and_embed_assets, html_to_dom, print_dom};
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let command = App::new("monolith")
|
2019-08-23 10:33:30 +02:00
|
|
|
.version("2.0.3")
|
2019-08-23 05:17:15 +02:00
|
|
|
.author("Sunshine <sunshine@uberspace.net>")
|
|
|
|
.about("CLI tool to save web pages as single HTML files")
|
|
|
|
.arg(Arg::with_name("url")
|
|
|
|
.required(true)
|
|
|
|
.takes_value(true)
|
|
|
|
.index(1)
|
|
|
|
.help("URL to download"))
|
2019-08-23 10:33:30 +02:00
|
|
|
.args_from_usage("-j, --no-js 'Excludes JavaScript'")
|
|
|
|
.args_from_usage("-i, --no-images 'Removes images'")
|
2019-08-23 05:17:15 +02:00
|
|
|
.get_matches();
|
|
|
|
|
|
|
|
// Process the command
|
|
|
|
let arg_target = command.value_of("url").unwrap();
|
2019-08-23 10:33:30 +02:00
|
|
|
let opt_no_js = command.is_present("no-js");
|
|
|
|
let opt_no_img = command.is_present("no-images");
|
2019-08-23 05:17:15 +02:00
|
|
|
|
|
|
|
if is_url(arg_target) {
|
|
|
|
let data = retrieve_asset(&arg_target, false, "");
|
|
|
|
let dom = html_to_dom(&data.unwrap());
|
|
|
|
|
2019-08-23 10:33:30 +02:00
|
|
|
walk_and_embed_assets(&arg_target, &dom.document, opt_no_js, opt_no_img);
|
2019-08-23 05:17:15 +02:00
|
|
|
|
2019-08-23 10:33:30 +02:00
|
|
|
print_dom(&dom.document);
|
2019-08-23 05:17:15 +02:00
|
|
|
}
|
|
|
|
}
|