crossbundle_tools/commands/android/common/
write_zip.rs

1use std::path::Path;
2use zip::ZipWriter;
3use zip_extensions::write::ZipWriterExtensions;
4
5/// Writing files into archive
6pub fn zip_write(source_path: &Path, archive_file: &Path) -> zip::result::ZipResult<()> {
7    let file = std::fs::File::create(archive_file)?;
8    let mut zip = ZipWriter::new(file);
9    zip.create_from_directory(&source_path.to_path_buf())?;
10    Ok(())
11}
12
13/// Moving AndroidManifest.xml file into directory to write files to archive
14pub fn zip_dirs_to_write(source_path: &Path) -> fs_extra::error::Result<()> {
15    let path = source_path.join("AndroidManifest.xml");
16    if path.exists() {
17        let manifest_path = source_path.join("manifest");
18        if !manifest_path.exists() {
19            std::fs::create_dir_all(&manifest_path)?;
20        }
21        let mut options = fs_extra::file::CopyOptions::new();
22        options.overwrite = true;
23        fs_extra::file::move_file(&path, &manifest_path.join("AndroidManifest.xml"), &options)?;
24    }
25    Ok(())
26}