wip: turbo-getent

This commit is contained in:
Motiejus Jakštys 2022-07-11 06:07:11 +03:00
parent 8877c7d812
commit 6ae17fe99d

50
src/turbo-getent.zig Normal file
View File

@ -0,0 +1,50 @@
const std = @import("std");
const io = std.io;
const os = std.os;
const fmt = std.fmt;
const flags = @import("flags.zig");
const usage =
\\usage: turbo-getent [OPTION]... group|passwd [key...]
\\
\\ -h Print this help message and exit
\\ --db=PATH Path to the database (default: /etc/turbonss/db.turbo)
\\
\\turbo-getent resolves group or passwd (a.k.a. user) entries from the
\\database file. If one or more key arguments are provided, then only
\\entries that match the supplied keys will be displayed. If no key is
\\provided, all entries will be displayed.
\\
;
pub fn main() !void {
// This line is here because of https://github.com/ziglang/zig/issues/7807
const argv: []const [*:0]const u8 = os.argv;
const stderr = io.getStdErr().writer();
const stdout = io.getStdOut().writer();
const return_code = execute(stdout, stderr, argv[1..]);
os.exit(return_code);
}
fn execute(
stdout: anytype,
stderr: anytype,
argv: []const [*:0]const u8,
) u8 {
const myflags = flags.parse(argv, &[_]flags.Flag{
.{ .name = "-h", .kind = .boolean },
}) catch {
stderr.writeAll(usage) catch {};
return 1;
};
if (myflags.boolFlag("-h")) {
stdout.writeAll(usage) catch return 1;
return 0;
}
return 0;
}