:sig
bool zip_create(String zip_file_name, DValue entries)

:params
zip_file_name : path to the archive to create
entries : map or list of archive entries
return value : `true` when the archive is written

:see
>sys
zip_list
zip_read
zip_extract
DValue

:content
Creates a ZIP archive at `zip_file_name`.

`entries` can be a simple map where each key is the archive member name and each value is the file content:


For list-shaped input or when the map key should not be the member name, each child can provide explicit fields:


An entry may also provide `file` instead of `content`; UCE reads that source file and stores its contents under `name`.

Entry names are normalized to forward slashes and rejected when they are absolute paths, drive-qualified paths, empty names, or contain `..` path segments.

:example
DValue entries;
entries["readme.txt"] = "hello from UCE";
entries["license.txt"] = "MIT license";
zip_create("/tmp/doc-zip.zip", entries);
print("readme.txt in archive: ", zip_read("/tmp/doc-zip.zip", "readme.txt"), "\n");
