dev
dart 44 lines 1.17 KB
Raw
1 import 'dart:convert';
2 import 'dart:io';
3 import 'generate_new_secrets.dart';
4 import 'import_secrets_config.dart';
5 import 'utils/utils.dart';
6
7 const configPath = 'tool/.secrets-config.json';
8
9 Future<void> main(List<String> args) async {
10 await updateSecretsConfig(args);
11 await importSecretsConfig();
12 }
13
14 Future<void> updateSecretsConfig(List<String> args) async {
15 final extraInfo = args.fold(<String, dynamic>{}, (Map<String, dynamic> acc, String arg) {
16 final parts = arg.split('=');
17 final key = normalizeKeyName(parts[0]);
18 acc[key] = parts.length > 1 ? parts[1] : 1;
19 return acc;
20 });
21
22 final configFile = File(configPath);
23 final secrets = <String, dynamic>{};
24
25 secrets.addAll(extraInfo);
26 secrets.removeWhere((key, dynamic value) {
27 if (key.contains('--')) {
28 return true;
29 }
30
31 return false;
32 });
33
34 final fileConfig = json.decode(configFile.readAsStringSync()) as Map<String, dynamic>;
35 fileConfig.forEach((key, dynamic value) {
36 if (secrets[key] == null) {
37 secrets[key] = value;
38 }
39 });
40
41 final secretsJson = JsonEncoder.withIndent(' ').convert(secrets);
42 await configFile.writeAsString(secretsJson);
43 await generateSecrets(args);
44 }