#!/bin/bash # https://docs.sheetjs.com/docs/demos/engines/duktape#zig-demo cd /tmp rm -rf sheetjs-zig mkdir -p sheetjs-zig cd sheetjs-zig OS="$(uname -s)" ARCH="$(uname -m)" case "$ARCH" in x86_64) ZIG_ARCH="x86_64" ;; aarch64|arm64) ZIG_ARCH="aarch64" ;; *) echo "unsupported arch $ARCH"; exit 1 ;; esac ZIG_VERSION="0.15.2" case "$OS" in Darwin) FILENAME="zig-${ZIG_ARCH}-macos-${ZIG_VERSION}.tar.xz" curl -LO "https://ziglang.org/download/${ZIG_VERSION}/${FILENAME}" tar -xzf "${FILENAME}" ;; Linux) FILENAME="zig-${ZIG_ARCH}-linux-${ZIG_VERSION}.tar.xz" curl -LO "https://ziglang.org/download/${ZIG_VERSION}/${FILENAME}" xz -d zig-*.tar.xz tar -xf zig-*.tar ;; *) echo "unsupported OS: $OS" exit 1 ;; esac ./zig-*/zig init curl -LO https://duktape.org/duktape-2.7.0.tar.xz tar -xJf duktape-2.7.0.tar.xz curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/shim.min.js curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js curl -LO https://docs.sheetjs.com/pres.numbers mv *.js src curl -L -o src/main.zig https://docs.sheetjs.com/duk/main.zig sed '/b.installArtifact(exe);/ i\ exe.addCSourceFile(.{ .file = b.path("duktape-2.7.0/src/duktape.c"), .flags = &.{ "-std=c99", "-fno-sanitize=undefined" } });\ exe.addIncludePath(b.path("duktape-2.7.0/src"));\ exe.linkSystemLibrary("c");\ exe.linkSystemLibrary("m");' build.zig > build.zig.tmp && mv build.zig.tmp build.zig ./zig-*/zig build run -- pres.numbers; echo $? npx -y xlsx-cli sheetjs.zig.xlsx