38 lines
952 B
Zig
38 lines
952 B
Zig
const std = @import("std");
|
|
const stdout = std.io.getStdOut().writer();
|
|
|
|
const b64 = @import("base64.zig");
|
|
|
|
const usageText =
|
|
\\Usage: baze64 {-d/-D} input
|
|
\\Args:
|
|
\\ -d -D: decode instead of encode
|
|
;
|
|
|
|
|
|
pub fn main() !void {
|
|
var gpa = std.heap.GeneralPurposeAllocator(.{}).init;
|
|
const allocator = gpa.allocator();
|
|
var args = try std.process.argsWithAllocator(allocator);
|
|
defer args.deinit();
|
|
|
|
var b = b64.Base64.init;
|
|
|
|
// Skip arg[0]
|
|
_ = args.skip();
|
|
|
|
var a = args.next();
|
|
if (a) |arg| {
|
|
if (std.mem.eql(u8, arg, "-d") or std.mem.eql(u8, arg, "-D")) {
|
|
a = args.next();
|
|
const decoded = try b.decode(allocator, arg);
|
|
try stdout.print("{s}", .{decoded});
|
|
} else {
|
|
const encoded = try b.decode(allocator, arg);
|
|
try stdout.print("{s}", .{encoded});
|
|
}
|
|
} else {
|
|
try stdout.print("{s}", .{usageText});
|
|
}
|
|
}
|