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