initial commit
This commit is contained in:
		
							parent
							
								
									fcc1f2698a
								
							
						
					
					
						commit
						abe59468b6
					
				
					 5 changed files with 133 additions and 0 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | zig-cache/ | ||||||
|  | zig-out/ | ||||||
							
								
								
									
										21
									
								
								LICENSE
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSE
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | MIT License | ||||||
|  | 
 | ||||||
|  | Copyright (c) 2023 Emil Lerch | ||||||
|  | 
 | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  | of this software and associated documentation files (the "Software"), to deal | ||||||
|  | in the Software without restriction, including without limitation the rights | ||||||
|  | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  | copies of the Software, and to permit persons to whom the Software is | ||||||
|  | furnished to do so, subject to the following conditions: | ||||||
|  | 
 | ||||||
|  | The above copyright notice and this permission notice shall be included in all | ||||||
|  | copies or substantial portions of the Software. | ||||||
|  | 
 | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  | SOFTWARE. | ||||||
							
								
								
									
										16
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | Upload worker to CloudFlare | ||||||
|  | =========================== | ||||||
|  | 
 | ||||||
|  | Steps we take: | ||||||
|  | -------------- | ||||||
|  | 
 | ||||||
|  | 1. Check if the worker exists: | ||||||
|  |    GET https://api.cloudflare.com/client/v4/accounts/<account id>/workers/services/<worker_name> | ||||||
|  |    404 - does not exist | ||||||
|  | 2. Add the "script" | ||||||
|  |    PUT https://api.cloudflare.com/client/v4/accounts/<account id>/workers/scripts/<worker_name>?include_subdomain_availability=true&excludeScript=true | ||||||
|  | 3. Get the "subdomain". I believe this is simply to determine the test url: | ||||||
|  |    GET https://api.cloudflare.com/client/v4/accounts/<account id>/workers/subdomain | ||||||
|  | 4. Enable the script: This is **only** done if the script did not exist. Subsequent flows leave this alone | ||||||
|  |    POST https://api.cloudflare.com/client/v4/accounts/<account id>/workers/scripts/<worker_name>/subdomain | ||||||
|  |    Data: { "enabled": true } | ||||||
							
								
								
									
										70
									
								
								build.zig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								build.zig
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,70 @@ | ||||||
|  | const std = @import("std"); | ||||||
|  | 
 | ||||||
|  | // Although this function looks imperative, note that its job is to | ||||||
|  | // declaratively construct a build graph that will be executed by an external | ||||||
|  | // runner. | ||||||
|  | pub fn build(b: *std.Build) void { | ||||||
|  |     // Standard target options allows the person running `zig build` to choose | ||||||
|  |     // what target to build for. Here we do not override the defaults, which | ||||||
|  |     // means any target is allowed, and the default is native. Other options | ||||||
|  |     // for restricting supported target set are available. | ||||||
|  |     const target = b.standardTargetOptions(.{}); | ||||||
|  | 
 | ||||||
|  |     // Standard optimization options allow the person running `zig build` to select | ||||||
|  |     // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not | ||||||
|  |     // set a preferred release mode, allowing the user to decide how to optimize. | ||||||
|  |     const optimize = b.standardOptimizeOption(.{}); | ||||||
|  | 
 | ||||||
|  |     const exe = b.addExecutable(.{ | ||||||
|  |         .name = "zigwasi", | ||||||
|  |         // In this case the main source file is merely a path, however, in more | ||||||
|  |         // complicated build scripts, this could be a generated file. | ||||||
|  |         .root_source_file = .{ .path = "src/main.zig" }, | ||||||
|  |         .target = target, | ||||||
|  |         .optimize = optimize, | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     // This declares intent for the executable to be installed into the | ||||||
|  |     // standard location when the user invokes the "install" step (the default | ||||||
|  |     // step when running `zig build`). | ||||||
|  |     b.installArtifact(exe); | ||||||
|  | 
 | ||||||
|  |     // This *creates* a Run step in the build graph, to be executed when another | ||||||
|  |     // step is evaluated that depends on it. The next line below will establish | ||||||
|  |     // such a dependency. | ||||||
|  |     const run_cmd = b.addRunArtifact(exe); | ||||||
|  | 
 | ||||||
|  |     // By making the run step depend on the install step, it will be run from the | ||||||
|  |     // installation directory rather than directly from within the cache directory. | ||||||
|  |     // This is not necessary, however, if the application depends on other installed | ||||||
|  |     // files, this ensures they will be present and in the expected location. | ||||||
|  |     run_cmd.step.dependOn(b.getInstallStep()); | ||||||
|  | 
 | ||||||
|  |     // This allows the user to pass arguments to the application in the build | ||||||
|  |     // command itself, like this: `zig build run -- arg1 arg2 etc` | ||||||
|  |     if (b.args) |args| { | ||||||
|  |         run_cmd.addArgs(args); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // This creates a build step. It will be visible in the `zig build --help` menu, | ||||||
|  |     // and can be selected like this: `zig build run` | ||||||
|  |     // This will evaluate the `run` step rather than the default, which is "install". | ||||||
|  |     const run_step = b.step("run", "Run the app"); | ||||||
|  |     run_step.dependOn(&run_cmd.step); | ||||||
|  | 
 | ||||||
|  |     // Creates a step for unit testing. This only builds the test executable | ||||||
|  |     // but does not run it. | ||||||
|  |     const unit_tests = b.addTest(.{ | ||||||
|  |         .root_source_file = .{ .path = "src/main.zig" }, | ||||||
|  |         .target = target, | ||||||
|  |         .optimize = optimize, | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     const run_unit_tests = b.addRunArtifact(unit_tests); | ||||||
|  | 
 | ||||||
|  |     // Similar to creating the run step earlier, this exposes a `test` step to | ||||||
|  |     // the `zig build --help` menu, providing a way for the user to request | ||||||
|  |     // running the unit tests. | ||||||
|  |     const test_step = b.step("test", "Run unit tests"); | ||||||
|  |     test_step.dependOn(&run_unit_tests.step); | ||||||
|  | } | ||||||
							
								
								
									
										24
									
								
								src/main.zig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/main.zig
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | const std = @import("std"); | ||||||
|  | 
 | ||||||
|  | pub fn main() !void { | ||||||
|  |     // Prints to stderr (it's a shortcut based on `std.io.getStdErr()`) | ||||||
|  |     std.debug.print("All your {s} are belong to us.\n", .{"codebase"}); | ||||||
|  | 
 | ||||||
|  |     // stdout is for the actual output of your application, for example if you | ||||||
|  |     // are implementing gzip, then only the compressed bytes should be sent to | ||||||
|  |     // stdout, not any debugging messages. | ||||||
|  |     const stdout_file = std.io.getStdOut().writer(); | ||||||
|  |     var bw = std.io.bufferedWriter(stdout_file); | ||||||
|  |     const stdout = bw.writer(); | ||||||
|  | 
 | ||||||
|  |     try stdout.print("Run `zig build test` to run the tests.\n", .{}); | ||||||
|  | 
 | ||||||
|  |     try bw.flush(); // don't forget to flush! | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | test "simple test" { | ||||||
|  |     var list = std.ArrayList(i32).init(std.testing.allocator); | ||||||
|  |     defer list.deinit(); // try commenting this out and see if zig detects the memory leak! | ||||||
|  |     try list.append(42); | ||||||
|  |     try std.testing.expectEqual(@as(i32, 42), list.pop()); | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue