|
|
@ -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..];
|