From ba55785f3853dad2bbaa835d12cf2b7625418957 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 1 Jan 2026 01:22:06 -0800 Subject: [PATCH] cmd/init: no longer require running in a folder with a build.zig --- src/cmd/init.zig | 7 +------ src/util/funcs.zig | 11 +++-------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/src/cmd/init.zig b/src/cmd/init.zig index 8e7bce14b73884d0f238f2b4508bbe890db0ef5e..4caadfe35e41e3c84294e4b56ca1e7fb298b1675 100644 --- a/src/cmd/init.zig +++ b/src/cmd/init.zig @@ -29,12 +29,7 @@ pub fn execute(self_name: []const u8, args: [][:0]u8) !void { const ptype = try inquirer.forEnum(stdout, stdin, "Are you making an application or a library?", gpa, enum { exe, lib }, null); - const name = try inquirer.forString(stdout, stdin, "package name:", gpa, u.detect_pkgname(gpa, u.try_index(string, args, 0, ""), "") catch |err| switch (err) { - error.NoBuildZig => { - u.fail("init requires a build.zig file", .{}); - }, - else => |ee| return ee, - }); + const name = try inquirer.forString(stdout, stdin, "package name:", gpa, try u.detect_pkgname(gpa, u.try_index(string, args, 0, ""), "")); const entry = if (ptype == .lib) try inquirer.forString(stdout, stdin, "package entry point:", gpa, u.detct_mainfile(gpa, u.try_index(string, args, 1, ""), null, name) catch |err| switch (err) { error.CantFindMain => null, diff --git a/src/util/funcs.zig b/src/util/funcs.zig index f28c0eedfe989b730b7def3959c9378700314f07..6cffb6589429829ed2a3689407129e0834a1cad9 100644 --- a/src/util/funcs.zig +++ b/src/util/funcs.zig @@ -157,16 +157,11 @@ pub fn slice(comptime T: type, input: []const T, from: usize, to: usize) []const } pub fn detect_pkgname(alloc: std.mem.Allocator, override: string, dir: string) !string { - if (override.len > 0) { - return override; - } + if (override.len > 0) return override; const dirO = if (dir.len == 0) std.fs.cwd() else try std.fs.cwd().openDir(dir, .{}); - if (!(try extras.doesFileExist(dirO, "build.zig"))) { - return error.NoBuildZig; - } - const dpath = try std.fs.realpathAlloc(alloc, try std.fs.path.join(alloc, &.{ dir, "build.zig" })); + const dpath = try dirO.realpathAlloc(gpa, "."); const splitP = try split(alloc, dpath, std.fs.path.sep); - var name = splitP[splitP.len - 2]; + var name = splitP[splitP.len - 1]; name = extras.trimPrefix(name, "zig-"); assert(name.len > 0, "package name must not be an empty string", .{}); return name; -- 2.54.0