85 lines
2.7 KiB
Dart
85 lines
2.7 KiB
Dart
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
|
// Copyright (C) 2023 WYATT GROUP
|
|
// Please see the AUTHORS file for details.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
import 'package:brick_generator/models/boolean_file_system.dart';
|
|
import 'package:brick_generator/models/boolean_mapping.dart';
|
|
import 'package:brick_generator/models/ignore_list.dart';
|
|
import 'package:yaml/yaml.dart';
|
|
|
|
const _pathToBrickifyKey = 'path_to_brickify';
|
|
const _ignoreKey = 'ignore';
|
|
const _hooksKey = 'hooks';
|
|
const _booleanMappingKey = 'boolean_mapping';
|
|
const _booleanFileSystemKey = 'boolean_file_system';
|
|
|
|
class BrickgenConfig {
|
|
final String pathToBrickify;
|
|
final IgnoreList ignore;
|
|
final bool hooks;
|
|
final List<BooleanMapping> booleanMapping;
|
|
final List<BooleanFileSystem> booleanFileSystem;
|
|
|
|
BrickgenConfig({
|
|
required this.pathToBrickify,
|
|
required this.ignore,
|
|
required this.hooks,
|
|
required this.booleanMapping,
|
|
required this.booleanFileSystem,
|
|
});
|
|
|
|
factory BrickgenConfig.parse(YamlMap? data) {
|
|
if (data == null) {
|
|
throw ArgumentError.notNull('data');
|
|
}
|
|
|
|
final booleanMapping = (data[_booleanMappingKey] as YamlMap?)
|
|
?.entries
|
|
.map(
|
|
(e) =>
|
|
BooleanMapping.fromYaml(e.key as String, e.value as YamlMap?),
|
|
)
|
|
.toList() ??
|
|
[];
|
|
|
|
final booleanFileSystem = (data[_booleanFileSystemKey] as YamlMap?)
|
|
?.entries
|
|
.map(
|
|
(e) => BooleanFileSystem.fromYaml(
|
|
e.key as String,
|
|
e.value as YamlMap?,
|
|
),
|
|
)
|
|
.toList() ??
|
|
[];
|
|
|
|
final config = BrickgenConfig(
|
|
pathToBrickify: data[_pathToBrickifyKey] as String? ?? '',
|
|
ignore: IgnoreList.fromConfig(data[_ignoreKey] as YamlList?),
|
|
hooks: data[_hooksKey] as bool? ?? false,
|
|
booleanMapping: booleanMapping,
|
|
booleanFileSystem: booleanFileSystem,
|
|
);
|
|
|
|
return config;
|
|
}
|
|
|
|
@override
|
|
String toString() => 'BrickgenConfig(pathToBrickify: $pathToBrickify, '
|
|
'ignore: $ignore, hooks: $hooks, booleanMapping: $booleanMapping, '
|
|
'booleanFileSystem: $booleanFileSystem)';
|
|
}
|