authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-01-01 01:22:06 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-01-01 01:22:06 -08:00
logba55785f3853dad2bbaa835d12cf2b7625418957
tree1a1633d002a99756052e32eb8d3d1da8c8d2ae04
parent9649704a3c29d0135bdbf6c67a74bfa229dc4951

cmd/init: no longer require running in a folder with a build.zig


2 files changed, 4 insertions(+), 14 deletions(-)

src/cmd/init.zig+1-6
...@@ -29,12 +29,7 @@ pub fn execute(self_name: []const u8, args: [][:0]u8) !void {...@@ -29,12 +29,7 @@ pub fn execute(self_name: []const u8, args: [][:0]u8) !void {
2929
30 const ptype = try inquirer.forEnum(stdout, stdin, "Are you making an application or a library?", gpa, enum { exe, lib }, null);30 const ptype = try inquirer.forEnum(stdout, stdin, "Are you making an application or a library?", gpa, enum { exe, lib }, null);
3131
32 const name = try inquirer.forString(stdout, stdin, "package name:", gpa, u.detect_pkgname(gpa, u.try_index(string, args, 0, ""), "") catch |err| switch (err) {32 const name = try inquirer.forString(stdout, stdin, "package name:", gpa, try u.detect_pkgname(gpa, u.try_index(string, args, 0, ""), ""));
33 error.NoBuildZig => {
34 u.fail("init requires a build.zig file", .{});
35 },
36 else => |ee| return ee,
37 });
3833
39 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) {34 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) {
40 error.CantFindMain => null,35 error.CantFindMain => null,
src/util/funcs.zig+3-8
...@@ -157,16 +157,11 @@ pub fn slice(comptime T: type, input: []const T, from: usize, to: usize) []const...@@ -157,16 +157,11 @@ pub fn slice(comptime T: type, input: []const T, from: usize, to: usize) []const
157}157}
158158
159pub fn detect_pkgname(alloc: std.mem.Allocator, override: string, dir: string) !string {159pub fn detect_pkgname(alloc: std.mem.Allocator, override: string, dir: string) !string {
160 if (override.len > 0) {160 if (override.len > 0) return override;
161 return override;
162 }
163 const dirO = if (dir.len == 0) std.fs.cwd() else try std.fs.cwd().openDir(dir, .{});161 const dirO = if (dir.len == 0) std.fs.cwd() else try std.fs.cwd().openDir(dir, .{});
164 if (!(try extras.doesFileExist(dirO, "build.zig"))) {162 const dpath = try dirO.realpathAlloc(gpa, ".");
165 return error.NoBuildZig;
166 }
167 const dpath = try std.fs.realpathAlloc(alloc, try std.fs.path.join(alloc, &.{ dir, "build.zig" }));
168 const splitP = try split(alloc, dpath, std.fs.path.sep);163 const splitP = try split(alloc, dpath, std.fs.path.sep);
169 var name = splitP[splitP.len - 2];164 var name = splitP[splitP.len - 1];
170 name = extras.trimPrefix(name, "zig-");165 name = extras.trimPrefix(name, "zig-");
171 assert(name.len > 0, "package name must not be an empty string", .{});166 assert(name.len > 0, "package name must not be an empty string", .{});
172 return name;167 return name;