mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
cli: fix --version flag
Before this, --version gets detected by the version action, but it ends up erroring inside the version action's run, when it tries to parse the args looking for --help.
This commit is contained in:
@ -85,6 +85,11 @@ pub fn parse(comptime T: type, alloc: Allocator, dst: *T, iter: anytype) !void {
|
|||||||
|
|
||||||
if (mem.startsWith(u8, arg, "--")) {
|
if (mem.startsWith(u8, arg, "--")) {
|
||||||
var key: []const u8 = arg[2..];
|
var key: []const u8 = arg[2..];
|
||||||
|
|
||||||
|
// Enables using --version as a CLI action, without
|
||||||
|
// expecting it to be parsed into key=value pairs.
|
||||||
|
if (mem.eql(u8, key, "version")) continue;
|
||||||
|
|
||||||
const value: ?[]const u8 = value: {
|
const value: ?[]const u8 = value: {
|
||||||
// If the arg has "=" then the value is after the "=".
|
// If the arg has "=" then the value is after the "=".
|
||||||
if (mem.indexOf(u8, key, "=")) |idx| {
|
if (mem.indexOf(u8, key, "=")) |idx| {
|
||||||
@ -354,7 +359,7 @@ test "parse: simple" {
|
|||||||
|
|
||||||
var iter = try std.process.ArgIteratorGeneral(.{}).init(
|
var iter = try std.process.ArgIteratorGeneral(.{}).init(
|
||||||
testing.allocator,
|
testing.allocator,
|
||||||
"--a=42 --b --b-f=false",
|
"--a=42 --b --b-f=false --version",
|
||||||
);
|
);
|
||||||
defer iter.deinit();
|
defer iter.deinit();
|
||||||
try parse(@TypeOf(data), testing.allocator, &data, &iter);
|
try parse(@TypeOf(data), testing.allocator, &data, &iter);
|
||||||
@ -439,6 +444,22 @@ test "parse: error tracking" {
|
|||||||
try testing.expect(!data._errors.empty());
|
try testing.expect(!data._errors.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "parse: ignore version flag" {
|
||||||
|
const testing = std.testing;
|
||||||
|
|
||||||
|
var data: struct {
|
||||||
|
a: u8 = 0,
|
||||||
|
} = .{};
|
||||||
|
|
||||||
|
var iter = try std.process.ArgIteratorGeneral(.{}).init(
|
||||||
|
testing.allocator,
|
||||||
|
"--version --a=42",
|
||||||
|
);
|
||||||
|
defer iter.deinit();
|
||||||
|
try parse(@TypeOf(data), testing.allocator, &data, &iter);
|
||||||
|
try testing.expectEqual(@as(u8, 42), data.a);
|
||||||
|
}
|
||||||
|
|
||||||
test "parseIntoField: ignore underscore-prefixed fields" {
|
test "parseIntoField: ignore underscore-prefixed fields" {
|
||||||
const testing = std.testing;
|
const testing = std.testing;
|
||||||
var arena = ArenaAllocator.init(testing.allocator);
|
var arena = ArenaAllocator.init(testing.allocator);
|
||||||
|
Reference in New Issue
Block a user