diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3e37952..6e1ee85 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,19 +14,23 @@ jobs: matrix: zig-version: [master] os: [ubuntu-latest, macos-latest, windows-latest] - # include: - # - zig-version: "0.14.0" - # os: ubuntu-latest + include: + - zig-version: "0.14.1" + os: ubuntu-latest runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Zig - uses: mlugg/setup-zig@v1 + uses: mlugg/setup-zig@v2 with: version: master + - name: Run zig fmt + if: matrix.os == 'ubuntu-latest' + run: zig fmt --check . + - name: Run Tests run: zig build test --summary all diff --git a/README.md b/README.md index cd2652c..7687f5f 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ pub fn getPath(allocator: std.mem.Allocator, folder: KnownFolder) Error!?[]const ## Installation > [!NOTE] -> The minimum supported Zig version is `0.14.0-dev.3445+6c3cbb0c8`. +> The minimum supported Zig version is `0.14.0`. Initialize a `zig build` project if you haven't already. diff --git a/build.zig b/build.zig index c38a23e..bfb9ebc 100644 --- a/build.zig +++ b/build.zig @@ -1,7 +1,7 @@ const std = @import("std"); const builtin = @import("builtin"); -const minimum_zig_version = std.SemanticVersion.parse("0.14.0-dev.3445+6c3cbb0c8") catch unreachable; +const minimum_zig_version = std.SemanticVersion.parse("0.14.0") catch unreachable; pub fn build(b: *std.Build) void { if (comptime (builtin.zig_version.order(minimum_zig_version) == .lt)) { @@ -28,6 +28,10 @@ pub fn build(b: *std.Build) void { .optimize = optimize, .strip = strip, }); + if (target.result.os.tag == .windows) { + mod.linkSystemLibrary("shell32", .{}); + mod.linkSystemLibrary("ole32", .{}); + } const unit_tests = b.addTest(.{ .root_module = mod, diff --git a/build.zig.zon b/build.zig.zon index 504cdb9..e16c9cc 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,7 +1,7 @@ .{ .name = .known_folders, .version = "0.0.0", - .minimum_zig_version = "0.14.0-dev.3445+6c3cbb0c8", + .minimum_zig_version = "0.14.0", .dependencies = .{}, .paths = .{ "build.zig", diff --git a/known-folders.zig b/known-folders.zig index ff22c46..0389a63 100644 --- a/known-folders.zig +++ b/known-folders.zig @@ -109,13 +109,8 @@ pub const KnownFolderConfig = struct { xdg_on_mac: bool = false, }; -const OpenOptions = if (@import("builtin").zig_version.order(std.SemanticVersion.parse("0.14.0-dev.211+0cc42d090") catch unreachable) == .lt) - std.fs.Dir.OpenDirOptions -else - std.fs.Dir.OpenOptions; - /// Returns a directory handle, or, if the folder does not exist, `null`. -pub fn open(allocator: std.mem.Allocator, folder: KnownFolder, args: OpenOptions) (std.fs.Dir.OpenError || Error)!?std.fs.Dir { +pub fn open(allocator: std.mem.Allocator, folder: KnownFolder, args: std.fs.Dir.OpenOptions) (std.fs.Dir.OpenError || Error)!?std.fs.Dir { const path = try getPath(allocator, folder) orelse return null; defer allocator.free(path); return try std.fs.cwd().openDir(path, args); @@ -370,12 +365,7 @@ const TestingSystem = struct { const prefix = std.base64.standard.Encoder.encode(buffer, kv.path); - const writeFile = if (comptime builtin.zig_version.order(std.SemanticVersion.parse("0.13.0-dev.68+b86c4bde6") catch unreachable) == .lt) - std.fs.Dir.writeFile2 - else - std.fs.Dir.writeFile; - - writeFile(tmp_dir.dir, .{ + tmp_dir.dir.writeFile(.{ .sub_path = prefix, .data = data, }) catch |err| { @@ -423,8 +413,7 @@ fn xdgUserDirLookup( std.debug.assert(std.mem.endsWith(u8, folder_type, "_DIR")); const folder_name = folder_type["XDG_".len .. folder_type.len - "_DIR".len]; - std.debug.assert( // - std.mem.eql(u8, folder_name, "DESKTOP") or + std.debug.assert(std.mem.eql(u8, folder_name, "DESKTOP") or std.mem.eql(u8, folder_name, "DOWNLOAD") or std.mem.eql(u8, folder_name, "TEMPLATES") or std.mem.eql(u8, folder_name, "PUBLICSHARE") or