authorgravatar for hello@nektro.netMeghan <hello@nektro.net> 2020-11-14 02:03:38 -08:00
committergravatar for hello@nektro.netMeghan <hello@nektro.net> 2020-11-14 02:03:38 -08:00
logabceb0d034839ddb456c0c38994fdef559276a8b
treef286663dee7e6aab93103e0dc65ff53883c337d6
parent84fd0b9e6011e19d5894be3c039c8ecb875239dd

add zig program shell


5 files changed, 77 insertions(+), 1 deletions(-)

.gitignore+1
...@@ -1,2 +1,3 @@...@@ -1,2 +1,3 @@
1/bin1/bin
2/zigmod*2/zigmod*
3/zig-cache
build.zig created+30
...@@ -0,0 +1,30 @@
1const std = @import("std");
2const Builder = std.build.Builder;
3const builtin = @import("builtin");
4
5pub fn build(b: *Builder) void {
6 const target = b.standardTargetOptions(.{});
7
8 b.setPreferredReleaseMode(.ReleaseSafe);
9 const mode = b.standardReleaseOptions();
10
11 const use_full_name = b.option(bool, "use-full-name", "") orelse false;
12 const with_os_arch = b.fmt("-{}-{}", .{@tagName(target.os_tag orelse builtin.os.tag), @tagName(target.cpu_arch orelse builtin.arch)});
13 const exe_name = b.fmt("{}{}", .{ "zigmod-zig", if (use_full_name) with_os_arch else "" });
14
15 const exe = b.addExecutable(exe_name, "src/main.zig");
16 exe.setTarget(target);
17 exe.setBuildMode(mode);
18 exe.strip = true;
19
20 exe.install();
21
22 const run_cmd = exe.run();
23 run_cmd.step.dependOn(b.getInstallStep());
24 if (b.args) |args| {
25 run_cmd.addArgs(args);
26 }
27
28 const run_step = b.step("run", "Run the app");
29 run_step.dependOn(&run_cmd.step);
30}
build_all.sh+1-1
...@@ -12,7 +12,7 @@ build_template() {...@@ -12,7 +12,7 @@ build_template() {
12 version=${CIRCLE_BUILD_NUM-$date}12 version=${CIRCLE_BUILD_NUM-$date}
13 tag=v$version-$(git log --format=%h -1)13 tag=v$version-$(git log --format=%h -1)
14 echo $tag-$GOOS-$GOARCH14 echo $tag-$GOOS-$GOARCH
15 go build -ldflags="-s -w -X main.Version=$tag" -o ./bin/zigmod-$tag-$GOOS-$GOARCH$ext15 go build -ldflags="-s -w -X main.Version=$tag" -o ./bin/zigmod-go-$tag-$GOOS-$GOARCH$ext
16}16}
1717
18# go tool dist list | grep amd6418# go tool dist list | grep amd64
build_all_zig.sh created+9
...@@ -0,0 +1,9 @@
1#!/bin/sh
2
3set -e
4
5for item in $(zig targets | jq --raw-output '.libc[]' | grep gnu$ | grep x86_64)
6do
7 echo $item
8 zig build -Dtarget=$item -Drelease -Duse-full-name
9done
src/main.zig created+36
...@@ -0,0 +1,36 @@
1const std = @import("std");
2const builtin = @import("builtin");
3
4//
5//
6
7const commands = struct {
8};
9
10pub fn main() !void {
11
12 const gpa = std.heap.c_allocator;
13
14 const proc_args = try std.process.argsAlloc(gpa);
15 const args = proc_args[1..];
16
17 u.print("args len: {}", .{args.len});
18 for (args) |a, i| {
19 u.print("arg {}: {}", .{i, a});
20 }
21
22 if (args.len == 0) {
23 u.print("zigmod-{}-{}-{}", .{@tagName(builtin.os.tag), @tagName(builtin.arch), @tagName(builtin.abi)});
24 return;
25 }
26
27 inline for (std.meta.declarations(commands)) |decl| {
28 if (std.mem.eql(u8, args[0], decl.name)) {
29 const cmd = @field(commands, decl.name);
30 try cmd.execute(args[1..]);
31 return;
32 }
33 }
34
35 std.debug.panic("Error: unknown command \"{}\" for \"zigmod\"", .{args[0]});
36}