add a script to download prebuilds of monero_c (#1554)
cyan committed
Jul 25, 2024 at 02:59 UTC
d5fca1969e096ac7083bb4cbb780d0df81603ead
2 files changed
+51
pubspec_base.yaml
+1
@@ -124,6 +124,7 @@ dev_dependencies:
124
git:
125
url: https://github.com/cake-tech/google-translator.git
126
version: 1.0.0
127
+ archive: ^3.6.1
128
129
dependency_overrides:
130
bech32:
tool/download_moneroc_prebuilds.dart
new
+50
@@ -0,0 +1,50 @@
1
+import 'package:dio/dio.dart';
2
+import 'package:archive/archive_io.dart';
3
+
4
+final _dio = Dio();
5
+
6
+final List<String> triplets = [
7
+ "x86_64-linux-gnu", // linux desktop - majority of users onlinux
8
+ // "i686-linux-gnu", // not supported by cake
9
+ // "i686-meego-linux-gnu", // sailfishos (emulator)- not supported by cake
10
+ // "aarch64-linux-gnu", // not (yet) supported by cake - (mostly) mobile linux
11
+ // "aarch64-meego-linux-gnu", // sailfishos - not supported by cake
12
+ "x86_64-linux-android",
13
+ // "i686-linux-android", // not supported by monero_c - mostly old android emulators
14
+ "aarch64-linux-android",
15
+ "armv7a-linux-androideabi",
16
+ // "i686-w64-mingw32", // 32bit windows - not supported by monero_c
17
+ "x86_64-w64-mingw32",
18
+ // "x86_64-apple-darwin11", // Intel macbooks (contrib) - not used by cake
19
+ // "aarch64-apple-darwin11", // apple silicon macbooks (contrib) - not used by cake
20
+ // "host-apple-darwin", // not available on CI (yet)
21
+ // "x86_64-host-apple-darwin", // not available on CI (yet)
22
+ "aarch64-host-apple-darwin", // apple silicon macbooks (local builds)
23
+ "host-apple-ios",
24
+];
25
+
26
+Future<void> main() async {
27
+ final resp = await _dio.get("https://api.github.com/repos/mrcyjanek/monero_c/releases");
28
+ final data = resp.data[0];
29
+ final tagName = data['tag_name'];
30
+ print("Downloading artifacts for: ${tagName}");
31
+ final assets = data['assets'] as List<dynamic>;
32
+ for (var i = 0; i < assets.length; i++) {
33
+ for (var triplet in triplets) {
34
+ final asset = assets[i];
35
+ final filename = asset["name"] as String;
36
+ if (!filename.contains(triplet)) continue;
37
+ final coin = filename.split("_")[0];
38
+ String localFilename = filename.replaceAll("${coin}_${triplet}_", "");
39
+ localFilename = "scripts/monero_c/release/${coin}/${triplet}_${localFilename}";
40
+ final url = asset["browser_download_url"] as String;
41
+ print("- downloading $localFilename");
42
+ await _dio.download(url, localFilename);
43
+ print(" extracting $localFilename");
44
+ final inputStream = InputFileStream(localFilename);
45
+ final archive = XZDecoder().decodeBuffer(inputStream);
46
+ final outputStream = OutputFileStream(localFilename.replaceAll(".xz", ""));
47
+ outputStream.writeBytes(archive);
48
+ }
49
+ }
50
+}
\ No newline at end of file