77import shutil
88from typing import Dict , List , Mapping , Sequence
99from util import (
10+ Package ,
1011 Variant ,
12+ enum_encoder ,
1113 get_variants ,
1214 isDarwin ,
1315 isLinux ,
@@ -471,6 +473,7 @@ def linux_tauri_config(
471473 themes_path : pathlib .Path ,
472474 legacy_extension_dir_path : pathlib .Path ,
473475 modern_extension_dir_path : pathlib .Path ,
476+ bundle_metadata_path : pathlib .Path ,
474477 target : str ,
475478) -> str :
476479 config = {
@@ -490,6 +493,7 @@ def linux_tauri_config(
490493 themes_path .absolute ().as_posix (): "themes" ,
491494 legacy_extension_dir_path .absolute ().as_posix (): LINUX_LEGACY_GNOME_EXTENSION_UUID ,
492495 modern_extension_dir_path .absolute ().as_posix (): LINUX_MODERN_GNOME_EXTENSION_UUID ,
496+ bundle_metadata_path .absolute ().as_posix (): "bundle-metadata" ,
493497 },
494498 },
495499 }
@@ -509,6 +513,24 @@ def linux_desktop_entry() -> str:
509513 )
510514
511515
516+ @dataclass
517+ class BundleMetadata :
518+ packaged_as : Package
519+
520+
521+ def make_linux_bundle_metadata (packaged_as : Package ) -> pathlib .Path :
522+ """
523+ Creates the bundle metadata json file under a new directory, returning the path to the directory.
524+ """
525+ metadata_dir_path = BUILD_DIR / f"{ packaged_as .value } -metadata"
526+ shutil .rmtree (metadata_dir_path , ignore_errors = True )
527+ metadata_dir_path .mkdir (parents = True )
528+ (metadata_dir_path / "metadata.json" ).write_text (
529+ json .dumps (BundleMetadata (packaged_as = packaged_as ), default = enum_encoder )
530+ )
531+ return metadata_dir_path
532+
533+
512534@dataclass
513535class LinuxDebResources :
514536 cli_path : pathlib .Path
@@ -517,6 +539,7 @@ class LinuxDebResources:
517539 themes_path : pathlib .Path
518540 legacy_extension_dir_path : pathlib .Path
519541 modern_extension_dir_path : pathlib .Path
542+ bundle_metadata_path : pathlib .Path
520543 npm_packages : NpmBuildOutput
521544
522545
@@ -651,6 +674,7 @@ def copy_extension(extension_uuid, extension_dir_name):
651674 themes_path = themes_path ,
652675 legacy_extension_dir_path = legacy_extension_dir_path ,
653676 modern_extension_dir_path = modern_extension_dir_path ,
677+ bundle_metadata_path = make_linux_bundle_metadata (Package .APPIMAGE ),
654678 target = target ,
655679 )
656680 )
@@ -683,6 +707,7 @@ def copy_extension(extension_uuid, extension_dir_name):
683707 themes_path = themes_path ,
684708 legacy_extension_dir_path = legacy_extension_dir_path ,
685709 modern_extension_dir_path = modern_extension_dir_path ,
710+ bundle_metadata_path = make_linux_bundle_metadata (Package .DEB ),
686711 npm_packages = npm_packages ,
687712 )
688713 deb_output = build_linux_deb (
0 commit comments