Change over to using command runner for arg parsing

This commit is contained in:
2025-11-30 11:46:59 -06:00
parent 682e371e3c
commit 15c17c4a02
3 changed files with 27 additions and 23 deletions

View File

@@ -1,29 +1,15 @@
import 'dart:io';
import 'package:adventofcode2025/day1/main.dart' as day1;
import 'package:adventofcode2025/day1/command.dart' as day1;
import 'package:args/args.dart';
import 'package:args/command_runner.dart';
const help = 'help';
const dayNumber = 'day';
void main(List<String> arguments) {
final parser = ArgParser()
..addFlag(help, negatable: false, abbr: 'h')
..addOption(dayNumber, mandatory: true, abbr: "d");
var results = parser.parse(arguments);
if (results.flag(help)) {
print(parser.usage);
exit(0);
}
var day = results.option(dayNumber);
switch (day) {
case '1':
day1.run();
default:
print("'$day' is not a valid value for option $dayNumber");
}
var runner =
CommandRunner("adventofcode2025", "Advent of Code 2025 solutions")
..addCommand(day1.Day1Command())
..run(arguments);
}

21
lib/day1/command.dart Normal file
View File

@@ -0,0 +1,21 @@
import "package:args/command_runner.dart";
class Day1Command extends Command {
// The [name] and [description] properties must be defined by every
// subclass.
final name = "day1";
final description = "Run Advent of Code 2025 Day 1";
Day1Command() {
// we can add command specific arguments here.
// [argParser] is automatically created by the parent class.
}
// [run] may also return a Future.
@override
void run() {
// [argResults] is set before [run()] is called and contains the flags/options
// passed to this command.
print(argResults?.rest);
}
}

View File

@@ -1,3 +0,0 @@
void run() {
print("Hello World Day 1");
}