Skip to content

Commit

Permalink
Improve zigup default and zigup list output
Browse files Browse the repository at this point in the history
Default command now also points to the actual directory if default
compiler is master.

List command now also marks which one is the master also also marks the
default compiler with ``(default)``.
  • Loading branch information
iddev5 committed Jan 18, 2022
1 parent 42f68cb commit a4f6cdf
Showing 1 changed file with 44 additions and 2 deletions.
46 changes: 44 additions & 2 deletions zigup.zig
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,12 @@ fn listCompilers(allocator: Allocator) !void {
};
defer install_dir.close();

const default_compiler = try getDefaultCompiler(allocator);
defer if (default_compiler) |default| allocator.free(default);

const master_dir = try getMasterDir(allocator, &install_dir);
defer if (master_dir) |master| allocator.free(master);

const stdout = std.io.getStdOut().writer();
{
var it = install_dir.iterate();
Expand All @@ -466,7 +472,24 @@ fn listCompilers(allocator: Allocator) !void {
continue;
if (std.mem.endsWith(u8, entry.name, ".installing"))
continue;
try stdout.print("{s}\n", .{entry.name});

try stdout.print("{s}", .{entry.name});

const is_master = if (master_dir) |master|
(if (mem.eql(u8, master, entry.name)) true else false)
else false;

if (is_master) {
try stdout.writeAll(" -> master");
}

if (default_compiler) |default| {
if (mem.eql(u8, default, entry.name) or (is_master and mem.eql(u8, default, "master"))) {
try stdout.writeAll(" (default)");
}
}

try stdout.writeByte('\n');
}
}
}
Expand Down Expand Up @@ -604,7 +627,26 @@ fn printDefaultCompiler(allocator: Allocator) !void {
defer if (default_compiler_opt) |default_compiler| allocator.free(default_compiler);
const stdout = std.io.getStdOut().writer();
if (default_compiler_opt) |default_compiler| {
try stdout.print("{s}\n", .{default_compiler});
if (mem.eql(u8, default_compiler, "master")) {
const install_dir_string = try getInstallDir(allocator, .{ .create = false });
defer allocator.free(install_dir_string);

var install_dir = std.fs.openDirAbsolute(install_dir_string, .{ .iterate = true }) catch |e| switch (e) {
error.FileNotFound => return,
else => return e,
};
defer install_dir.close();

const master_dir = try getMasterDir(allocator, &install_dir);
defer if (master_dir) |master| allocator.free(master);

if (master_dir) |master| {
try stdout.print("master -> {s}\n", .{master});
}
}
else {
try stdout.print("{s}\n", .{default_compiler});
}
} else {
try stdout.writeAll("<no-default>\n");
}
Expand Down

0 comments on commit a4f6cdf

Please sign in to comment.