master
 1//! Verifies that a file exists in a directory.
 2//!
 3//! Usage:
 4//!
 5//! ```
 6//! exists_in <dir> <path>
 7//! ```
 8//!
 9//! Where `<dir>/<path>` is the full path to the file.
10//! `<dir>` must be an absolute path.
11
12const std = @import("std");
13
14pub fn main() !void {
15    var arena_state = std.heap.ArenaAllocator.init(std.heap.page_allocator);
16    const arena = arena_state.allocator();
17    defer arena_state.deinit();
18
19    try run(arena);
20}
21
22fn run(allocator: std.mem.Allocator) !void {
23    var args = try std.process.argsWithAllocator(allocator);
24    defer args.deinit();
25    _ = args.next() orelse unreachable; // skip binary name
26
27    const dir_path = args.next() orelse {
28        std.log.err("missing <dir> argument", .{});
29        return error.BadUsage;
30    };
31
32    const relpath = args.next() orelse {
33        std.log.err("missing <path> argument", .{});
34        return error.BadUsage;
35    };
36
37    var dir = try std.fs.cwd().openDir(dir_path, .{});
38    defer dir.close();
39
40    _ = try dir.statFile(relpath);
41}