Sample code for 30+ languages & platforms
Zig

Zip -- Exclude Files Based on Wildcard Matching

See more Zip Examples

Demonstrates how to use the SetExclusions method to exclude matching files from being added to a .zip.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    const zip = try chilkat.Zip.init();
    defer zip.deinit();

    try zip.newZip("qa_output/x.zip");

    // Let's add files from the directory tree rooted at C:\AAWorkarea\ChilkatSampleProjects

    // However.. we want to exclude all files ending in ".cache" or ".pdb" regardless of the sub-directory.
    // Also exclude all files under any "obj" directory,
    // and we also want to exclude any .exe found under a "win10-x64" directory.

    const sa_excludes = try chilkat.StringArray.init();
    defer sa_excludes.deinit();
    sa_excludes.append("*.cache") catch {};
    sa_excludes.append("*.pdb") catch {};
    sa_excludes.append("*/obj/*") catch {};
    sa_excludes.append("*/win10-x64/*.exe") catch {};
    zip.setExclusions(sa_excludes);

    // Append promises of paths and files to be zipped.
    const recurse = true;
    zip.appendFiles("c:/AAWorkArea/ChilkatSampleProjects/*", recurse) catch {
        std.debug.print("{s}\n", .{try zip.getLastErrorText(alloc)});
        return;
    };

    // Create the zip from the file and directory promises added previously.
    zip.writeZipAndClose() catch {
        std.debug.print("{s}\n", .{try zip.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Success.\n", .{});
}