load static method

Future<ToolConfig> load()

Implementation

static Future<ToolConfig> load() async {
  final env = Platform.environment['lunariseye_CONFIG_DIR'];
  final home = env ?? '${Platform.environment['HOME'] ?? '.'}/.lunariseye';
  final dir = Directory(home);
  if (!dir.existsSync()) dir.createSync(recursive: true);
  final file = File('${dir.path}/config.json');
  final cfg = ToolConfig._(dir, file);
  if (file.existsSync()) {
    try {
      final text = await file.readAsString();
      final json = jsonDecode(text) as Map<String, dynamic>;
      if (json.containsKey('profiles')) {
        final p = json['profiles'] as Map<String, dynamic>;
        p.forEach((k, v) {
          cfg.profiles[k] = ToolProfile.fromJson(v as Map<String, dynamic>);
        });
      }
      if (json.containsKey('lastResults')) {
        cfg.lastResults = json['lastResults'];
      }
    } catch (_) {
      // ignore parse errors; start fresh
    }
  }
  return cfg;
}