Skip to content

Commit 5d1def9

Browse files
committed
fix: LICENSE and README in bin dir when updating
1 parent d8d9d27 commit 5d1def9

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

src/update-self.zig

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -72,36 +72,43 @@ pub fn update_self(alloc: Allocator, cp: CommonPaths) !void {
7272
if (download_tarball.file_size < download_tarball.actual_size)
7373
try install.download_tarball(alloc, &client, download_tarball.url, &download_tarball.writer.?, download_tarball.file_size, download_tarball.actual_size);
7474
try download_tarball.file_handle.?.seekTo(0);
75-
const bin_dir = try cp.zigverm_root.openDir("bin/", .{});
7675

7776
var buf: [4096]u8 = undefined;
7877
var src = File.Reader.init(download_tarball.file_handle.?, &buf);
7978

8079
var zipfile = try ZipArchive.openFromFileReader(alloc, &src);
8180
defer zipfile.close();
8281

83-
var m_iter = zipfile.members.iterator();
84-
while (m_iter.next()) |i| {
85-
var entry = i.value_ptr.*;
86-
if (entry.is_dir) continue;
87-
const filename = std.fs.path.basename(i.key_ptr.*);
88-
bin_dir.deleteFile(filename) catch |e| {
89-
if (e != error.FileNotFound) return e;
90-
};
91-
const file = try bin_dir.createFile(filename, .{ .truncate = true, .lock = .shared });
92-
var file_writer = file.writer(&buf);
93-
const intf = &file_writer.interface;
94-
defer file.close();
95-
96-
try entry.decompressWriter(intf);
97-
if (builtin.os.tag != .windows) {
98-
try file.chmod(0o755);
99-
}
100-
}
101-
std.log.info("zigverm updated successfully\n", .{});
82+
const zigverm_path = try std.mem.join(alloc, "/", &.{ dl_filename, "zigverm" });
83+
const zig_path = try std.mem.join(alloc, "/", &.{ dl_filename, "zigverm" });
84+
try writeZipMember(zipfile, zigverm_path, cp);
85+
try writeZipMember(zipfile, zig_path, cp);
86+
87+
std.log.info("zigverm updated successfully", .{});
10288
try cp.download_dir.deleteFile(full_dl_filename);
10389
}
10490

91+
fn writeZipMember(zipfile: ZipArchive, path: []const u8, cp: CommonPaths) !void {
92+
const filename = std.fs.path.basename(path);
93+
const bin_dir = try cp.zigverm_root.openDir("bin/", .{});
94+
bin_dir.deleteFile(filename) catch |e| {
95+
if (e != error.FileNotFound) return e;
96+
};
97+
98+
var buf: [4096]u8 = undefined;
99+
const file = try bin_dir.createFile(filename, .{ .truncate = true, .lock = .shared });
100+
var file_writer = file.writer(&buf);
101+
const intf = &file_writer.interface;
102+
defer file.close();
103+
104+
var entry = zipfile.getFileByName(path).?;
105+
106+
try entry.decompressWriter(intf);
107+
if (builtin.os.tag != .windows) {
108+
try file.chmod(0o755);
109+
}
110+
}
111+
105112
fn read_github_releases_data(alloc: Allocator, client: *Client) !json.Parsed(json.Value) {
106113
const uri = try std.Uri.parse("https://api.github.com/repos/AMythicDev/zigverm/releases/latest");
107114
var req = install.make_request(client, uri);

0 commit comments

Comments
 (0)