parse int args

This commit is contained in:
Henry Hiles 2026-02-28 17:55:44 -05:00
commit 3abdc8b6c1
No known key found for this signature in database

View file

@ -1,3 +1,5 @@
import "dart:convert";
import "package:args/args.dart"; import "package:args/args.dart";
import "package:nexusbot/models/settings.dart"; import "package:nexusbot/models/settings.dart";
import "package:riverpod/riverpod.dart"; import "package:riverpod/riverpod.dart";
@ -6,9 +8,19 @@ class SettingsController extends Notifier<Settings?> {
@override @override
Settings? build() => null; Settings? build() => null;
void set(ArgResults args) => state = Settings.fromJson(<String, dynamic>{ void set(ArgResults args) {
for (final opt in args.options) opt: args.option(opt), dynamic tryJson(String value) {
}); try {
return json.decode(value);
} catch (_) {
return value;
}
}
state = Settings.fromJson(<String, dynamic>{
for (final opt in args.options) opt: tryJson(args.option(opt) ?? "null"),
});
}
static final provider = NotifierProvider<SettingsController, Settings?>( static final provider = NotifierProvider<SettingsController, Settings?>(
SettingsController.new, SettingsController.new,