diff options
Diffstat (limited to 'misctools')
-rw-r--r-- | misctools/hop.zig | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/misctools/hop.zig b/misctools/hop.zig deleted file mode 100644 index e7ddf9918..000000000 --- a/misctools/hop.zig +++ /dev/null @@ -1,105 +0,0 @@ -const std = @import("std"); - -const path_handler = @import("../src/resolver/resolve_path.zig"); -usingnamespace @import("../src/global.zig"); - -const Archive = @import("../src/libarchive/libarchive.zig").Archive; -const Zlib = @import("../src/zlib.zig"); -const Hop = @import("../src/hop/hop.zig").Library; -const RecognizedExtensions = std.ComptimeStringMap(void, .{ - .{ ".tgz", void{} }, - .{ ".tar", void{} }, - .{ ".gz", void{} }, -}); - -var buf: [32 * 1024 * 1024]u8 = undefined; - -// zig build-exe -Drelease-fast --main-pkg-path ../ ./tgz.zig ../src/deps/zlib/libz.a ../src/deps/libarchive.a -lc -liconv -// zig build-exe -Drelease-fast --main-pkg-path ../ ./tgz.zig ../src/deps/zlib/libz.a ../src/deps/libarchive.a -lc -liconv -pub fn main() anyerror!void { - var stdout_ = std.io.getStdOut(); - var stderr_ = std.io.getStdErr(); - var output_source = Output.Source.init(stdout_, stderr_); - Output.Source.set(&output_source); - defer Output.flush(); - var args = try std.process.argsAlloc(std.heap.c_allocator); - if (args.len == 0) { - Output.prettyErrorln("<r><b>usage<r>: tgz ./tar.gz", .{}); - Output.flush(); - std.os.abort(); - } - - var tarball_path_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; - var input_file = std.mem.span(args[1]); - var basename = std.fs.path.basename(input_file); - var original_basename = basename; - while (RecognizedExtensions.has(std.fs.path.extension(basename))) { - basename = basename[0 .. basename.len - std.fs.path.extension(basename).len]; - } - - var parts = [_][]const u8{ - std.mem.span(args[args.len - 1]), - }; - - var tarball_path = path_handler.joinAbsStringBuf(try std.process.getCwdAlloc(std.heap.c_allocator), &tarball_path_buf, &parts, .auto); - Output.prettyErrorln("Tarball Path: {s}", .{tarball_path}); - - if (strings.endsWithComptime(original_basename, ".hop")) { - var hop_file = try std.fs.openFileAbsolute(tarball_path, .{ .read = true }); - var archive = try Hop.load(hop_file.handle, default_allocator); - var outpath = std.fs.path.basename(tarball_path); - outpath = outpath[0 .. outpath.len - std.fs.path.extension(outpath).len]; - var outdir = try std.fs.cwd().makeOpenPath(outpath, .{ .iterate = true }); - try archive.extract(outdir, Environment.isDebug); - } else { - var folder = try std.fmt.allocPrintZ(default_allocator, "{s}.hop", .{basename}); - - // var dir = try std.fs.cwd().makeOpenPath(folder, .{ .iterate = true }); - - var tarball = try std.fs.openFileAbsolute(tarball_path, .{ .read = true }); - - var tarball_buf_list = std.ArrayListUnmanaged(u8){}; - - var file_size = try tarball.getEndPos(); - var file_buf: []u8 = undefined; - var file_buf_cap: usize = 0; - - if (file_size < buf.len) { - file_buf = buf[0..try tarball.readAll(&buf)]; - file_buf_cap = buf.len; - } else { - file_buf = try tarball.readToEndAlloc( - std.heap.c_allocator, - file_size, - ); - file_buf_cap = file_buf.len; - } - - if (std.mem.eql(u8, std.fs.path.extension(tarball_path), ".gz") or std.mem.eql(u8, std.fs.path.extension(tarball_path), ".tgz")) { - tarball_buf_list = try std.ArrayListUnmanaged(u8).initCapacity(std.heap.c_allocator, 1024); - var gunzip = try Zlib.ZlibReaderArrayList.init(file_buf, &tarball_buf_list, std.heap.c_allocator); - try gunzip.readAll(); - gunzip.deinit(); - Output.prettyErrorln("Decompressed {d} -> {d}\n", .{ file_buf.len, tarball_buf_list.items.len }); - } else { - tarball_buf_list = std.ArrayListUnmanaged(u8){ .capacity = file_buf.len, .items = file_buf }; - } - - var hop = Hop.Builder.init(default_allocator); - var out = try std.fs.cwd().createFileZ(folder, .{ .truncate = true }); - defer out.close(); - errdefer std.fs.cwd().deleteFileZ(folder) catch {}; - try hop.start(out); - - _ = try Archive.convertToHop( - &hop, - file_buf, - null, - void, - void{}, - 1, - Environment.isDebug, - ); - _ = try hop.done(); - } -} |