diff --git a/build.zig b/build.zig index be4fac1..bcf6016 100644 --- a/build.zig +++ b/build.zig @@ -19,6 +19,17 @@ pub fn build(b: *std.Build) void { b.installArtifact(exe); + const exe_win = b.addExecutable(.{ + .name = "file_organizer", + .root_module = b.createModule(.{ + .root_source_file = b.path("src/main.zig"), + .target = b.resolveTargetQuery(.{ .cpu_arch = .x86_64, .os_tag = .windows }), + .optimize = optimize, + }), + }); + + b.installArtifact(exe_win); + const run_step = b.step("run", "Run the app"); const run_cmd = b.addRunArtifact(exe); diff --git a/src/classify.zig b/src/classify.zig index 908e21f..4fc5663 100644 --- a/src/classify.zig +++ b/src/classify.zig @@ -5,6 +5,7 @@ pub const Category = enum { document, music, video, + archive, code, other, }; @@ -19,6 +20,7 @@ const CategoryMap = [_]CategoryEntry{ .{ .category = .document, .extensions = &DocumentTypes }, .{ .category = .music, .extensions = &MusicTypes }, .{ .category = .video, .extensions = &VideoTypes }, + .{ .category = .archive, .extensions = &ArchiveTypes }, }; const ImageTypes = [_][]const u8{ @@ -42,6 +44,10 @@ const VideoTypes = [_][]const u8{ ".webm", ".wmv", }; +const ArchiveTypes = [_][]const u8{ + ".zip", ".rar", ".iso", ".tar", ".gz", ".7z", ".apk", ".cab", ".dar", ".dmg", ".jar", ".pea", ".tar.gz", ".tgz", ".tar.Z", ".tar.bz2", ".tbz2", ".tar.lz", ".tlz", ".tar.xz", ".txz", ".tar.zst",".war", ".zipx", +}; + pub fn classify(name: []const u8) Category { const extension = std.fs.path.extension(name); diff --git a/src/main.zig b/src/main.zig index 89ca762..1b49d6f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -7,7 +7,7 @@ pub fn main() !void { const io = threaded.io(); const cwd = std.Io.Dir.cwd(); - const dir = try cwd.openDir(io, ".", .{ .iterate = true }); // change to root later + const dir = try cwd.openDir(io, ".", .{ .iterate = true }); defer dir.close(io); var iterate = dir.iterate(); diff --git a/src/organize.zig b/src/organize.zig index b171468..ae393a0 100644 --- a/src/organize.zig +++ b/src/organize.zig @@ -12,6 +12,7 @@ fn placeFile(io: std.Io, dir: std.Io.Dir, category: classify.Category, name: []c .document => "Documents", .music => "Music", .video => "Videos", + .archive => "Archives", .code => "Code", .other => return, };