mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 05:37:35 +00:00
base64: Implement -w/--wrap
This is an option supported by coreutils, so we might as well support it too. It allows users to wrap their encoded output after the "column" value they provide. This commit also has the Markdown look more like what we see when running ArgsParser::print_usage_markdown() (and it fixes some of the examples).
This commit is contained in:
parent
333454456b
commit
1d43bfc598
2 changed files with 27 additions and 4 deletions
|
@ -10,15 +10,29 @@
|
|||
#include <LibCore/System.h>
|
||||
#include <LibMain/Main.h>
|
||||
|
||||
static void print_wrapped_output(size_t column, StringView encoded)
|
||||
{
|
||||
VERIFY(column > 0);
|
||||
|
||||
while (!encoded.is_empty()) {
|
||||
auto segment_length = min(column, encoded.length());
|
||||
|
||||
outln("{}", encoded.substring_view(0, segment_length));
|
||||
encoded = encoded.substring_view(segment_length);
|
||||
}
|
||||
}
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
{
|
||||
TRY(Core::System::pledge("stdio rpath"));
|
||||
|
||||
bool decode = false;
|
||||
Optional<size_t> maybe_column;
|
||||
StringView filepath = {};
|
||||
|
||||
Core::ArgsParser args_parser;
|
||||
args_parser.add_option(decode, "Decode data", "decode", 'd');
|
||||
args_parser.add_option(maybe_column, "When encoding, wrap output after column characters", "wrap", 'w', "column");
|
||||
args_parser.add_positional_argument(filepath, "", "file", Core::ArgsParser::Required::No);
|
||||
args_parser.parse(arguments);
|
||||
|
||||
|
@ -34,6 +48,12 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
}
|
||||
|
||||
auto encoded = TRY(encode_base64(buffer));
|
||||
|
||||
if (maybe_column.has_value() && *maybe_column > 0) {
|
||||
print_wrapped_output(*maybe_column, encoded);
|
||||
return 0;
|
||||
}
|
||||
|
||||
outln("{}", encoded);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue