11const std = @import ("std" );
2+ const io_singleton = @import ("io_singleton.zig" );
23const cli = @import ("cli.zig" );
34const env_expand = @import ("env_expand.zig" );
45
@@ -76,7 +77,7 @@ pub const default_template =
7677
7778pub const IgnoreOverride = struct {
7879 language : []const u8 ,
79- patterns : std .ArrayListUnmanaged ([]const u8 ) = .{} ,
80+ patterns : std .ArrayListUnmanaged ([]const u8 ) = .empty ,
8081
8182 pub fn deinit (self : * IgnoreOverride , allocator : std.mem.Allocator ) void {
8283 for (self .patterns .items ) | pattern | allocator .free (pattern );
@@ -132,10 +133,10 @@ pub const Config = struct {
132133 docs_only : ? bool = null ,
133134 comments_only : ? bool = null ,
134135 include_node_modules : ? bool = null ,
135- ignore_global : std .ArrayListUnmanaged ([]const u8 ) = .{} ,
136- always_include : std .ArrayListUnmanaged ([]const u8 ) = .{} ,
137- ignore_lang : std .ArrayListUnmanaged (IgnoreOverride ) = .{} ,
138- lsp_overrides : std .ArrayListUnmanaged (LspOverride ) = .{} ,
136+ ignore_global : std .ArrayListUnmanaged ([]const u8 ) = .empty ,
137+ always_include : std .ArrayListUnmanaged ([]const u8 ) = .empty ,
138+ ignore_lang : std .ArrayListUnmanaged (IgnoreOverride ) = .empty ,
139+ lsp_overrides : std .ArrayListUnmanaged (LspOverride ) = .empty ,
139140 http_host : ? []const u8 = null ,
140141 http_port : ? u16 = null ,
141142
@@ -469,9 +470,8 @@ pub fn parseText(allocator: std.mem.Allocator, text: []const u8) !Config {
469470}
470471
471472pub fn loadFromPath (allocator : std.mem.Allocator , path : []const u8 ) ! Config {
472- const file = try std .fs .cwd ().openFile (path , .{});
473- defer file .close ();
474- const data = try file .readToEndAlloc (allocator , 1024 * 1024 );
473+ const io = io_singleton .getOrInit ();
474+ const data = try std .Io .Dir .cwd ().readFileAlloc (io , path , allocator , .limited (1024 * 1024 ));
475475 defer allocator .free (data );
476476 return parseText (allocator , data );
477477}
@@ -489,7 +489,7 @@ fn appendPatterns(
489489 value : []const u8 ,
490490) ! void {
491491 // Split on commas, respecting \, as an escaped literal comma
492- var buf = std .ArrayListUnmanaged (u8 ){} ;
492+ var buf = @as ( std .ArrayListUnmanaged (u8 ), .empty ) ;
493493 defer buf .deinit (allocator );
494494 var i : usize = 0 ;
495495 while (i < value .len ) : (i += 1 ) {
@@ -523,7 +523,7 @@ fn getOrCreateOverride(
523523 }
524524 try list .append (allocator , .{
525525 .language = try allocator .dupe (u8 , lang ),
526- .patterns = .{} ,
526+ .patterns = .empty ,
527527 });
528528 return & list .items [list .items .len - 1 ];
529529}
@@ -549,7 +549,7 @@ pub const KV = struct {
549549/// Keys not found in the original content are appended at the end.
550550/// Returns a new allocated string with the updated content.
551551pub fn writeConfigValues (allocator : std.mem.Allocator , content : []const u8 , kvs : []const KV ) ! []u8 {
552- var output : std .ArrayListUnmanaged (u8 ) = .{} ;
552+ var output : std .ArrayListUnmanaged (u8 ) = .empty ;
553553 defer output .deinit (allocator );
554554
555555 // Track which kvs were matched
@@ -567,9 +567,9 @@ pub fn writeConfigValues(allocator: std.mem.Allocator, content: []const u8, kvs:
567567 var was_matched = false ;
568568 for (kvs , 0.. ) | kv , idx | {
569569 // Match "#key=..." or "# key=..." or "key=..."
570- const trimmed = std .mem .trimLeft (u8 , line , " \t " );
570+ const trimmed = std .mem .trimStart (u8 , line , " \t " );
571571 const after_hash = if (std .mem .startsWith (u8 , trimmed , "#" ))
572- std .mem .trimLeft (u8 , trimmed [1.. ], " \t " )
572+ std .mem .trimStart (u8 , trimmed [1.. ], " \t " )
573573 else
574574 trimmed ;
575575
@@ -734,9 +734,9 @@ test "default_template parses without error" {
734734test "loadFromPath reads file" {
735735 var tmp = std .testing .tmpDir (.{});
736736 defer tmp .cleanup ();
737- try tmp .dir .writeFile (.{ .sub_path = "config" , .data = "top=3\n " });
737+ try tmp .dir .writeFile (io_singleton . getOrInit (), .{ .sub_path = "config" , .data = "top=3\n " });
738738 const allocator = std .testing .allocator ;
739- const path = try tmp .dir .realpathAlloc ( allocator , "config" );
739+ const path = try tmp .dir .realPathFileAlloc ( io_singleton . getOrInit () , "config" , allocator );
740740 defer allocator .free (path );
741741 var cfg = try loadFromPath (allocator , path );
742742 defer cfg .deinit (allocator );
0 commit comments