Browse Source

Display available commands on startup

Luna Stadler 4 years ago
parent
commit
36ecefc816
1 changed files with 40 additions and 1 deletions
  1. 40 1
      zig/sdl/hello_sdl.zig

+ 40 - 1
zig/sdl/hello_sdl.zig

@ -419,6 +419,41 @@ const QalcRunner = struct {
419 419
    }
420 420
};
421 421
422
const SelfDocRunner = struct {
423
    fn init() Runner {
424
        return Runner{ .name = "usage", .run_always = true, .toArgv = toArgv, .isActive = isActive };
425
    }
426
427
    fn isActive(cmd: []const u8) bool {
428
        return cmd.len == 0;
429
    }
430
431
    fn toArgv(_: []const u8) []const []const u8 {
432
        const print_help =
433
            "cat <<EOF\n" ++
434
            "\x1b[37mqck - type something, find something (quick)!\x1b[0m\n" ++
435
            "\n" ++
436
            "\x1b[37mcommands:\x1b[0m\n" ++
437
            "\n" ++
438
            "  s\x1b[37m <search>       -- search for <search> in SEARCH_DIRS\x1b[0m\n" ++
439
            "  file \x1b[37m<name>      -- search for file matching <name> and preview it\x1b[0m\n" ++
440
            "\n" ++
441
            "  man\x1b[37m <name>       -- display man page for <name>\x1b[0m\n" ++
442
            "  \x1b[37mcommand\x1b[0m --help \x1b[37m  -- display --help output for <command>\x1b[0m\n" ++
443
            "  go\x1b[37m <name>        -- display go doc for <name>\x1b[0m\n" ++
444
            "  py\x1b[37m <name>        -- display python doc for <name>\x1b[0m\n" ++
445
            "  py!\x1b[37m\x1b[0m\n" ++
446
            "  rb\x1b[37m <name>        -- display ruby doc for <name>\x1b[0m\n" ++
447
            "  rb!\x1b[37m\x1b[0m\n" ++
448
            "\n" ++
449
            "  <math expr>\x1b[37m      -- run <math expr> using qalc\x1b[0m\n" ++
450
            "\n" ++
451
            "  logs\x1b[37m [<service>] -- display logs of <service> or all logs by default\x1b[0m\n" ++
452
            "EOF\n";
453
        return &[_][]const u8{ "bash", "-c", print_help };
454
    }
455
};
456
422 457
pub fn main() !void {
423 458
    var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){};
424 459
    defer {
@ -527,6 +562,7 @@ pub fn main() !void {
527 562
        FileRunner.init(),
528 563
        LogsRunner.init(),
529 564
        QalcRunner.init(),
565
        SelfDocRunner.init(),
530 566
    };
531 567
532 568
    var quit = false;
@ -535,7 +571,7 @@ pub fn main() !void {
535 571
    var num_lines: i32 = 0;
536 572
    var output_length: usize = 0;
537 573
538
    var changed = false;
574
    var changed = true; // initially true to print help even with no command
539 575
540 576
    var hasChanged = false;
541 577
    var lastChange: u32 = 0;
@ -783,6 +819,9 @@ pub fn main() !void {
783 819
                    var part_text = part.?;
784 820
                    if (std.mem.startsWith(u8, part_text, "0m")) {
785 821
                        part_text = part_text[2..];
822
                    } else if (std.mem.startsWith(u8, part_text, "37m")) {
823
                        part_text = part_text[3..];
824
                        fg_color = c.SDL_Color{ .r = 200, .g = 200, .b = 200, .a = 255 };
786 825
                    } else if (std.mem.startsWith(u8, part_text, "1;32m")) {
787 826
                        fnt = bold_font;
788 827
                        part_text = part_text[5..];