dev
dart 72 lines 2.29 KB
Raw
1 import 'dart:convert';
2 import 'dart:io';
3 import 'utils/secret_key.dart';
4 import 'utils/utils.dart';
5
6 const baseConfigPath = 'tool/.secrets-config.json';
7 const evmChainsConfigPath = 'tool/.evm-secrets-config.json';
8 const solanaConfigPath = 'tool/.solana-secrets-config.json';
9 const nanoConfigPath = 'tool/.nano-secrets-config.json';
10 const tronConfigPath = 'tool/.tron-secrets-config.json';
11 const bitcoinConfigPath = 'tool/.bitcoin-secrets-config.json';
12
13 Future<void> main(List<String> args) async => generateSecretsConfig(args);
14
15 Future<void> writeConfig(
16 File configFile,
17 List<SecretKey> newSecrets, {
18 Map<String, dynamic>? existingSecrets,
19 }) async {
20 final secrets = existingSecrets ?? <String, dynamic>{};
21 newSecrets.forEach((sec) {
22 if (secrets[sec.name] != null) {
23 return;
24 }
25 secrets[sec.name] = sec.generate();
26 });
27 String secretsJson = JsonEncoder.withIndent(' ').convert(secrets);
28 await configFile.writeAsString(secretsJson);
29 secrets.clear();
30 }
31
32 Future<void> generateSecretsConfig(List<String> args) async {
33 final extraInfo = args.fold(<String, dynamic>{}, (Map<String, dynamic> acc, String arg) {
34 final parts = arg.split('=');
35 final key = normalizeKeyName(parts[0]);
36 acc[key] = acc[key] = parts.length > 1 ? parts[1] : 1;
37 return acc;
38 });
39
40 final baseConfigFile = File(baseConfigPath);
41 final evmChainsConfigFile = File(evmChainsConfigPath);
42 final solanaConfigFile = File(solanaConfigPath);
43 final nanoConfigFile = File(nanoConfigPath);
44 final tronConfigFile = File(tronConfigPath);
45 final bitcoinConfigFile = File(bitcoinConfigPath);
46
47 final secrets = <String, dynamic>{};
48
49 secrets.addAll(extraInfo);
50 secrets.removeWhere((key, dynamic value) {
51 if (key.contains('--')) {
52 return true;
53 }
54 return false;
55 });
56
57 if (baseConfigFile.existsSync()) {
58 if (extraInfo['--force'] == 1) {
59 await baseConfigFile.delete();
60 } else {
61 return;
62 }
63 }
64
65 await writeConfig(baseConfigFile, SecretKey.base, existingSecrets: secrets);
66
67 await writeConfig(evmChainsConfigFile, SecretKey.evmChainsSecrets);
68 await writeConfig(solanaConfigFile, SecretKey.solanaSecrets);
69 await writeConfig(nanoConfigFile, SecretKey.nanoSecrets);
70 await writeConfig(tronConfigFile, SecretKey.tronSecrets);
71 await writeConfig(bitcoinConfigFile, SecretKey.bitcoinSecrets);
72 }