aboutsummaryrefslogtreecommitdiff
path: root/src/Package/Fetch/git.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-07-06 15:51:44 -0700
committerAndrew Kelley <andrew@ziglang.org>2025-07-07 22:43:53 -0700
commit7e2a26c0c441a902968726442114e3590820433b (patch)
tree90035e47e0208afa7d1bcd3484e30d22d2a24f4e /src/Package/Fetch/git.zig
parent5378fdb153bc76990105e3640e7725e434e8cdee (diff)
downloadzig-7e2a26c0c441a902968726442114e3590820433b.tar.gz
zig-7e2a26c0c441a902968726442114e3590820433b.zip
std.io.Writer.printValue: rework logic
Alignment and fill options only apply to numbers. Rework the implementation to mainly branch on the format string rather than the type information. This is more straightforward to maintain and more straightforward for comptime evaluation. Enums support being printed as decimal, hexadecimal, octal, and binary. `formatInteger` is another possible format method that is unconditionally called when the value type is struct and one of the integer-printing format specifiers are used.
Diffstat (limited to 'src/Package/Fetch/git.zig')
-rw-r--r--src/Package/Fetch/git.zig32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/Package/Fetch/git.zig b/src/Package/Fetch/git.zig
index 8dfcbb2453..4d2dae904f 100644
--- a/src/Package/Fetch/git.zig
+++ b/src/Package/Fetch/git.zig
@@ -662,13 +662,21 @@ pub const Session = struct {
fn init(allocator: Allocator, uri: std.Uri) !Location {
const scheme = try allocator.dupe(u8, uri.scheme);
errdefer allocator.free(scheme);
- const user = if (uri.user) |user| try std.fmt.allocPrint(allocator, "{fuser}", .{user}) else null;
+ const user = if (uri.user) |user| try std.fmt.allocPrint(allocator, "{f}", .{
+ std.fmt.alt(user, .formatUser),
+ }) else null;
errdefer if (user) |s| allocator.free(s);
- const password = if (uri.password) |password| try std.fmt.allocPrint(allocator, "{fpassword}", .{password}) else null;
+ const password = if (uri.password) |password| try std.fmt.allocPrint(allocator, "{f}", .{
+ std.fmt.alt(password, .formatPassword),
+ }) else null;
errdefer if (password) |s| allocator.free(s);
- const host = if (uri.host) |host| try std.fmt.allocPrint(allocator, "{fhost}", .{host}) else null;
+ const host = if (uri.host) |host| try std.fmt.allocPrint(allocator, "{f}", .{
+ std.fmt.alt(host, .formatHost),
+ }) else null;
errdefer if (host) |s| allocator.free(s);
- const path = try std.fmt.allocPrint(allocator, "{fpath}", .{uri.path});
+ const path = try std.fmt.allocPrint(allocator, "{f}", .{
+ std.fmt.alt(uri.path, .formatPath),
+ });
errdefer allocator.free(path);
// The query and fragment are not used as part of the base server URI.
return .{
@@ -699,7 +707,9 @@ pub const Session = struct {
fn getCapabilities(session: *Session, http_headers_buffer: []u8) !CapabilityIterator {
var info_refs_uri = session.location.uri;
{
- const session_uri_path = try std.fmt.allocPrint(session.allocator, "{fpath}", .{session.location.uri.path});
+ const session_uri_path = try std.fmt.allocPrint(session.allocator, "{f}", .{
+ std.fmt.alt(session.location.uri.path, .formatPath),
+ });
defer session.allocator.free(session_uri_path);
info_refs_uri.path = .{ .percent_encoded = try std.fs.path.resolvePosix(session.allocator, &.{ "/", session_uri_path, "info/refs" }) };
}
@@ -723,7 +733,9 @@ pub const Session = struct {
if (request.response.status != .ok) return error.ProtocolError;
const any_redirects_occurred = request.redirect_behavior.remaining() < max_redirects;
if (any_redirects_occurred) {
- const request_uri_path = try std.fmt.allocPrint(session.allocator, "{fpath}", .{request.uri.path});
+ const request_uri_path = try std.fmt.allocPrint(session.allocator, "{f}", .{
+ std.fmt.alt(request.uri.path, .formatPath),
+ });
defer session.allocator.free(request_uri_path);
if (!mem.endsWith(u8, request_uri_path, "/info/refs")) return error.UnparseableRedirect;
var new_uri = request.uri;
@@ -810,7 +822,9 @@ pub const Session = struct {
pub fn listRefs(session: Session, options: ListRefsOptions) !RefIterator {
var upload_pack_uri = session.location.uri;
{
- const session_uri_path = try std.fmt.allocPrint(session.allocator, "{fpath}", .{session.location.uri.path});
+ const session_uri_path = try std.fmt.allocPrint(session.allocator, "{f}", .{
+ std.fmt.alt(session.location.uri.path, .formatPath),
+ });
defer session.allocator.free(session_uri_path);
upload_pack_uri.path = .{ .percent_encoded = try std.fs.path.resolvePosix(session.allocator, &.{ "/", session_uri_path, "git-upload-pack" }) };
}
@@ -925,7 +939,9 @@ pub const Session = struct {
) !FetchStream {
var upload_pack_uri = session.location.uri;
{
- const session_uri_path = try std.fmt.allocPrint(session.allocator, "{fpath}", .{session.location.uri.path});
+ const session_uri_path = try std.fmt.allocPrint(session.allocator, "{f}", .{
+ std.fmt.alt(session.location.uri.path, .formatPath),
+ });
defer session.allocator.free(session_uri_path);
upload_pack_uri.path = .{ .percent_encoded = try std.fs.path.resolvePosix(session.allocator, &.{ "/", session_uri_path, "git-upload-pack" }) };
}