59 lines
1.5 KiB
Bash
Executable File
59 lines
1.5 KiB
Bash
Executable File
#!/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
|