#!/usr/bin/env bash
# shellcheck disable=SC2086

# CLI options for esbuild
log="--log-level=error"
production_node_opts="--bundle --platform=node --minify --sourcemap --external:@kreuzberg/html-to-markdown --external:jiti --outfile=./build/commands/"
debugging_node_opts="--bundle --platform=node --sourcemap --external:@kreuzberg/html-to-markdown --external:jiti --outfile=./build/commands/"
react_opts="--platform=node --external:@griddo-instance --external:react --external:react-dom --external:@kreuzberg/html-to-markdown --bundle --minify"

# Manage --minify for debugging
bundle_node_opts=$production_node_opts
if [ "$1" = "--debug" ]; then
    bundle_node_opts=$debugging_node_opts
fi

# library
esbuild ${log} ./exporter/index.ts --bundle --platform=node --external:@kreuzberg/html-to-markdown --outfile=./build/index.js
esbuild ${log} ./exporter/react/index.tsx ${react_opts} --outfile=./build/react/index.js

# This .sh needs to be run from a npm script, so esbuild dependency is available
esbuild ${log} ./exporter/commands/end-render.ts ${bundle_node_opts}end-render.js
esbuild ${log} ./exporter/commands/upload-search-content.ts ${bundle_node_opts}upload-search-content.js
esbuild ${log} ./exporter/commands/notify-indexnow.ts ${bundle_node_opts}notify-indexnow.js
esbuild ${log} ./exporter/commands/reset-render.ts ${bundle_node_opts}reset-render.js
esbuild ${log} ./exporter/commands/start-render.ts ${bundle_node_opts}start-render.js
esbuild ${log} ./exporter/commands/prepare-domains-render.ts ${bundle_node_opts}prepare-domains-render.js
esbuild ${log} ./exporter/commands/prepare-assets-directory.ts ${bundle_node_opts}prepare-assets-directory.js

# types
tsgo --emitDeclarationOnly --declaration --outDir build --project tsconfig.exporter.json

echo "Build completed successfully!"