@@ -2,45 +2,44 @@ const std = @import("std");
22
33var is_installed : ? bool = null ;
44
5- pub fn isInstalled (gpa : std.mem.Allocator ) bool {
5+ pub fn isInstalled (gpa : std.mem.Allocator , io : std.Io ) bool {
66 if (is_installed ) | v | {
77 return v ;
88 }
99 var arena = std .heap .ArenaAllocator .init (gpa );
1010 defer arena .deinit ();
11- const run = std .process .Child .run (.{
12- .allocator = arena .allocator (),
11+ const run = std .process .run (arena .allocator (), io , .{
1312 .argv = &.{ "git" , "--version" },
1413 }) catch {
1514 is_installed = false ;
1615 return is_installed .? ;
1716 };
1817 is_installed = switch (run .term ) {
19- .Exited = > | v | v == 0 ,
18+ .exited = > | v | v == 0 ,
2019 else = > false ,
2120 };
2221 return is_installed .? ;
2322}
2423
25- pub fn currentCommit (gpa : std.mem.Allocator ) ! []const u8 {
26- if (! isInstalled (gpa )) return error .GitNotInstalled ;
24+ pub fn currentCommit (gpa : std.mem.Allocator , io : std.Io ) ! []const u8 {
25+ if (! isInstalled (gpa , io )) return error .GitNotInstalled ;
2726 var arena = std .heap .ArenaAllocator .init (gpa );
2827 defer arena .deinit ();
29- const run = try std .process .Child .run (.{
30- .allocator = arena .allocator (),
28+ const run = try std .process .run (arena .allocator (), io , .{
3129 .argv = &.{ "git" , "rev-parse" , "HEAD" },
3230 });
3331 return try gpa .dupe (u8 , run .stdout [0.. 8]);
3432}
3533
3634pub fn getLinesChanged (
3735 gpa : std.mem.Allocator ,
36+ io : std.Io ,
3837 login : []const u8 ,
3938 token : []const u8 ,
4039 repo : []const u8 ,
4140 emails : []const []const u8 ,
4241) ! u32 {
43- if (! isInstalled (gpa )) return error .GitNotInstalled ;
42+ if (! isInstalled (gpa , io )) return error .GitNotInstalled ;
4443 var arena = std .heap .ArenaAllocator .init (gpa );
4544 defer arena .deinit ();
4645 const allocator = arena .allocator ();
@@ -51,8 +50,7 @@ pub fn getLinesChanged(
5150 "https://{s}:{s}@github.com/{s}.git" ,
5251 .{ login , token , repo },
5352 );
54- const clone = try std .process .Child .run (.{
55- .allocator = allocator ,
53+ const clone = try std .process .run (allocator , io , .{
5654 .argv = &.{
5755 "git" ,
5856 "clone" ,
@@ -65,10 +63,10 @@ pub fn getLinesChanged(
6563 },
6664 });
6765 switch (clone .term ) {
68- .Exited = > | v | if (v != 0 ) return error .CloneFailed ,
66+ .exited = > | v | if (v != 0 ) return error .CloneFailed ,
6967 else = > return error .CloneFailed ,
7068 }
71- defer std .fs . cwd ().deleteTree (repo_path ) catch {};
69+ defer std .Io . Dir . cwd ().deleteTree (io , repo_path ) catch {};
7270
7371 const email_args = try allocator .alloc ([]const u8 , emails .len * 2 );
7472 for (emails , 0.. ) | email , i | {
@@ -86,13 +84,9 @@ pub fn getLinesChanged(
8684 },
8785 email_args ,
8886 });
89- const log = try std .process .Child .run (.{
90- .allocator = allocator ,
91- .argv = log_args ,
92- .max_output_bytes = 64 * 1024 * 1024 ,
93- });
87+ const log = try std .process .run (allocator , io , .{ .argv = log_args });
9488 switch (log .term ) {
95- .Exited = > | v | if (v != 0 ) return error .LogFailed ,
89+ .exited = > | v | if (v != 0 ) return error .LogFailed ,
9690 else = > return error .LogFailed ,
9791 }
9892
0 commit comments