mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-06-28 04:19:50 +00:00
* implement v3 backup system - Add new BackupServiceV3 with chunked backup support and checksums - Implement json-based metadata in backup system - Instead of binary file export a .zip file that user can open and see that it is a cake backup (should also prevent 3rd party software from corrupting binary data inside of the file, in case it doesn't checksum will fail, and user will know for sure that backup got corrupted) - Update flutter to 3.27.4 to use archive ^4.x.x (it offers in memory archive operations) * fix wallets not getting restored properly * prevent out of memory errors on files that are way too big during restore * Update lib/view_model/backup_view_model.dart [skip ci] * Update lib/core/backup_service.dart [skip ci] * Update lib/core/backup_service.dart --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
64 lines
No EOL
2.6 KiB
Dart
64 lines
No EOL
2.6 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:cw_core/utils/print_verbose.dart';
|
|
import 'package:dio/dio.dart';
|
|
import 'package:archive/archive_io.dart';
|
|
|
|
final _dio = Dio();
|
|
|
|
final List<String> triplets = [
|
|
"x86_64-linux-gnu", // linux desktop - majority of users onlinux
|
|
// "i686-linux-gnu", // not supported by cake
|
|
// "i686-meego-linux-gnu", // sailfishos (emulator)- not supported by cake
|
|
// "aarch64-linux-gnu", // not (yet) supported by cake - (mostly) mobile linux
|
|
// "aarch64-meego-linux-gnu", // sailfishos - not supported by cake
|
|
"x86_64-linux-android",
|
|
// "i686-linux-android", // not supported by monero_c - mostly old android emulators
|
|
"aarch64-linux-android",
|
|
"armv7a-linux-androideabi",
|
|
// "i686-w64-mingw32", // 32bit windows - not supported by monero_c
|
|
"x86_64-w64-mingw32",
|
|
// "x86_64-apple-darwin11", // Intel macbooks (contrib) - not used by cake
|
|
// "aarch64-apple-darwin11", // apple silicon macbooks (contrib) - not used by cake
|
|
// "host-apple-darwin", // not available on CI (yet)
|
|
// "x86_64-host-apple-darwin", // not available on CI (yet)
|
|
"aarch64-host-apple-darwin", // apple silicon macbooks (local builds)
|
|
"aarch64-apple-ios",
|
|
"aarch64-apple-iossimulator",
|
|
];
|
|
|
|
Future<void> main() async {
|
|
final resp = await _dio.get("https://api.github.com/repos/mrcyjanek/monero_c/releases");
|
|
final data = resp.data[0];
|
|
final tagName = data['tag_name'];
|
|
printV("Downloading artifacts for: ${tagName}");
|
|
final assets = data['assets'] as List<dynamic>;
|
|
for (var i = 0; i < assets.length; i++) {
|
|
for (var triplet in triplets) {
|
|
final asset = assets[i];
|
|
final filename = asset["name"] as String;
|
|
if (!filename.contains(triplet)) continue;
|
|
final coin = filename.split("_")[0];
|
|
String localFilename = filename.replaceAll("${coin}_${triplet}_", "");
|
|
localFilename = "scripts/monero_c/release/${coin}/${triplet}_${localFilename}";
|
|
final url = asset["browser_download_url"] as String;
|
|
printV("- downloading $localFilename");
|
|
await _dio.download(url, localFilename);
|
|
if (localFilename.endsWith(".xz")) {
|
|
printV(" extracting $localFilename");
|
|
final inputStream = InputFileStream(localFilename);
|
|
final archive = XZDecoder().decodeBytes(inputStream.toUint8List());
|
|
final outputStream = OutputFileStream(localFilename.replaceAll(".xz", ""));
|
|
outputStream.writeBytes(archive);
|
|
}
|
|
}
|
|
}
|
|
if (Platform.isMacOS) {
|
|
printV("Generating ios framework");
|
|
final result = Process.runSync("bash", [
|
|
"-c",
|
|
"cd scripts/ios && ./gen_framework.sh && cd ../.."
|
|
]);
|
|
printV((result.stdout+result.stderr).toString().trim());
|
|
}
|
|
} |