| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'dart:io'; |
| |
| /// A simple, properties file based configuration class. |
| /// |
| /// We expect an (optional) file in the root of the directory, names 'config.properties'. |
| class Config { |
| static Config _singleton; |
| |
| static Config getConfig() { |
| if (_singleton == null) { |
| _singleton = Config._(); |
| |
| final file = File('config.properties'); |
| if (file.existsSync()) { |
| _singleton._load(file.readAsLinesSync()); |
| } |
| } |
| |
| return _singleton; |
| } |
| |
| final Map<String, String> _values = <String, String>{}; |
| |
| Config._(); |
| |
| String getValue(String key) => _values[key]; |
| |
| void _load(List<String> lines) { |
| _values.clear(); |
| |
| for (var line in lines) { |
| line = line.trim(); |
| if (line.isEmpty) { |
| continue; |
| } |
| final index = line.indexOf('='); |
| if (index == -1) { |
| continue; |
| } |
| _values[line.substring(0, index)] = line.substring(index + 1); |
| } |
| } |
| } |