mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 15:13:28 +00:00
Replace --noscript with more advanced --strip_mode
--noscript is deprecated (warning) and automatically maps to --strip_mode js --strip_mode takes a comma separated list of values. From the help: - "js" script and link[as=script, rel=preload] - "ui" includes img, picture, video, css and svg - "css" includes style and link[rel=stylesheet] - "full" includes js, ui and css Maybe this is overkill, but i sometimes find myself looking --dump outputs over and over again, and removing noise (like HUGE svgs) seems like a small improvement.
This commit is contained in:
54
src/main.zig
54
src/main.zig
@@ -24,6 +24,7 @@ const log = @import("log.zig");
|
||||
const App = @import("app.zig").App;
|
||||
const Server = @import("server.zig").Server;
|
||||
const Browser = @import("browser/browser.zig").Browser;
|
||||
const DumpStripMode = @import("browser/dump.zig").Opts.StripMode;
|
||||
|
||||
const build_config = @import("build_config");
|
||||
|
||||
@@ -184,7 +185,7 @@ fn run(alloc: Allocator) !void {
|
||||
try page.dump(.{
|
||||
.page = page,
|
||||
.with_base = opts.withbase,
|
||||
.exclude_scripts = opts.noscript,
|
||||
.strip_mode = opts.strip_mode,
|
||||
}, &writer.interface);
|
||||
try writer.interface.flush();
|
||||
}
|
||||
@@ -292,8 +293,8 @@ const Command = struct {
|
||||
url: []const u8,
|
||||
dump: bool = false,
|
||||
common: Common,
|
||||
noscript: bool = false,
|
||||
withbase: bool = false,
|
||||
strip_mode: DumpStripMode = .{},
|
||||
};
|
||||
|
||||
const Common = struct {
|
||||
@@ -372,7 +373,14 @@ const Command = struct {
|
||||
\\Options:
|
||||
\\--dump Dumps document to stdout.
|
||||
\\ Defaults to false.
|
||||
\\--noscript Exclude <script> tags in dump. Defaults to false.
|
||||
\\
|
||||
\\--strip_mode Comma separated list of tag groups to remove from dump
|
||||
\\ the dump. e.g. --strip_mode js,css
|
||||
\\ - "js" script and link[as=script, rel=preload]
|
||||
\\ - "ui" includes img, picture, video, css and svg
|
||||
\\ - "css" includes style and link[rel=stylesheet]
|
||||
\\ - "full" includes js, ui and css
|
||||
\\
|
||||
\\--with_base Add a <base> tag in dump. Defaults to false.
|
||||
\\
|
||||
++ common_options ++
|
||||
@@ -460,6 +468,10 @@ fn inferMode(opt: []const u8) ?App.RunMode {
|
||||
return .fetch;
|
||||
}
|
||||
|
||||
if (std.mem.eql(u8, opt, "--strip_mode")) {
|
||||
return .fetch;
|
||||
}
|
||||
|
||||
if (std.mem.eql(u8, opt, "--with_base")) {
|
||||
return .fetch;
|
||||
}
|
||||
@@ -545,10 +557,10 @@ fn parseFetchArgs(
|
||||
args: *std.process.ArgIterator,
|
||||
) !Command.Fetch {
|
||||
var dump: bool = false;
|
||||
var noscript: bool = false;
|
||||
var withbase: bool = false;
|
||||
var url: ?[]const u8 = null;
|
||||
var common: Command.Common = .{};
|
||||
var strip_mode: DumpStripMode = .{};
|
||||
|
||||
while (args.next()) |opt| {
|
||||
if (std.mem.eql(u8, "--dump", opt)) {
|
||||
@@ -557,7 +569,11 @@ fn parseFetchArgs(
|
||||
}
|
||||
|
||||
if (std.mem.eql(u8, "--noscript", opt)) {
|
||||
noscript = true;
|
||||
log.warn(.app, "deprecation warning", .{
|
||||
.feature = "--noscript argument",
|
||||
.hint = "use '--strip_mode js' instead",
|
||||
});
|
||||
strip_mode.js = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -566,6 +582,32 @@ fn parseFetchArgs(
|
||||
continue;
|
||||
}
|
||||
|
||||
if (std.mem.eql(u8, "--strip_mode", opt)) {
|
||||
const str = args.next() orelse {
|
||||
log.fatal(.app, "missing argument value", .{ .arg = "--strip_mode" });
|
||||
return error.InvalidArgument;
|
||||
};
|
||||
|
||||
var it = std.mem.splitScalar(u8, str, ',');
|
||||
while (it.next()) |part| {
|
||||
const trimmed = std.mem.trim(u8, part, &std.ascii.whitespace);
|
||||
if (std.mem.eql(u8, trimmed, "js")) {
|
||||
strip_mode.js = true;
|
||||
} else if (std.mem.eql(u8, trimmed, "ui")) {
|
||||
strip_mode.ui = true;
|
||||
} else if (std.mem.eql(u8, trimmed, "css")) {
|
||||
strip_mode.css = true;
|
||||
} else if (std.mem.eql(u8, trimmed, "full")) {
|
||||
strip_mode.js = true;
|
||||
strip_mode.ui = true;
|
||||
strip_mode.css = true;
|
||||
} else {
|
||||
log.fatal(.app, "invalid option choice", .{ .arg = "--strip_mode", .value = trimmed });
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (try parseCommonArg(allocator, opt, args, &common)) {
|
||||
continue;
|
||||
}
|
||||
@@ -591,8 +633,8 @@ fn parseFetchArgs(
|
||||
.url = url.?,
|
||||
.dump = dump,
|
||||
.common = common,
|
||||
.noscript = noscript,
|
||||
.withbase = withbase,
|
||||
.strip_mode = strip_mode,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user