1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use std::fs::File;
use std::path::PathBuf;
use flate2::Compression;
use flate2::write::GzEncoder;
use tar::Builder;
use crate::check_source_dir;

const KWUI_TEMPLATES: &'static str = "kwui-templates";

pub fn package(source_dir: &PathBuf, key: &str) -> anyhow::Result<()> {
    println!("Template release on source_dir [{}] with key {} ...", source_dir.display(), key);
    check_source_dir(source_dir)?;

    let cpp_android_template_dir = source_dir.join("kwui-sys/deps/kwui/cmake/AndroidPackaging.template");
    let kwui_android_template_dir = source_dir.join("kwui-sys/deps/kwui/android/kwui");
    let app_template_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("templates/app");

    let out_filename = format!("{}-{}.tar.gz", KWUI_TEMPLATES, key);
    let tar_gz = File::create(&out_filename)?;
    let enc = GzEncoder::new(tar_gz, Compression::default());
    let mut tar = Builder::new(enc);

    tar.append_dir_all("app", app_template_dir)?;
    tar.append_dir_all("app/android", cpp_android_template_dir)?;
    tar.append_dir_all("app/android/kwui", kwui_android_template_dir)?;
    tar.finish()?;

    println!("Finished package [{}]", out_filename);

    Ok(())
}