summaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig53
1 files changed, 14 insertions, 39 deletions
diff --git a/src/main.zig b/src/main.zig
index 1b8f702..c45cbed 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -1,43 +1,19 @@
const std = @import("std");
+const dump = @import("dump.zig");
const adler32 = std.hash.Adler32;
-const openFlags = std.fs.File.OpenFlags{
- .read = true,
- .write = false,
- .lock = std.fs.File.Lock.None,
-};
-
-fn dump(args: [][]u8) u8 {
- if (args.len < 3) {
- std.debug.warn("Usage: {} [subcommand] [options]\n", .{args[0]});
- return 255;
- }
-
- var file = std.fs.openFileAbsolute(args[2], openFlags) catch {
- std.debug.warn("Cannot open file {}\n", .{args[2]});
- return 255;
- };
- defer file.close();
-
- var buffer: [16]u8 = undefined;
- var r: u64 = undefined;
- while (true) {
- r = file.read(&buffer) catch {
- break;
- };
- if (r <= 0)
- break;
-
- for (buffer[0..r]) |c| {
- std.debug.warn("0x{x:2} ", .{c});
- }
- std.debug.warn(" -- {}\n", .{r});
- }
-
- return 0;
-}
fn help(args: [][]u8) u8 {
- std.debug.warn("Usage: {} [subcommand] [options]\n", .{args[0]});
+ std.debug.warn(
+ \\Usage: {} [subcommand] [options]
+ \\
+ \\Resource Compiler for C++
+ \\
+ \\Subcommands:
+ \\ dump [options] inputs hexdump the input files
+ \\
+ \\For a full list of subcommand options, use [subcommand] --help
+ \\
+ , .{args[0]});
return if (args.len < 2) 255 else 0;
}
@@ -45,15 +21,14 @@ pub fn main() anyerror!u8 {
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
defer arena.deinit();
- std.debug.warn("All your codebase are belong to us.\n\n", .{});
-
const args = try std.process.argsAlloc(&arena.allocator);
if (args.len < 2) {
return help(args);
}
return switch (adler32.hash(args[1])) {
- adler32.hash("dump") => dump(args),
+ adler32.hash("dump") => dump.cmd(args),
+ adler32.hash("-h"), adler32.hash("--help") => help(args),
else => help(args),
};
}