Browse Source

Support viewing logs (a bit)

It does not fully work yet, but it's pretty interesting.  :)
Luna Stadler 4 years ago
parent
commit
36174cb1f8
1 changed files with 22 additions and 2 deletions
  1. 22 2
      zig/sdl/hello_sdl.zig

+ 22 - 2
zig/sdl/hello_sdl.zig

@ -19,7 +19,6 @@ const std = @import("std");
19 19
// commands wishlist:
20 20
// - search (e.g. default current dir + /usr/include)
21 21
// - launch with logs (default launcher, use systemd-run --user --unit=name name?)
22
// - view (the above logs)
23 22
// - switch to window
24 23
// - open url
25 24
// - open shortcuts (logs -> ..., tickets)
@ -219,7 +218,7 @@ const RegexRunner = struct {
219 218
    }
220 219
};
221 220
222
var cmd_buf: [100]u8 = undefined;
221
var cmd_buf: [1000]u8 = undefined;
223 222
224 223
const GoDocRunner = struct {
225 224
    fn init() RegexRunner {
@ -312,6 +311,26 @@ const SearchRunner = struct {
312 311
    }
313 312
};
314 313
314
const LogsRunner = struct {
315
    fn init() RegexRunner {
316
        return RegexRunner{ .name = "logs", .run_always = true, .toArgv = toArgv, .isActive = isActive };
317
    }
318
319
    fn isActive(cmd: []const u8) bool {
320
        return std.mem.startsWith(u8, cmd, "logs");
321
    }
322
323
    fn toArgv(cmd: []const u8) []const []const u8 {
324
        if (cmd.len <= "logs ".len) {
325
            return &[_][]const u8{ "journalctl", "-b" };
326
        }
327
328
        const service = cmd["logs ".len..];
329
        _ = std.fmt.bufPrint(&cmd_buf, "(systemctl status {s} &> /dev/null && journalctl -u {s} -f) || (systemctl status --user {s} &> /dev/null && journalctl --user -u {s} -f) || echo \"no logs for '{s}'\"", .{ service, service, service, service, service }) catch "???";
330
        return &[_][]const u8{ "bash", "-c", &cmd_buf };
331
    }
332
};
333
315 334
const QalcRunner = struct {
316 335
    fn init() RegexRunner {
317 336
        return RegexRunner{ .name = "qalc", .run_always = true, .toArgv = toArgv, .isActive = isActive };
@ -399,6 +418,7 @@ pub fn main() !void {
399 418
        HelpRunner.init(),
400 419
        ManPageRunner.init(),
401 420
        SearchRunner.init(),
421
        LogsRunner.init(),
402 422
        QalcRunner.init(),
403 423
    };
404 424