From 34186675dc44e97a8a49a8293d96281d2201b654 Mon Sep 17 00:00:00 2001 From: Jeremie Fraeys Date: Wed, 18 Feb 2026 13:05:43 -0500 Subject: [PATCH] refactor(cli): use config.getWebSocketUrl() helper across all commands Replace inline WebSocket URL construction with Config.getWebSocketUrl() helper method in all command files. This eliminates code duplication and ensures consistent URL formatting across the CLI. Files updated: - annotate.zig, dataset.zig, experiment.zig, logs.zig - narrative.zig, prune.zig, queue.zig, requeue.zig - sync.zig, validate.zig, watch.zig The helper properly handles ws:// vs wss:// based on port (443). --- cli/src/commands/annotate.zig | 2 +- cli/src/commands/dataset.zig | 8 ++++---- cli/src/commands/experiment.zig | 6 +++--- cli/src/commands/logs.zig | 2 +- cli/src/commands/narrative.zig | 2 +- cli/src/commands/prune.zig | 2 +- cli/src/commands/queue.zig | 2 +- cli/src/commands/requeue.zig | 2 +- cli/src/commands/sync.zig | 2 +- cli/src/commands/validate.zig | 2 +- cli/src/commands/watch.zig | 2 +- 11 files changed, 16 insertions(+), 16 deletions(-) diff --git a/cli/src/commands/annotate.zig b/cli/src/commands/annotate.zig index 67158de..a300c97 100644 --- a/cli/src/commands/annotate.zig +++ b/cli/src/commands/annotate.zig @@ -92,7 +92,7 @@ pub fn run(allocator: std.mem.Allocator, args: []const []const u8) !void { const api_key_hash = try crypto.hashApiKey(allocator, cfg.api_key); defer allocator.free(api_key_hash); - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{cfg.worker_host}); + const ws_url = try cfg.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, cfg.api_key); diff --git a/cli/src/commands/dataset.zig b/cli/src/commands/dataset.zig index 73ca487..38fcf42 100644 --- a/cli/src/commands/dataset.zig +++ b/cli/src/commands/dataset.zig @@ -116,7 +116,7 @@ fn listDatasets(allocator: std.mem.Allocator, options: *const DatasetOptions) !v return; } - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, config.api_key); @@ -214,7 +214,7 @@ fn registerDataset(allocator: std.mem.Allocator, name: []const u8, url: []const return; } - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, config.api_key); @@ -279,7 +279,7 @@ fn showDatasetInfo(allocator: std.mem.Allocator, name: []const u8, options: *con return; } - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, config.api_key); @@ -332,7 +332,7 @@ fn searchDatasets(allocator: std.mem.Allocator, term: []const u8, options: *cons return; } - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, config.api_key); diff --git a/cli/src/commands/experiment.zig b/cli/src/commands/experiment.zig index b0c275f..2ef087e 100644 --- a/cli/src/commands/experiment.zig +++ b/cli/src/commands/experiment.zig @@ -205,7 +205,7 @@ fn executeLog(allocator: std.mem.Allocator, args: []const []const u8, options: * const api_key_hash = try crypto.hashApiKey(allocator, cfg.api_key); defer allocator.free(api_key_hash); - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{cfg.worker_host}); + const ws_url = try cfg.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, cfg.api_key); @@ -278,7 +278,7 @@ fn executeShow(allocator: std.mem.Allocator, args: []const []const u8, options: const api_key_hash = try crypto.hashApiKey(allocator, cfg.api_key); defer allocator.free(api_key_hash); - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{cfg.worker_host}); + const ws_url = try cfg.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, cfg.api_key); @@ -519,7 +519,7 @@ fn executeDelete(allocator: std.mem.Allocator, identifier: []const u8, options: const api_key_hash = try crypto.hashApiKey(allocator, cfg.api_key); defer allocator.free(api_key_hash); - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{cfg.worker_host}); + const ws_url = try cfg.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, cfg.api_key); diff --git a/cli/src/commands/logs.zig b/cli/src/commands/logs.zig index 10e4d01..7dfb356 100644 --- a/cli/src/commands/logs.zig +++ b/cli/src/commands/logs.zig @@ -50,7 +50,7 @@ pub fn run(allocator: std.mem.Allocator, argv: []const []const u8) !void { const api_key_hash = try crypto.hashApiKey(allocator, cfg.api_key); defer allocator.free(api_key_hash); - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{cfg.worker_host}); + const ws_url = try cfg.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, cfg.api_key); diff --git a/cli/src/commands/narrative.zig b/cli/src/commands/narrative.zig index e062a27..3e81fd0 100644 --- a/cli/src/commands/narrative.zig +++ b/cli/src/commands/narrative.zig @@ -127,7 +127,7 @@ pub fn run(allocator: std.mem.Allocator, argv: []const []const u8) !void { const api_key_hash = try crypto.hashApiKey(allocator, cfg.api_key); defer allocator.free(api_key_hash); - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{cfg.worker_host}); + const ws_url = try cfg.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, cfg.api_key); diff --git a/cli/src/commands/prune.zig b/cli/src/commands/prune.zig index 273120f..d73888f 100644 --- a/cli/src/commands/prune.zig +++ b/cli/src/commands/prune.zig @@ -60,7 +60,7 @@ pub fn run(allocator: std.mem.Allocator, args: []const []const u8) !void { defer allocator.free(api_key_hash); // Connect to WebSocket and send prune message - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, api_key_plain); diff --git a/cli/src/commands/queue.zig b/cli/src/commands/queue.zig index 74032ad..34efaba 100644 --- a/cli/src/commands/queue.zig +++ b/cli/src/commands/queue.zig @@ -392,7 +392,7 @@ fn queueSingleJob( defer allocator.free(api_key_hash); // Connect to WebSocket and send queue message - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, config.api_key); diff --git a/cli/src/commands/requeue.zig b/cli/src/commands/requeue.zig index f2aafc2..92ab0ec 100644 --- a/cli/src/commands/requeue.zig +++ b/cli/src/commands/requeue.zig @@ -173,7 +173,7 @@ pub fn run(allocator: std.mem.Allocator, argv: []const []const u8) !void { const api_key_hash = try crypto.hashApiKey(allocator, cfg.api_key); defer allocator.free(api_key_hash); - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{cfg.worker_host}); + const ws_url = try cfg.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, cfg.api_key); diff --git a/cli/src/commands/sync.zig b/cli/src/commands/sync.zig index cd8cfdd..4358287 100644 --- a/cli/src/commands/sync.zig +++ b/cli/src/commands/sync.zig @@ -150,7 +150,7 @@ fn monitorSyncProgress(allocator: std.mem.Allocator, config: *const Config, comm const api_key_plain = config.api_key; // Connect to server with retry logic - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); logging.info("Connecting to server {s}...\n", .{ws_url}); diff --git a/cli/src/commands/validate.zig b/cli/src/commands/validate.zig index 4d1d5b6..bbed22d 100644 --- a/cli/src/commands/validate.zig +++ b/cli/src/commands/validate.zig @@ -51,7 +51,7 @@ pub fn run(allocator: std.mem.Allocator, args: []const []const u8) !void { if (config.api_key.len == 0) return error.APIKeyMissing; - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, config.api_key); diff --git a/cli/src/commands/watch.zig b/cli/src/commands/watch.zig index 422edb7..f5cae85 100644 --- a/cli/src/commands/watch.zig +++ b/cli/src/commands/watch.zig @@ -124,7 +124,7 @@ fn syncAndQueue(allocator: std.mem.Allocator, path: []const u8, job_name: ?[]con defer allocator.free(api_key_hash); // Connect to WebSocket and queue job - const ws_url = try std.fmt.allocPrint(allocator, "ws://{s}:9101/ws", .{config.worker_host}); + const ws_url = try config.getWebSocketUrl(allocator); defer allocator.free(ws_url); var client = try ws.Client.connect(allocator, ws_url, config.api_key);