diff --git a/flatpak/flatpak_meta.json b/flatpak/flatpak_meta.json index 43736066..be92a836 100644 --- a/flatpak/flatpak_meta.json +++ b/flatpak/flatpak_meta.json @@ -4,16 +4,10 @@ "githubReleaseOrganization": "wger-project", "githubReleaseProject": "flutter", "localReleases": [ - { - "version": "1.5.3", - "date": "2023-03-16" - } + ], "localReleaseAssets": [ - { - "arch": "x86_64", - "tarballPath": "./scripts/flatpak_generator exports/wger-linux-x86_64.tar.gz" - } + ], "localLinuxBuildDir": "../build/linux", "appDataPath": "de.wger.flutter.appdata.xml", diff --git a/flatpak/scripts/flatpak_packager.dart b/flatpak/scripts/flatpak_packager.dart index 9cb60a8a..5346a605 100644 --- a/flatpak/scripts/flatpak_packager.dart +++ b/flatpak/scripts/flatpak_packager.dart @@ -30,16 +30,16 @@ void main(List arguments) async { final fetchFromGithub = arguments.contains('--github'); - final outputDir = Directory('${Directory.current.path}/flatpak_generator exports'); + final outputDir = Directory('${Directory.current.path}/flatpak_generator_exports'); outputDir.createSync(); final packageGenerator = PackageGenerator(inputDir: metaFile.parent, meta: meta); - if (PackageGenerator.runningOnARM()) { - await packageGenerator.generatePackage(outputDir, CPUArchitecture.aarch64, fetchFromGithub); - } else { - await packageGenerator.generatePackage(outputDir, CPUArchitecture.x86_64, fetchFromGithub); - } + packageGenerator.generatePackage( + outputDir, + PackageGenerator.runningOnARM() ? CPUArchitecture.aarch64 : CPUArchitecture.x86_64, + fetchFromGithub, + ); } class PackageGenerator { @@ -101,17 +101,20 @@ class PackageGenerator { final destDir = Directory('${tempDir.path}/bin'); destDir.createSync(); - final packagePath = - '${outputDir.absolute.path}/${meta.lowercaseAppName}-linux-${arch.flatpakArchCode}.tar.gz'; + final baseFileName = '${meta.lowercaseAppName}-linux-${arch.flatpakArchCode}'; + final packagePath = '${outputDir.absolute.path}/$baseFileName.tar.gz'; Process.runSync('cp', ['-r', '${buildDir.absolute.path}/.', destDir.absolute.path]); Process.runSync('tar', ['-czvf', packagePath, '.'], workingDirectory: tempDir.absolute.path); - print('Generated $packagePath'); final preShasum = Process.runSync('shasum', ['-a', '256', packagePath]); + final sha256 = preShasum.stdout.toString().split(' ').first; - shaByArch.putIfAbsent(arch, () => preShasum.stdout.toString().split(' ').first); + final shaFile = await File('${outputDir.path}/$baseFileName.sha256').writeAsString(sha256); + print('Generated ${shaFile.path}'); + + shaByArch.putIfAbsent(arch, () => sha256); tempDir.deleteSync(recursive: true); } diff --git a/flatpak/scripts/flatpak_shared.dart b/flatpak/scripts/flatpak_shared.dart index a83e2c6a..4e16b65f 100644 --- a/flatpak/scripts/flatpak_shared.dart +++ b/flatpak/scripts/flatpak_shared.dart @@ -53,7 +53,7 @@ class GithubReleases { List? _releases; List? _latestReleaseAssets; - GithubReleases(this.githubReleaseOrganization, this.githubReleaseProject) {} + GithubReleases(this.githubReleaseOrganization, this.githubReleaseProject); Future> getReleases() async { if (_releases == null) { @@ -84,7 +84,7 @@ class GithubReleases { await Future.forEach(decodedJson, (dynamic releaseDynamic) async { final releaseMap = releaseDynamic as Map; - final releaseDateAndTime = DateTime.parse((releaseMap['published_at'] as String)); + final releaseDateAndTime = DateTime.parse(releaseMap['published_at'] as String); final releaseDateString = releaseDateAndTime.toIso8601String().split('T').first; if (latestReleaseAssetDate == null || @@ -167,16 +167,7 @@ class GithubReleases { } Future _readSha(String shaUrl) async { - final urlSplitByScheme = shaUrl.split('://'); - final urlWithoutScheme = urlSplitByScheme.last; - final firstSlashIndex = urlWithoutScheme.indexOf('/'); - return (await http.get(Uri( - scheme: urlSplitByScheme.first, - host: urlWithoutScheme.substring(0, firstSlashIndex), - path: urlWithoutScheme.substring(firstSlashIndex)))) - .body - .split(' ') - .first; + return (await http.get(Uri.parse(shaUrl))).body.split(' ').first; } } @@ -246,7 +237,7 @@ class FlatpakMeta { throw Exception( 'Metadata must include Github repository info if fetching releases from Github.'); } - return await _githubReleases!.getLatestReleaseAssets(); + return _githubReleases!.getLatestReleaseAssets(); } else { if (_localReleases == null) { throw Exception('Metadata must include releases if not fetching releases from Github.'); diff --git a/flatpak/scripts/manifest_generator.dart b/flatpak/scripts/manifest_generator.dart index 48c04961..da27f860 100644 --- a/flatpak/scripts/manifest_generator.dart +++ b/flatpak/scripts/manifest_generator.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'dart:io'; + import 'flatpak_shared.dart'; void main(List arguments) async { @@ -25,7 +26,7 @@ void main(List arguments) async { final fetchFromGithub = arguments.contains('--github'); - final outputDir = Directory('${Directory.current.path}/flatpak_generator exports'); + final outputDir = Directory('${Directory.current.path}/flatpak_generator_exports'); outputDir.createSync(); final manifestGenerator = FlatpakManifestGenerator(meta); @@ -37,7 +38,7 @@ void main(List arguments) async { final flathubJsonContent = await manifestGenerator.generateFlathubJson(fetchFromGithub); if (flathubJsonContent != null) { - final flathubJsonPath = '${outputDir.path}/flathub.json}'; + final flathubJsonPath = '${outputDir.path}/flathub.json'; final flathubJsonFile = File(flathubJsonPath); flathubJsonFile.writeAsStringSync(flathubJsonContent); print('Generated $flathubJsonPath');