1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 02:27:43 +00:00

seq: Interpret parameters with ArgsParser

This commit is contained in:
Eli Youngs 2022-10-23 17:46:54 -07:00 committed by Sam Atkins
parent 87aed17a46
commit d16fa32674

View file

@ -6,6 +6,8 @@
#include <AK/Format.h>
#include <AK/StdLibExtras.h>
#include <AK/Vector.h>
#include <LibCore/ArgsParser.h>
#include <LibCore/System.h>
#include <LibMain/Main.h>
#include <stdio.h>
@ -46,28 +48,26 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
TRY(Core::System::pledge("stdio"));
TRY(Core::System::unveil(nullptr, nullptr));
for (size_t i = 1; i < arguments.strings.size(); i++) {
if (arguments.strings[i] == "--help"sv || arguments.strings[i] == "-h") {
out("HELP");
print_usage(stdout);
exit(0);
}
}
Vector<char const*> parameters;
Core::ArgsParser args_parser;
args_parser.add_positional_argument(parameters, "1 to 3 parameters, interpreted as LAST, FIRST LAST, or FIRST INCREMENT LAST", "parameters");
args_parser.parse(arguments);
double start = 1, step = 1, end = 1;
int number_of_start_decimals = 0, number_of_step_decimals = 0, number_of_end_decimals = 0;
switch (arguments.strings.size()) {
switch (parameters.size()) {
case 1:
end = get_double(arguments.argv[0], parameters[0], &number_of_end_decimals);
break;
case 2:
end = get_double(arguments.argv[0], arguments.argv[1], &number_of_end_decimals);
start = get_double(arguments.argv[0], parameters[0], &number_of_start_decimals);
end = get_double(arguments.argv[0], parameters[1], &number_of_end_decimals);
break;
case 3:
start = get_double(arguments.argv[0], arguments.argv[1], &number_of_start_decimals);
end = get_double(arguments.argv[0], arguments.argv[2], &number_of_end_decimals);
break;
case 4:
start = get_double(arguments.argv[0], arguments.argv[1], &number_of_start_decimals);
step = get_double(arguments.argv[0], arguments.argv[2], &number_of_step_decimals);
end = get_double(arguments.argv[0], arguments.argv[3], &number_of_end_decimals);
start = get_double(arguments.argv[0], parameters[0], &number_of_start_decimals);
step = get_double(arguments.argv[0], parameters[1], &number_of_step_decimals);
end = get_double(arguments.argv[0], parameters[2], &number_of_end_decimals);
break;
default:
warnln("{}: unexpected number of arguments", arguments.argv[0]);