diff --git a/flatpak/scripts/README.md b/flatpak/scripts/README.md deleted file mode 100644 index 8d387451..00000000 --- a/flatpak/scripts/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Prerequisites -## Setting up the flathub_meta.json file -The dart scripts here require a metadata file as input. This file is already prepared for this repository — see ../flatpak_meta.json. - -## Publishing on Flathub -If uploading to Flathub for the first time, follow the official contributing guidelines: https://github.com/flathub/flathub/blob/master/CONTRIBUTING.md . - -# Local builds - -To run a local build: - -1. Build the Linux release using Flutter. -2. Add the new release version and date to the start of the "releases" list in the "spec.json" file (and adjust other parameters in the file if needed). -3. Run "dart flatpak_packager.dart --meta ../flatpak_meta.json -n pubspec.yaml" in this folder. -4. Run "dart manifest_generator.dart --meta ../flatpak_meta.json -n pubspec.yaml" in this folder. -5. Test the Flatpak using the guide at https://docs.flatpak.org/en/latest/first-build.html, using the generated json manifest as your Flatpak manifest. - -# Builds based on data fetched from Github - -To generate and publish a release on Github: - -1. Create a new release on Github using the app's version name for the tag (e.g. "1.0.0"), without any assets for now. -2. Build the Linux release using Flutter. -3. Run "dart flatpak_packager.dart --meta ../flatpak_meta.json --github -n pubspec.yaml" in this folder. -4. Upload the generated tar.gz file as a Github release. -5. Run "dart manifest_generator.dart --meta ../flatpak_meta.json --github -n pubspec.yaml" in this folder. -6. Upload your Flathub manifest file to your Flathub Github repo, overwriting any old manifest file you may have there. If you're building for only certain architectures and the "flathub.json" file is not in your Flathub Github repo yet, upload that too. - -All of this can be automated via Github Actions. \ No newline at end of file diff --git a/flatpak/scripts/flatpak_packager.dart b/flatpak/scripts/flatpak_packager.dart deleted file mode 100644 index 2caaf525..00000000 --- a/flatpak/scripts/flatpak_packager.dart +++ /dev/null @@ -1,185 +0,0 @@ -// ignore_for_file: avoid_print - -import 'dart:io'; - -import 'flatpak_shared.dart'; - -/// Creates an archive containing all the sources for the Flatpak package for a -/// specific architecture. -/// -/// arguments: -/// --meta [file] -/// Required argument for providing the metadata file for this script. - -/// --github -/// Use this option to pull release info from Github rather than the metadata file. - -/// --addTodaysVersion [version] -/// If pulling data from Github, this provides a way to specify the release to be released today. - -void main(List arguments) async { - if (!Platform.isLinux) { - throw Exception('Must be run under Linux'); - } - - // PARSE ARGUMENTS - final metaIndex = arguments.indexOf('--meta'); - if (metaIndex == -1) { - throw Exception( - 'You must run this script with a metadata file argument, using the --meta flag.', - ); - } - if (arguments.length == metaIndex + 1) { - throw Exception('The --meta flag must be followed by the path to the metadata file.'); - } - - final metaFile = File(arguments[metaIndex + 1]); - if (!(await metaFile.exists())) { - throw Exception('The provided metadata file does not exist.'); - } - - final fetchFromGithub = arguments.contains('--github'); - - final addTodaysVersionIndex = arguments.indexOf('--addTodaysVersion'); - if (addTodaysVersionIndex != -1 && arguments.length == addTodaysVersionIndex + 1) { - throw Exception('The --addTodaysVersion flag must be followed by the version name.'); - } - - final addedTodaysVersion = - addTodaysVersionIndex != -1 ? arguments[addTodaysVersionIndex + 1] : null; - - // GENERATE PACKAGE - - final meta = FlatpakMeta.fromJson(metaFile, skipLocalReleases: fetchFromGithub); - - final outputDir = Directory('${Directory.current.path}/flatpak_generator_exports'); - await outputDir.create(); - - final packageGenerator = PackageGenerator( - inputDir: metaFile.parent, - meta: meta, - addedTodaysVersion: addedTodaysVersion, - ); - - await packageGenerator.generatePackage( - outputDir, - await PackageGenerator.runningOnARM() ? CPUArchitecture.aarch64 : CPUArchitecture.x86_64, - fetchFromGithub, - ); -} - -class PackageGenerator { - final Directory inputDir; - final FlatpakMeta meta; - final String? addedTodaysVersion; - - const PackageGenerator({ - required this.inputDir, - required this.meta, - required this.addedTodaysVersion, - }); - - Future generatePackage( - Directory outputDir, - CPUArchitecture arch, - bool fetchReleasesFromGithub, - ) async { - final tempDir = await outputDir.createTemp('flutter_generator_temp'); - final appId = meta.appId; - - // desktop file - final desktopFile = File('${inputDir.path}/${meta.desktopPath}'); - - if (!(await desktopFile.exists())) { - throw Exception( - 'The desktop file does not exist under the specified path: ${desktopFile.path}', - ); - } - - await desktopFile.copy('${tempDir.path}/$appId.desktop'); - - // icons - final iconTempDir = Directory('${tempDir.path}/icons'); - - for (final icon in meta.icons) { - final iconFile = File('${inputDir.path}/${icon.path}'); - if (!(await iconFile.exists())) { - throw Exception('The icon file ${iconFile.path} does not exist.'); - } - final iconSubdir = Directory('${iconTempDir.path}/${icon.type}'); - await iconSubdir.create(recursive: true); - await iconFile.copy('${iconSubdir.path}/${icon.getFilename(appId)}'); - } - - // AppStream metainfo file - final origAppStreamFile = File('${inputDir.path}/${meta.appStreamPath}'); - if (!(await origAppStreamFile.exists())) { - throw Exception( - 'The app data file does not exist under the specified path: ${origAppStreamFile.path}', - ); - } - - final editedAppStreamContent = AppStreamModifier.replaceVersions( - await origAppStreamFile.readAsString(), - await meta.getReleases(fetchReleasesFromGithub, addedTodaysVersion), - ); - - final editedAppStreamFile = File('${tempDir.path}/$appId.metainfo.xml'); - await editedAppStreamFile.writeAsString(editedAppStreamContent); - - // build files - final bundlePath = - '${inputDir.path}/${meta.localLinuxBuildDir}/${arch.flutterDirName}/release/bundle'; - final buildDir = Directory(bundlePath); - if (!(await buildDir.exists())) { - throw Exception( - 'The linux build directory does not exist under the specified path: ${buildDir.path}', - ); - } - final destDir = Directory('${tempDir.path}/bin'); - await destDir.create(); - - final baseFilename = '${meta.lowercaseAppName}-linux-${arch.flatpakArchCode}'; - final packagePath = '${outputDir.absolute.path}/$baseFilename.tar.gz'; - final shaPath = '${outputDir.absolute.path}/$baseFilename.sha256'; - - await Process.run('cp', ['-r', '${buildDir.absolute.path}/.', destDir.absolute.path]); - await Process.run('tar', ['-czvf', packagePath, '.'], workingDirectory: tempDir.absolute.path); - - print('Generated $packagePath'); - - final preShasum = await Process.run('shasum', ['-a', '256', packagePath]); - final shasum = preShasum.stdout.toString().split(' ').first; - - await File(shaPath).writeAsString(shasum); - - print('Generated $shaPath'); - - await tempDir.delete(recursive: true); - } - - static Future runningOnARM() async { - final unameRes = await Process.run('uname', ['-m']); - final unameString = unameRes.stdout.toString().trimLeft(); - return unameString.startsWith('arm') || unameString.startsWith('aarch'); - } -} - -// updates releases in ${appName}.metainfo.xml -class AppStreamModifier { - static String replaceVersions(String origAppStreamContent, List versions) { - final joinedReleases = - versions.map((v) => '\t\t').join('\n'); - final releasesSection = '\n$joinedReleases\n\t'; //TODO check this - if (origAppStreamContent.contains('') - .replaceFirst(RegExp(''), releasesSection) - .replaceAll('<~>', '\n'); - } - return origAppStreamContent.replaceFirst( - '', - '\n\t$releasesSection\n', - ); - } -} diff --git a/flatpak/scripts/flatpak_shared.dart b/flatpak/scripts/flatpak_shared.dart deleted file mode 100644 index eaf445a0..00000000 --- a/flatpak/scripts/flatpak_shared.dart +++ /dev/null @@ -1,330 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:http/http.dart' as http; - -/// Shared files for the two Flatpak-related scripts. - -class Release { - final String version; - final String date; //TODO add resources - - const Release({required this.version, required this.date}); -} - -enum CPUArchitecture { - x86_64('x86_64', 'x64'), - aarch64('aarch64', 'arm64'); - - final String flatpakArchCode; - final String flutterDirName; - - const CPUArchitecture(this.flatpakArchCode, this.flutterDirName); -} - -class ReleaseAsset { - final CPUArchitecture arch; - final String tarballUrlOrPath; - final bool isRelativeLocalPath; - final String tarballSha256; - - const ReleaseAsset({ - required this.arch, - required this.tarballUrlOrPath, - required this.isRelativeLocalPath, - required this.tarballSha256, - }); -} - -class Icon { - static const _symbolicType = 'symbolic'; - final String type; - final String path; - late final String _fileExtension; - - Icon({required this.type, required this.path}) { - _fileExtension = path.split('.').last; - } - - String getFilename(String appId) => - (type == _symbolicType) ? '$appId-symbolic.$_fileExtension' : '$appId.$_fileExtension'; -} - -class GithubReleases { - final String githubReleaseOrganization; - final String githubReleaseProject; - List? _releases; - List? _latestReleaseAssets; - - GithubReleases(this.githubReleaseOrganization, this.githubReleaseProject); - - Future> getReleases(bool canBeEmpty) async { - if (_releases == null) { - await _fetchReleasesAndAssets(canBeEmpty); - } - return _releases!; - } - - Future?> getLatestReleaseAssets() async { - if (_releases == null) { - await _fetchReleasesAndAssets(false); - } - return _latestReleaseAssets; - } - - Future _fetchReleasesAndAssets(bool canBeEmpty) async { - final releaseJsonContent = (await http.get(Uri( - scheme: 'https', - host: 'api.github.com', - path: '/repos/$githubReleaseOrganization/$githubReleaseProject/releases', - ))) - .body; - final decodedJson = jsonDecode(releaseJsonContent) as List; - - DateTime? latestReleaseAssetDate; - - final releases = List.empty(growable: true); - - await Future.forEach(decodedJson, (dynamic releaseDynamic) async { - final releaseMap = releaseDynamic as Map; - - final releaseDateAndTime = DateTime.parse(releaseMap['published_at'] as String); - final releaseDateString = releaseDateAndTime.toIso8601String().split('T').first; - - if (latestReleaseAssetDate == null || - (latestReleaseAssetDate?.compareTo(releaseDateAndTime) == -1)) { - final assets = await _parseGithubReleaseAssets(releaseMap['assets'] as List); - if (assets != null) { - _latestReleaseAssets = assets; - latestReleaseAssetDate = releaseDateAndTime; - } - } - - releases.add(Release(version: releaseMap['name'] as String, date: releaseDateString)); - }); - - if (releases.isNotEmpty || canBeEmpty) { - _releases = releases; - } else { - throw Exception('Github must contain at least 1 release.'); - } - } - - Future?> _parseGithubReleaseAssets(List assetMaps) async { - String? x64TarballUrl; - String? x64Sha; - String? aarch64TarballUrl; - String? aarch64Sha; - for (final am in assetMaps) { - final amMap = am as Map; - - final downloadUrl = amMap['browser_download_url'] as String; - final filename = amMap['name'] as String; - final fileExtension = filename.substring(filename.indexOf('.') + 1); - final filenameWithoutExtension = filename.substring(0, filename.indexOf('.')); - - final arch = filenameWithoutExtension.endsWith('aarch64') - ? CPUArchitecture.aarch64 - : CPUArchitecture.x86_64; - - switch (fileExtension) { - case 'sha256': - if (arch == CPUArchitecture.aarch64) { - aarch64Sha = await _readSha(downloadUrl); - } else { - x64Sha = await _readSha(downloadUrl); - } - break; - case 'tar': - case 'tar.gz': - case 'tgz': - case 'tar.xz': - case 'txz': - case 'tar.bz2': - case 'tbz2': - case 'zip': - case '7z': - if (arch == CPUArchitecture.aarch64) { - aarch64TarballUrl = downloadUrl; - } else { - x64TarballUrl = downloadUrl; - } - break; - default: - break; - } - } - final res = List.empty(growable: true); - if (x64TarballUrl != null && x64Sha != null) { - res.add(ReleaseAsset( - arch: CPUArchitecture.x86_64, - tarballUrlOrPath: x64TarballUrl, - isRelativeLocalPath: false, - tarballSha256: x64Sha, - )); - } - if (aarch64TarballUrl != null && aarch64Sha != null) { - res.add(ReleaseAsset( - arch: CPUArchitecture.aarch64, - tarballUrlOrPath: aarch64TarballUrl, - isRelativeLocalPath: false, - tarballSha256: aarch64Sha, - )); - } - return res.isEmpty ? null : res; - } - - Future _readSha(String shaUrl) async => - (await http.get(Uri.parse(shaUrl))).body.split(' ').first; -} - -class FlatpakMeta { - final String appId; - final String lowercaseAppName; - final String appStreamPath; - final String desktopPath; - final List icons; - - // Flatpak manifest releated properties - final String freedesktopRuntime; - final List? buildCommandsAfterUnpack; - final List? extraModules; - final List finishArgs; - - // Properties relevant only for local releases - final List? _localReleases; - final List? _localReleaseAssets; - final String localLinuxBuildDir; - - // Properties relevant only for releases fetched from Github - final String? githubReleaseOrganization; - final String? githubReleaseProject; - late final GithubReleases? _githubReleases; - - FlatpakMeta({ - required this.appId, - required this.lowercaseAppName, - required this.githubReleaseOrganization, - required this.githubReleaseProject, - required List? localReleases, - required List? localReleaseAssets, - required this.localLinuxBuildDir, - required this.appStreamPath, - required this.desktopPath, - required this.icons, - required this.freedesktopRuntime, - required this.buildCommandsAfterUnpack, - required this.extraModules, - required this.finishArgs, - }) : _localReleases = localReleases, - _localReleaseAssets = localReleaseAssets { - if (githubReleaseOrganization != null && githubReleaseProject != null) { - _githubReleases = GithubReleases(githubReleaseOrganization!, githubReleaseProject!); - } - } - - Future> getReleases( - bool fetchReleasesFromGithub, - String? addedTodaysVersion, - ) async { - final releases = List.empty(growable: true); - if (addedTodaysVersion != null) { - releases.add(Release( - version: addedTodaysVersion, - date: DateTime.now().toIso8601String().split('T').first, - )); - } - if (fetchReleasesFromGithub) { - if (_githubReleases == null) { - throw Exception( - 'Metadata must include Github repository info if fetching releases from Github.', - ); - } - releases.addAll(await _githubReleases!.getReleases(addedTodaysVersion != null)); - } else { - if (_localReleases == null && addedTodaysVersion == null) { - throw Exception('Metadata must include releases if not fetching releases from Github.'); - } - if (_localReleases?.isNotEmpty ?? false) { - releases.addAll(_localReleases!); - } - } - return releases; - } - - Future?> getLatestReleaseAssets(bool fetchReleasesFromGithub) async { - if (fetchReleasesFromGithub) { - if (_githubReleases == null) { - throw Exception( - 'Metadata must include Github repository info if fetching releases from Github.', - ); - } - return _githubReleases!.getLatestReleaseAssets(); - } - if (_localReleases == null) { - throw Exception('Metadata must include releases if not fetching releases from Github.'); - } - return _localReleaseAssets; - } - - static FlatpakMeta fromJson(File jsonFile, {bool skipLocalReleases = false}) { - try { - final dynamic json = jsonDecode(jsonFile.readAsStringSync()); - return FlatpakMeta( - appId: json['appId'] as String, - lowercaseAppName: json['lowercaseAppName'] as String, - githubReleaseOrganization: json['githubReleaseOrganization'] as String?, - githubReleaseProject: json['githubReleaseProject'] as String?, - localReleases: skipLocalReleases - ? null - : (json['localReleases'] as List?)?.map((dynamic r) { - final rMap = r as Map; - return Release(version: rMap['version'] as String, date: rMap['date'] as String); - }).toList(), - localReleaseAssets: skipLocalReleases - ? null - : (json['localReleaseAssets'] as List?)?.map((dynamic ra) { - final raMap = ra as Map; - final archString = raMap['arch'] as String; - final arch = (archString == CPUArchitecture.x86_64.flatpakArchCode) - ? CPUArchitecture.x86_64 - : (archString == CPUArchitecture.aarch64.flatpakArchCode) - ? CPUArchitecture.aarch64 - : null; - if (arch == null) { - throw Exception( - 'Architecture must be either "${CPUArchitecture.x86_64.flatpakArchCode}" or "${CPUArchitecture.aarch64.flatpakArchCode}"', - ); - } - final tarballFile = - File('${jsonFile.parent.path}/${raMap['tarballPath'] as String}'); - final tarballPath = tarballFile.absolute.path; - final preShasum = Process.runSync('shasum', ['-a', '256', tarballPath]); - final shasum = preShasum.stdout.toString().split(' ').first; - if (preShasum.exitCode != 0) { - throw Exception(preShasum.stderr); - } - return ReleaseAsset( - arch: arch, - tarballUrlOrPath: tarballPath, - isRelativeLocalPath: true, - tarballSha256: shasum, - ); - }).toList(), - localLinuxBuildDir: json['localLinuxBuildDir'] as String, - appStreamPath: json['appStreamPath'] as String, - desktopPath: json['desktopPath'] as String, - icons: (json['icons'] as Map).entries.map((mapEntry) { - return Icon(type: mapEntry.key as String, path: mapEntry.value as String); - }).toList(), - freedesktopRuntime: json['freedesktopRuntime'] as String, - buildCommandsAfterUnpack: - (json['buildCommandsAfterUnpack'] as List?)?.map((dynamic bc) => bc as String).toList(), - extraModules: json['extraModules'] as List?, - finishArgs: (json['finishArgs'] as List).map((dynamic fa) => fa as String).toList(), - ); - } catch (e) { - throw Exception('Could not parse JSON file, due to this error:\n$e'); - } - } -} diff --git a/flatpak/scripts/manifest_generator.dart b/flatpak/scripts/manifest_generator.dart deleted file mode 100644 index 254bb1ae..00000000 --- a/flatpak/scripts/manifest_generator.dart +++ /dev/null @@ -1,167 +0,0 @@ -// ignore_for_file: avoid_print - -import 'dart:convert'; -import 'dart:io'; -import 'flatpak_shared.dart'; - -/// Generates the Flatpak manifest. -/// (Separate from the package generation, as those are generated per each -/// architecture.) -/// -/// arguments: -/// --meta [file] -/// Required argument for providing the metadata file for this script. - -/// --github -/// Use this option to pull release info from Github rather than the metadata file. - -void main(List arguments) async { - if (Platform.isWindows) { - throw Exception('Must be run under a UNIX-like operating system.'); - } - - final metaIndex = arguments.indexOf('--meta'); - if (metaIndex == -1) { - throw Exception( - 'You must run this script with a metadata file argument, using the --meta flag.'); - } - if (arguments.length == metaIndex + 1) { - throw Exception('The --meta flag must be followed by the path to the metadata file.'); - } - - final metaFile = File(arguments[metaIndex + 1]); - if (!metaFile.existsSync()) { - throw Exception('The provided metadata file does not exist.'); - } - - final fetchFromGithub = arguments.contains('--github'); - - final meta = FlatpakMeta.fromJson(metaFile, skipLocalReleases: fetchFromGithub); - - final outputDir = Directory('${Directory.current.path}/flatpak_generator_exports'); - outputDir.createSync(); - - final manifestGenerator = FlatpakManifestGenerator(meta); - final manifestContent = await manifestGenerator.generateFlatpakManifest(fetchFromGithub); - final manifestPath = '${outputDir.path}/${meta.appId}.json'; - final manifestFile = File(manifestPath); - manifestFile.writeAsStringSync(manifestContent); - print('Generated $manifestPath'); - - final flathubJsonContent = await manifestGenerator.generateFlathubJson(fetchFromGithub); - if (flathubJsonContent != null) { - final flathubJsonPath = '${outputDir.path}/flathub.json'; - final flathubJsonFile = File(flathubJsonPath); - flathubJsonFile.writeAsStringSync(flathubJsonContent); - print('Generated $flathubJsonPath'); - } -} - -// ${appId}.json -class FlatpakManifestGenerator { - final FlatpakMeta meta; - Map? _githubArchSupport; - Map? _localArchSupport; - - FlatpakManifestGenerator(this.meta); - - Future generateFlatpakManifest(bool fetchFromGithub) async { - final appName = meta.lowercaseAppName; - final appId = meta.appId; - final assets = await meta.getLatestReleaseAssets(fetchFromGithub); - - if (assets == null) { - throw Exception('There are no associated assets.'); - } - - _lazyGenerateArchSupportMap(fetchFromGithub, assets); - - const encoder = JsonEncoder.withIndent(' '); - return encoder.convert({ - 'app-id': appId, - 'runtime': 'org.freedesktop.Platform', - 'runtime-version': meta.freedesktopRuntime, - 'sdk': 'org.freedesktop.Sdk', - 'command': appName, - 'separate-locales': false, - 'finish-args': meta.finishArgs, - 'modules': [ - ...meta.extraModules ?? [], - { - 'name': appName, - 'buildsystem': 'simple', - 'build-commands': [ - 'cp -R $appName/bin/ /app/$appName', - 'chmod +x /app/$appName/$appName', - 'mkdir -p /app/bin/', - 'mkdir -p /app/lib/', - 'ln -s /app/$appName/$appName /app/bin/$appName', - ...meta.buildCommandsAfterUnpack ?? [], - ...meta.icons.map((icon) => - 'install -Dm644 $appName/icons/${icon.type}/${icon.getFilename(appId)} /app/share/icons/hicolor/${icon.type}/apps/${icon.getFilename(appId)}'), - 'install -Dm644 $appName/$appId.desktop /app/share/applications/$appId.desktop', - 'install -Dm644 $appName/$appId.metainfo.xml /app/share/metainfo/$appId.metainfo.xml' - ], - 'sources': assets - .map((a) => { - 'type': 'archive', - 'only-arches': [a.arch.flatpakArchCode], - (fetchFromGithub ? 'url' : 'path'): a.tarballUrlOrPath, - 'sha256': a.tarballSha256, - 'dest': meta.lowercaseAppName - }) - .toList() - } - ] - }); - } - - Future generateFlathubJson(bool fetchFromGithub) async { - final assets = await meta.getLatestReleaseAssets(fetchFromGithub); - - if (assets == null) { - throw Exception('There are no associated assets.'); - } - - _lazyGenerateArchSupportMap(fetchFromGithub, assets); - - const encoder = JsonEncoder.withIndent(' '); - - final onlyArchListInput = fetchFromGithub ? _githubArchSupport! : _localArchSupport!; - - final onlyArchList = List.empty(growable: true); - for (final e in onlyArchListInput.entries) { - if (e.value == true) { - onlyArchList.add(e.key.flatpakArchCode); - } - } - - if (onlyArchList.length == CPUArchitecture.values.length) { - return null; - } else { - return encoder.convert({'only-arches': onlyArchList}); - } - } - - void _lazyGenerateArchSupportMap(bool fetchFromGithub, List assets) { - if (fetchFromGithub) { - if (_githubArchSupport == null) { - _githubArchSupport = { - for (final arch in CPUArchitecture.values) arch: false - }; - for (final a in assets) { - _githubArchSupport![a.arch] = true; - } - } - } else { - if (_localArchSupport == null) { - _localArchSupport = { - for (final arch in CPUArchitecture.values) arch: false - }; - for (final a in assets) { - _localArchSupport![a.arch] = true; - } - } - } - } -} diff --git a/flatpak/scripts/pubspec.lock b/flatpak/scripts/pubspec.lock deleted file mode 100644 index 68090fc3..00000000 --- a/flatpak/scripts/pubspec.lock +++ /dev/null @@ -1,93 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: transitive - description: - name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - collection: - dependency: transitive - description: - name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf - url: "https://pub.dev" - source: hosted - version: "1.19.0" - http: - dependency: "direct main" - description: - name: http - sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" - url: "https://pub.dev" - source: hosted - version: "1.4.0" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" - url: "https://pub.dev" - source: hosted - version: "4.1.0" - meta: - dependency: transitive - description: - name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 - url: "https://pub.dev" - source: hosted - version: "1.15.0" - path: - dependency: transitive - description: - name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - source_span: - dependency: transitive - description: - name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" - url: "https://pub.dev" - source: hosted - version: "1.10.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" - source: hosted - version: "1.3.2" - web: - dependency: transitive - description: - name: web - sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.dev" - source: hosted - version: "1.1.1" -sdks: - dart: ">=3.4.0 <4.0.0" diff --git a/flatpak/scripts/pubspec.yaml b/flatpak/scripts/pubspec.yaml deleted file mode 100644 index 4e974d68..00000000 --- a/flatpak/scripts/pubspec.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: flatpak_generator -version: 1.0.0 - -environment: - sdk: '>=2.18.5' - -dependencies: - http: ^1.4.0 \ No newline at end of file