]> jxnshi.xyz Git - jxnshi.xyz.git/commitdiff
Update style
authorjxnshi <jxnshi@proton.me>
Tue, 7 Jan 2025 12:22:30 +0000 (12:22 +0000)
committerjxnshi <jxnshi@proton.me>
Tue, 7 Jan 2025 12:22:30 +0000 (12:22 +0000)
public/layout.html
public/styles/gitweb.css [new file with mode: 0644]
public/styles/main.css [new file with mode: 0644]
public/styles/root.css [moved from public/style.css with 100% similarity]
src/main.zig

index 86c5f2ab979cbac0f3f993ccf7d015bc9292608b..e2e66246e6b784430cea94a23c3222a300671dfe 100644 (file)
@@ -4,7 +4,7 @@
         <title>jxnshi.xyz</title>
         <meta charset="UTF-8">
         <meta content="width=device-width, initial-scale=1" name="viewport">
-        <link rel="stylesheet" href="/style.css">
+        <link rel="stylesheet" href="/styles/main.css">
     </head>
     <body>
         <div id="main-div">
@@ -17,7 +17,7 @@
                             <h2 id="projects-title">Projects</h2>
                             <ul>
                                 <li><a href="/books">books</a></li>
-                                <li><a href="/repos">repos</a></li>
+                                <li><a href="/repos" target="_blank">repos</a></li>
                             </ul>
                         </div>
                     </div>
diff --git a/public/styles/gitweb.css b/public/styles/gitweb.css
new file mode 100644 (file)
index 0000000..09d2cac
--- /dev/null
@@ -0,0 +1 @@
+@import url("root.css");
diff --git a/public/styles/main.css b/public/styles/main.css
new file mode 100644 (file)
index 0000000..09d2cac
--- /dev/null
@@ -0,0 +1 @@
+@import url("root.css");
similarity index 100%
rename from public/style.css
rename to public/styles/root.css
index 0bced5e35ee34f54c63ced5751ea550cc9b980cb..4ca1b66da3f07e1606cca616c467873494c5bda4 100644 (file)
@@ -108,124 +108,64 @@ fn handleClient(parent_allocator: std.mem.Allocator, connection: std.net.Server.
 
             var maybe_index_file: ?std.fs.File = null;
 
-            // Handle repos.
-            if (std.mem.startsWith(u8, route, "repos")) {
-                const sub_route = route["repos".len..];
-
-                var git_dir = try std.fs.openDirAbsolute("/srv/git/", .{ .iterate = true });
-                defer git_dir.close();
-
-                // Show all repos.
-                if (sub_route.len == 0) {
-                    var git_iter = git_dir.iterate();
-
-                    try temp_buffer_writer.writeAll("<code>git clone git://jxnshi.xyz/repo-name.git</code>");
-                    try temp_buffer_writer.writeAll("<ul id=\"repos-list\">\n");
-
-                    while (try git_iter.next()) |entry| {
-                        const repo_name = entry.name[0 .. entry.name.len - ".git".len];
-
-                        var repo_dir = try git_dir.openDir(entry.name, .{ .iterate = true });
-                        defer repo_dir.close();
-
-                        var repo_dir_iter = repo_dir.iterate();
-
-                        var has_read_me = false;
-
-                        while (try repo_dir_iter.next()) |repo_entry| {
-                            if (std.mem.eql(u8, repo_entry.name, "README.md")) {
-                                has_read_me = true;
-                                break;
-                            }
-                        }
+            index_file: {
+                route_dir: {
+                    var route_dir: std.fs.Dir = undefined;
+                    var is_public: bool = undefined;
+
+                    if (route.len == 0) {
+                        route_dir = public_dir;
+                        is_public = true;
+                    } else {
+                        route_dir = public_dir.openDir(route, .{}) catch break :route_dir;
+                        is_public = false;
+                    }
 
-                        if (has_read_me) {
-                            try std.fmt.format(temp_buffer_writer, "<li><a href=\"/repos/{s}\">{s}</a></li>\n", .{ repo_name, repo_name });
-                        } else {
-                            try std.fmt.format(temp_buffer_writer, "<li>{s}</li>\n", .{repo_name});
+                    defer {
+                        if (!is_public) {
+                            route_dir.close();
                         }
                     }
 
-                    try temp_buffer_writer.writeAll("</ul>\n");
-                }
-
-                // Show specific repo.
-                else if (sub_route[0] == '/') {
-                    const repo_name = sub_route[1..];
+                    maybe_index_file = route_dir.openFile("index.html", .{}) catch break :route_dir;
 
-                    var repo_dir = try git_dir.openDir(repo_name, .{ .iterate = true });
-                    defer repo_dir.close();
+                    break :index_file;
+                }
 
-                    var read_me_file = try repo_dir.openFile("README.md", .{});
-                    defer read_me_file.close();
+                var path_ext = std.ArrayList(u8).init(allocator);
+                defer path_ext.deinit();
 
-                    const read_me_file_reader = read_me_file.reader();
+                try path_ext.appendSlice(route);
+                try path_ext.appendSlice(".html");
 
-                    try markdownToHtml(temp_buffer_writer.any(), read_me_file_reader.any());
+                if (public_dir.openFile(path_ext.items, .{})) |index_file| {
+                    maybe_index_file = index_file;
+                } else |_| {
+                    //
                 }
             }
 
-            // Handle file index.
-            else {
-                index_file: {
-                    route_dir: {
-                        var route_dir: std.fs.Dir = undefined;
-                        var is_public: bool = undefined;
-
-                        if (route.len == 0) {
-                            route_dir = public_dir;
-                            is_public = true;
-                        } else {
-                            route_dir = public_dir.openDir(route, .{}) catch break :route_dir;
-                            is_public = false;
-                        }
-
-                        defer {
-                            if (!is_public) {
-                                route_dir.close();
-                            }
-                        }
-
-                        maybe_index_file = route_dir.openFile("index.html", .{}) catch break :route_dir;
-
-                        break :index_file;
-                    }
+            if (maybe_index_file) |index_file| {
+                defer index_file.close();
 
+                const index_file_reader = index_file.reader();
+                try index_file_reader.readAllArrayList(&temp_buffer, std.math.maxInt(usize));
+            } else no_index_file: {
+                md_file: {
                     var path_ext = std.ArrayList(u8).init(allocator);
                     defer path_ext.deinit();
 
                     try path_ext.appendSlice(route);
-                    try path_ext.appendSlice(".html");
+                    try path_ext.appendSlice(".md");
 
-                    if (public_dir.openFile(path_ext.items, .{})) |index_file| {
-                        maybe_index_file = index_file;
-                    } else |_| {
-                        //
-                    }
-                }
-
-                if (maybe_index_file) |index_file| {
-                    defer index_file.close();
-
-                    const index_file_reader = index_file.reader();
-                    try index_file_reader.readAllArrayList(&temp_buffer, std.math.maxInt(usize));
-                } else no_index_file: {
-                    md_file: {
-                        var path_ext = std.ArrayList(u8).init(allocator);
-                        defer path_ext.deinit();
+                    var md_file = public_dir.openFile(path_ext.items, .{}) catch break :md_file;
+                    defer md_file.close();
 
-                        try path_ext.appendSlice(route);
-                        try path_ext.appendSlice(".md");
+                    const md_file_reader = md_file.reader();
 
-                        var md_file = public_dir.openFile(path_ext.items, .{}) catch break :md_file;
-                        defer md_file.close();
+                    try markdownToHtml(temp_buffer_writer.any(), md_file_reader.any());
 
-                        const md_file_reader = md_file.reader();
-
-                        try markdownToHtml(temp_buffer_writer.any(), md_file_reader.any());
-
-                        break :no_index_file;
-                    }
+                    break :no_index_file;
                 }
             }