fn initArgsList(s: *Serialize, args: []const Step.Run.Arg) ![]const Configuration.Step.Run.Arg.Index {
const wc = s.wc;
const result = try s.arena.alloc(Configuration.Step.Run.Arg.Index, args.len);
for (result, args) |*dest, src| {
dest.* = try wc.addExtra(Configuration.Step.Run.Arg, switch (src) {
.artifact => |a| .{
.flags = .{
.tag = .artifact,
.prefix = a.prefix.len != 0,
.suffix = a.suffix.len != 0,
.basename = false,
.path = false,
.producer = true,
.generated = false,
.dep_file = false,
.make_absolute = a.make_absolute,
},
.prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
.suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
.basename = .{ .value = null },
.path = .{ .value = null },
.producer = .{ .value = stepIndex(s, &a.artifact.step) },
.generated = .{ .value = null },
},
.lazy_path => |a| .{
.flags = .{
.tag = .path_file,
.prefix = a.prefix.len != 0,
.suffix = a.suffix.len != 0,
.basename = false,
.path = true,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = a.make_absolute,
},
.prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
.suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
.basename = .{ .value = null },
.path = .{ .value = try addLazyPath(s, a.lazy_path) },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.decorated_directory => |a| .{
.flags = .{
.tag = .path_directory,
.prefix = a.prefix.len != 0,
.suffix = a.suffix.len != 0,
.basename = false,
.path = true,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = a.make_absolute,
},
.prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
.suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
.basename = .{ .value = null },
.path = .{ .value = try addLazyPath(s, a.lazy_path) },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.file_content => |a| .{
.flags = .{
.tag = .file_content,
.prefix = a.prefix.len != 0,
.suffix = a.suffix.len != 0,
.basename = false,
.path = true,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = false,
},
.prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
.suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
.basename = .{ .value = null },
.path = .{ .value = try addLazyPath(s, a.lazy_path) },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.bytes => |a| .{
.flags = .{
.tag = .string,
.prefix = true,
.suffix = false,
.basename = false,
.path = false,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = false,
},
.prefix = .{ .value = try wc.addString(a) },
.suffix = .{ .value = null },
.basename = .{ .value = null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.output_file, .output_file_dep => |a, tag| .{
.flags = .{
.tag = .output_file,
.prefix = a.prefix.len != 0,
.suffix = a.suffix.len != 0,
.basename = a.basename.len != 0,
.path = false,
.producer = false,
.generated = true,
.dep_file = tag == .output_file_dep,
.make_absolute = a.make_absolute,
},
.prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
.suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
.basename = .{ .value = if (a.basename.len != 0) try wc.addString(a.basename) else null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = a.generated_file },
},
.output_directory => |a| .{
.flags = .{
.tag = .output_directory,
.prefix = a.prefix.len != 0,
.suffix = a.suffix.len != 0,
.basename = a.basename.len != 0,
.path = false,
.producer = false,
.generated = true,
.dep_file = false,
.make_absolute = a.make_absolute,
},
.prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
.suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
.basename = .{ .value = if (a.basename.len != 0) try wc.addString(a.basename) else null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = a.generated_file },
},
.passthru => .{
.flags = .{
.tag = .passthru,
.prefix = false,
.suffix = false,
.basename = false,
.path = false,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = false,
},
.prefix = .{ .value = null },
.suffix = .{ .value = null },
.basename = .{ .value = null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.enable_darling => |a| .{
.flags = .{
.tag = .enable_darling,
.prefix = a.enabled != null,
.suffix = a.disabled != null,
.basename = false,
.path = false,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = false,
},
.prefix = .{ .value = try s.addOptionalString(a.enabled) },
.suffix = .{ .value = try s.addOptionalString(a.disabled) },
.basename = .{ .value = null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.enable_qemu => |a| .{
.flags = .{
.tag = .enable_qemu,
.prefix = a.enabled != null,
.suffix = a.disabled != null,
.basename = false,
.path = false,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = false,
},
.prefix = .{ .value = try s.addOptionalString(a.enabled) },
.suffix = .{ .value = try s.addOptionalString(a.disabled) },
.basename = .{ .value = null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.enable_rosetta => |a| .{
.flags = .{
.tag = .enable_rosetta,
.prefix = a.enabled != null,
.suffix = a.disabled != null,
.basename = false,
.path = false,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = false,
},
.prefix = .{ .value = try s.addOptionalString(a.enabled) },
.suffix = .{ .value = try s.addOptionalString(a.disabled) },
.basename = .{ .value = null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.enable_wasmtime => |a| .{
.flags = .{
.tag = .enable_wasmtime,
.prefix = a.enabled != null,
.suffix = a.disabled != null,
.basename = false,
.path = false,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = false,
},
.prefix = .{ .value = try s.addOptionalString(a.enabled) },
.suffix = .{ .value = try s.addOptionalString(a.disabled) },
.basename = .{ .value = null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
.enable_wine => |a| .{
.flags = .{
.tag = .enable_wine,
.prefix = a.enabled != null,
.suffix = a.disabled != null,
.basename = false,
.path = false,
.producer = false,
.generated = false,
.dep_file = false,
.make_absolute = false,
},
.prefix = .{ .value = try s.addOptionalString(a.enabled) },
.suffix = .{ .value = try s.addOptionalString(a.disabled) },
.basename = .{ .value = null },
.path = .{ .value = null },
.producer = .{ .value = null },
.generated = .{ .value = null },
},
});
}
return result;
}