Skip to main content

exporter/
exporter.rs

1extern crate abxml;
2extern crate byteorder;
3extern crate env_logger;
4extern crate failure;
5extern crate log;
6extern crate zip;
7
8use std::{env, path::Path};
9
10use failure::{Error, ResultExt};
11
12use abxml::apk::Apk;
13
14fn main() {
15    env_logger::try_init().unwrap();
16
17    if let Err(ref e) = run() {
18        println!("error: {}", e);
19
20        for e in e.iter_causes() {
21            println!("caused by: {}", e);
22        }
23
24        ::std::process::exit(1);
25    }
26}
27
28fn run() -> Result<(), Error> {
29    let apk_path = match env::args().nth(1) {
30        Some(path) => path,
31        None => {
32            println!("Usage: exporter <apk> <path>");
33            return Ok(());
34        }
35    };
36
37    let output = match env::args().nth(2) {
38        Some(path) => path,
39        None => {
40            println!("Usage: exporter <apk> <path>");
41            return Ok(());
42        }
43    };
44
45    let mut apk = Apk::from_path(&apk_path).context("error loading APK")?;
46    apk.export(Path::new(&output), true)
47        .context("APK could not be exported")?;
48
49    Ok(())
50}