Luna/apps/edit.cpp
apio eb58b4acc8
All checks were successful
continuous-integration/drone/push Build is passing
libos: Add support for --help to ArgumentParser
2023-04-19 19:16:45 +02:00

29 lines
655 B
C++

#include <luna/String.h>
#include <os/ArgumentParser.h>
#include <os/File.h>
using os::File;
Result<int> luna_main(int argc, char** argv)
{
StringView pathname;
os::ArgumentParser parser;
parser.add_description("Edit a file using basic line-based shell editing."_sv);
parser.add_positional_argument(pathname, "path"_sv, true);
parser.parse(argc, argv);
auto file = TRY(File::open_or_create(pathname, File::WriteOnly));
auto input = File::standard_input();
while (1)
{
String line = TRY(input->read_line());
if (line.is_empty()) break;
TRY(file->write(line.view()));
}
return 0;
}