allow universal_lambda_build.zig to be used by its own project
This commit is contained in:
parent
db061ecbdc
commit
97d976eebd
|
@ -184,9 +184,14 @@ const Event = struct {
|
||||||
var req = try cl.request(.POST, response_uri, empty_headers, .{});
|
var req = try cl.request(.POST, response_uri, empty_headers, .{});
|
||||||
// var req = try client.?.request(.POST, response_uri, empty_headers, .{});
|
// var req = try client.?.request(.POST, response_uri, empty_headers, .{});
|
||||||
defer req.deinit();
|
defer req.deinit();
|
||||||
|
// Lambda does different things, depending on the runtime. Go 1.x takes
|
||||||
|
// any return value but escapes double quotes. Custom runtimes can
|
||||||
|
// do whatever they want. node I believe wraps as a json object. We're
|
||||||
|
// going to leave the return value up to the handler, and they can
|
||||||
|
// use a seperate API for normalization so we're explicit.
|
||||||
const response_content = try std.fmt.allocPrint(
|
const response_content = try std.fmt.allocPrint(
|
||||||
self.allocator,
|
self.allocator,
|
||||||
"{{ \"content\": \"{s}\" }}",
|
"{s}",
|
||||||
.{event_response},
|
.{event_response},
|
||||||
);
|
);
|
||||||
defer self.allocator.free(response_content);
|
defer self.allocator.free(response_content);
|
||||||
|
@ -465,9 +470,8 @@ test "basic request" {
|
||||||
\\{"foo": "bar", "baz": "qux"}
|
\\{"foo": "bar", "baz": "qux"}
|
||||||
;
|
;
|
||||||
|
|
||||||
// This is what's actually coming back. Is this right?
|
|
||||||
const expected_response =
|
const expected_response =
|
||||||
\\{ "content": "{"foo": "bar", "baz": "qux"}" }
|
\\{"foo": "bar", "baz": "qux"}
|
||||||
;
|
;
|
||||||
const lambda_response = try lambda_request(allocator, request, 1);
|
const lambda_response = try lambda_request(allocator, request, 1);
|
||||||
defer deinit();
|
defer deinit();
|
||||||
|
@ -482,7 +486,6 @@ test "several requests do not fail" {
|
||||||
\\{"foo": "bar", "baz": "qux"}
|
\\{"foo": "bar", "baz": "qux"}
|
||||||
;
|
;
|
||||||
|
|
||||||
// This is what's actually coming back. Is this right?
|
|
||||||
const expected_response =
|
const expected_response =
|
||||||
\\{ "content": "{"foo": "bar", "baz": "qux"}" }
|
\\{ "content": "{"foo": "bar", "baz": "qux"}" }
|
||||||
;
|
;
|
||||||
|
|
|
@ -12,22 +12,24 @@ pub const BuildType = enum {
|
||||||
flexilib,
|
flexilib,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn configureBuild(b: *std.Build, exe: *std.Build.Step.Compile) !void {
|
pub var module_root: ?[]const u8 = null;
|
||||||
|
|
||||||
|
pub fn configureBuild(b: *std.Build, cs: *std.Build.Step.Compile) !void {
|
||||||
const file_location = try findFileLocation(b);
|
const file_location = try findFileLocation(b);
|
||||||
// Add module
|
// Add module
|
||||||
exe.addAnonymousModule("universal_lambda_handler", .{
|
cs.addAnonymousModule("universal_lambda_handler", .{
|
||||||
// Source file can be anywhere on disk, does not need to be a subdirectory
|
// Source file can be anywhere on disk, does not need to be a subdirectory
|
||||||
.source_file = .{ .path = b.pathJoin(&[_][]const u8{ file_location, "universal_lambda.zig" }) },
|
.source_file = .{ .path = b.pathJoin(&[_][]const u8{ file_location, "universal_lambda.zig" }) },
|
||||||
.dependencies = &[_]std.Build.ModuleDependency{.{
|
.dependencies = &[_]std.Build.ModuleDependency{.{
|
||||||
.name = "build_options",
|
.name = "build_options",
|
||||||
.module = try createOptionsModule(b, exe),
|
.module = try createOptionsModule(b, cs),
|
||||||
}},
|
}},
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add steps
|
// Add steps
|
||||||
try @import("lambda_build.zig").configureBuild(b, exe);
|
try @import("lambda_build.zig").configureBuild(b, cs);
|
||||||
try @import("standalone_server_build.zig").configureBuild(b, exe);
|
try @import("standalone_server_build.zig").configureBuild(b, cs);
|
||||||
try @import("flexilib_build.zig").configureBuild(b, exe, file_location);
|
try @import("flexilib_build.zig").configureBuild(b, cs, file_location);
|
||||||
|
|
||||||
// Add options module so we can let our universal_lambda know what
|
// Add options module so we can let our universal_lambda know what
|
||||||
// type of interface is necessary
|
// type of interface is necessary
|
||||||
|
@ -58,6 +60,7 @@ pub fn configureBuild(b: *std.Build, exe: *std.Build.Step.Compile) !void {
|
||||||
/// for the example build.zig to simply import the file directly than it is
|
/// for the example build.zig to simply import the file directly than it is
|
||||||
/// to pull from a download location and update hashes every time we change
|
/// to pull from a download location and update hashes every time we change
|
||||||
fn findFileLocation(b: *std.Build) ![]const u8 {
|
fn findFileLocation(b: *std.Build) ![]const u8 {
|
||||||
|
if (module_root) |r| return b.pathJoin(&[_][]const u8{ r, "src" });
|
||||||
const build_root = b.option([]const u8, "universal_lambda_build_root", "Build root for universal lambda (development of universal lambda only)");
|
const build_root = b.option([]const u8, "universal_lambda_build_root", "Build root for universal lambda (development of universal lambda only)");
|
||||||
if (build_root) |br| {
|
if (build_root) |br| {
|
||||||
return b.pathJoin(&[_][]const u8{ br, "src" });
|
return b.pathJoin(&[_][]const u8{ br, "src" });
|
||||||
|
@ -72,7 +75,7 @@ fn findFileLocation(b: *std.Build) ![]const u8 {
|
||||||
/// Make our target platform visible to runtime through an import
|
/// Make our target platform visible to runtime through an import
|
||||||
/// called "build_options". This will also be available to the consuming
|
/// called "build_options". This will also be available to the consuming
|
||||||
/// executable if needed
|
/// executable if needed
|
||||||
fn createOptionsModule(b: *std.Build, exe: *std.Build.Step.Compile) !*std.Build.Module {
|
pub fn createOptionsModule(b: *std.Build, cs: *std.Build.Step.Compile) !*std.Build.Module {
|
||||||
// We need to go through the command line args, look for argument(s)
|
// We need to go through the command line args, look for argument(s)
|
||||||
// between "build" and anything prefixed with "-". First take, blow up
|
// between "build" and anything prefixed with "-". First take, blow up
|
||||||
// if there is more than one. That's the step we're rolling with
|
// if there is more than one. That's the step we're rolling with
|
||||||
|
@ -83,8 +86,8 @@ fn createOptionsModule(b: *std.Build, exe: *std.Build.Step.Compile) !*std.Build.
|
||||||
defer b.allocator.free(args);
|
defer b.allocator.free(args);
|
||||||
const options = b.addOptions();
|
const options = b.addOptions();
|
||||||
options.addOption(BuildType, "build_type", findBuildType(args) orelse .exe_run);
|
options.addOption(BuildType, "build_type", findBuildType(args) orelse .exe_run);
|
||||||
exe.addOptions("build_options", options);
|
cs.addOptions("build_options", options);
|
||||||
return exe.modules.get("build_options").?;
|
return cs.modules.get("build_options").?;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn findBuildType(build_args: [][:0]u8) ?BuildType {
|
fn findBuildType(build_args: [][:0]u8) ?BuildType {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user