╭ changed ──────╮ │src/command.zig│ ╰───────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────╮ │1 const std = @import("std"); │ │2 const srv = @import("./serve.zig"); │ │3 +const ssh = @import("./ssh_helper.zig");│ │4 │ │5 pub const CommandKind = enum { │ │6 serve, │ ╰───────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ │190 /// if any additional allocation needs to be done, the arena inside the cmd args will be used.│ │191 pub const Command = union(CommandKind) { │ │192 serve: srv.Options, │ │192 - ssh_helper: struct { │ │193 - ssh_connect: []const u8, │ │194 - service: ?[]const u8, │ │195 - dir: ?[]const u8, │ │196 - }, │ │193 + ssh_helper: ssh.Options, │ │194 │ │195 pub fn initMaybe(cmd_args: *CommandArgs) !?Command { │ │196 const command_kind = cmd_args.command_kind orelse return null; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ │199 if (cmd_args.positional_args.len != 0) return null; │ │200 │ │201 var options: srv.Options = .{}; │ │202 + │ │203 if (cmd_args.get("--http-listen")) |val_maybe| { │ │204 options.http_listen = val_maybe orelse return error.HttpListenNeedsValue;│ │205 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │219 .ssh_helper => { │ │220 if (cmd_args.positional_args.len > 1) return null; │ │221 │ │224 - const options: srv.Options = .{}; │ │222 + var options: ssh.Options = .{}; │ │223 │ │226 - return .{ .ssh_helper = .{ │ │227 - .ssh_connect = if (cmd_args.get("--ssh-connect")) |val_maybe| │ │228 - val_maybe orelse options.ssh_listen │ │229 - else │ │230 - return error.SshListenNeedsValue, │ │231 - .service = if (cmd_args.get("--service")) |val_maybe| │ │232 - val_maybe orelse return error.ServiceNeedsValue │ │233 - else │ │234 - null, │ │235 - .dir = if (cmd_args.positional_args.len == 1) cmd_args.positional_args[0] else null, │ │236 - } }; │ │224 + if (cmd_args.get("--ssh-connect")) |val_maybe| { │ │225 + options.ssh_connect = val_maybe orelse return error.SshConnectNeedsValue; │ │226 + } │ │227 + if (cmd_args.get("--service")) |val_maybe| { │ │228 + options.service = val_maybe orelse return error.ServiceNeedsValue; │ │229 + } │ │230 + options.dir = if (cmd_args.positional_args.len == 1) cmd_args.positional_args[0] else null;│ │231 + │ │232 + return .{ .ssh_helper = options }; │ │233 }, │ │234 } │ │235 } │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯