summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjulien2023-12-18 18:39:21 +0100
committerjulien2023-12-18 18:39:21 +0100
commit89931542ef3ec877ad17b963358863ec409fedb5 (patch)
tree8c5e4ac18011032f315a88e80c703b79266fb60d
parentAdded basic ssh client to run commands (diff)
downloadzigod-master.tar.gz
zigod-master.tar.bz2
zigod-master.zip
zig 0.11 changesHEADmaster
-rw-r--r--build.zig56
-rw-r--r--src/ssh.zig6
2 files changed, 27 insertions, 35 deletions
diff --git a/build.zig b/build.zig
index 34c25f7..c87c485 100644
--- a/build.zig
+++ b/build.zig
@@ -1,53 +1,44 @@
const std = @import("std");
-pub fn build(b: *std.build.Builder) 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.
+pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
+ const optimize = b.standardOptimizeOption(.{});
+
+ const exe = b.addExecutable(.{
+ .name = "zigod",
+ .root_source_file = .{ .path = "src/main.zig" },
+ .target = target,
+ .optimize = optimize,
+ });
+ b.installArtifact(exe);
+ const run_cmd = b.addRunArtifact(exe);
+ exe.linkLibC();
+ exe.linkSystemLibraryName("ssh");
- // Standard release options allow the person running `zig build` to select
- // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
- const mode = b.standardReleaseOptions();
-
- const exe = b.addExecutable("zigod", "src/main.zig");
- exe.addLibPath("/usr/lib64/");
- exe.linkSystemLibrary("c");
- exe.linkSystemLibrary("libssh");
- exe.setTarget(target);
- exe.setBuildMode(mode);
- exe.install();
-
- const run_cmd = exe.run();
run_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
run_cmd.addArgs(args);
}
-
- const coverage = b.option(bool, "test-coverage", "Generate test coverage") orelse false;
-
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
+ const unit_tests = b.addTest(.{
+ .root_source_file = .{ .path = "src/main.zig" },
+ .target = target,
+ .optimize = optimize,
+ });
- const exe_tests = b.addTest("src/main.zig");
- exe_tests.addLibPath("/usr/lib64/");
- exe_tests.linkSystemLibrary("c");
- exe_tests.linkSystemLibrary("libssh");
- exe_tests.setTarget(target);
- exe_tests.setBuildMode(mode);
-
+ const coverage = b.option(bool, "test-coverage", "Generate test coverage") orelse false;
// Code coverage with kcov, we need an allocator for the setup
var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){};
- defer _ = general_purpose_allocator.deinit();
const gpa = general_purpose_allocator.allocator();
// We want to exclude the $HOME/.zig path
const home = std.process.getEnvVarOwned(gpa, "HOME") catch "";
defer gpa.free(home);
- const exclude = std.fmt.allocPrint(gpa, "--exclude-path={s}/.zig/,/usr", .{home}) catch "";
+ const exclude = std.fmt.allocPrint(gpa, "--exclude-path={s}/.zig/", .{home}) catch "";
defer gpa.free(exclude);
if (coverage) {
- exe_tests.setExecCmd(&[_]?[]const u8{
+ unit_tests.test_runner = "/usr/bin/kcov";
+ unit_tests.setExecCmd(&[_]?[]const u8{
"kcov",
exclude,
//"--path-strip-level=3", // any kcov flags can be specified here
@@ -56,6 +47,7 @@ pub fn build(b: *std.build.Builder) void {
});
}
+ const run_unit_tests = b.addRunArtifact(unit_tests);
const test_step = b.step("test", "Run unit tests");
- test_step.dependOn(&exe_tests.step);
+ test_step.dependOn(&run_unit_tests.step);
}
diff --git a/src/ssh.zig b/src/ssh.zig
index d8b1fda..549e528 100644
--- a/src/ssh.zig
+++ b/src/ssh.zig
@@ -62,9 +62,9 @@ pub const Client = struct {
}
var buffer: [256]u8 = undefined;
- var nbytes = ssh.ssh_channel_read(channel, &buffer, buffer.len, 0);
- while (nbytes > 0) : (nbytes = ssh.ssh_channel_read(channel, &buffer, buffer.len, 0)) {
- var w = try writer.write(buffer[0..@intCast(usize, nbytes)]);
+ var nbytes: usize = @intCast(ssh.ssh_channel_read(channel, &buffer, buffer.len, 0));
+ while (nbytes > 0) : (nbytes = @intCast(ssh.ssh_channel_read(channel, &buffer, buffer.len, 0))) {
+ var w = try writer.write(buffer[0..nbytes]);
if (w != nbytes) {
std.os.exit(5);
}