diff options
author | Kai WU <kaiwu2004@gmail.com> | 2024-07-29 14:43:55 +0800 |
---|---|---|
committer | Kai WU <kaiwu2004@gmail.com> | 2024-07-29 14:43:55 +0800 |
commit | 543b47caff677485da3e975f5a7f6b053c504eb1 (patch) | |
tree | a4924f049ba2e4869323014a1c385967e8ba6f78 | |
parent | 1a548b1d299d28242352f8a20d18bc1b377bd1ef (diff) | |
download | glv8-543b47caff677485da3e975f5a7f6b053c504eb1.tar.gz glv8-543b47caff677485da3e975f5a7f6b053c504eb1.zip |
use banner and footer
-rw-r--r-- | src/build.gleam | 31 | ||||
-rw-r--r-- | src/build_ffi.mjs | 19 |
2 files changed, 22 insertions, 28 deletions
diff --git a/src/build.gleam b/src/build.gleam index f0da63d..9f5a02b 100644 --- a/src/build.gleam +++ b/src/build.gleam @@ -1,31 +1,36 @@ -import gleam/io +// import gleam/io +// import gleam/result import gleam/javascript/promise.{type Promise} -import gleam/result pub const prefix = "glv8" @external(javascript, "./build_ffi.mjs", "bundle_build") pub fn bundle_build( - entry f: String, + entry e: String, global g: String, + banner b: String, + footer f: String, outfile o: String, -) -> Promise(Result(Nil, String)) - -@external(javascript, "./build_ffi.mjs", "copy_build") -pub fn copy_build( - json f: String, - outfile o: String, -) -> Promise(Result(Nil, String)) +) -> Promise(Result(String, String)) const entry = "./build/dev/javascript/glv8/bundle.mjs" const dist = "./dist/" +const banner = "CREATE OR REPLACE FUNCTION glv8_init() RETURNS void LANGUAGE plv8 AS $function$" + +const footer = " = app.exports(); $function$" + pub fn main() { - use r <- promise.await(bundle_build(entry, "app", dist <> "app.js")) - use _ <- promise.await(copy_build(dist <> "app.js", dist <> "glv8_init.sql")) + use r <- promise.await(bundle_build( + entry, + "app", + banner, + prefix <> footer, + dist <> "glv8_init.sql", + )) r - |> result.map_error(fn(e) { io.println_error(e) }) + // |> result.map_error(fn(e) { io.println_error(e) }) |> promise.resolve } diff --git a/src/build_ffi.mjs b/src/build_ffi.mjs index 7a4c045..962562c 100644 --- a/src/build_ffi.mjs +++ b/src/build_ffi.mjs @@ -1,10 +1,12 @@ import { build, context } from 'esbuild' import { Ok, Error } from "./gleam.mjs" -export function bundle_build(entry, global, out) { +export function bundle_build(entry, global, ba, fo, out) { return new Promise(resolve => { build({ entryPoints: [entry], + banner: {js: ba}, + footer: {js: fo}, bundle: true, minify: true, keepNames: true, @@ -12,23 +14,10 @@ export function bundle_build(entry, global, out) { globalName: global, outfile: out, }).then(function(r){ - resolve(new Ok(undefined)) + resolve(new Ok(Nil)) }).catch(function(e){ resolve(new Error(JSON.stringify(e))) }) }) } -export function copy_build(src, out) { - return new Promise(resolve => { - build({ - entryPoints: [src], - loader: {'.js': 'copy'}, - outfile: out, - }).then(function(r){ - resolve(new Ok(undefined)) - }).catch(function(e){ - resolve(new Error(JSON.stringify(e))) - }) - }) -} |