mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	Updated uniffi-bindgen-gecko-js to work with UniFFI 0.25.2: - Use `config.toml` to list UniFFI sources. This makes it easier to associate data with them, for example the `crate_name` field that's now required to generate the sources. - Enable the `extern-rustbuffer` feature on `uniffi_core` - Updated the external types fixture to work around https://github.com/mozilla/uniffi-rs/issues/1872 Ran mach vendor and mach cargo vet to update the Rust crates. Differential Revision: https://phabricator.services.mozilla.com/D195163
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
# License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | 
						|
 | 
						|
import os
 | 
						|
import subprocess
 | 
						|
 | 
						|
from mach.decorators import Command, SubCommand
 | 
						|
 | 
						|
CPP_PATH = "toolkit/components/uniffi-js/UniFFIGeneratedScaffolding.cpp"
 | 
						|
JS_DIR = "toolkit/components/uniffi-bindgen-gecko-js/components/generated"
 | 
						|
FIXTURE_CPP_PATH = "toolkit/components/uniffi-js/UniFFIFixtureScaffolding.cpp"
 | 
						|
FIXTURE_JS_DIR = "toolkit/components/uniffi-bindgen-gecko-js/fixtures/generated"
 | 
						|
 | 
						|
 | 
						|
def build_uniffi_bindgen_gecko_js(command_context):
 | 
						|
    uniffi_root = crate_root(command_context)
 | 
						|
    print("Building uniffi-bindgen-gecko-js")
 | 
						|
    cmdline = [
 | 
						|
        "cargo",
 | 
						|
        "build",
 | 
						|
        "--release",
 | 
						|
        "--manifest-path",
 | 
						|
        os.path.join(command_context.topsrcdir, "Cargo.toml"),
 | 
						|
        "--package",
 | 
						|
        "uniffi-bindgen-gecko-js",
 | 
						|
    ]
 | 
						|
    subprocess.check_call(cmdline, cwd=uniffi_root)
 | 
						|
    print()
 | 
						|
    return os.path.join(
 | 
						|
        command_context.topsrcdir, "target", "release", "uniffi-bindgen-gecko-js"
 | 
						|
    )
 | 
						|
 | 
						|
 | 
						|
@Command(
 | 
						|
    "uniffi",
 | 
						|
    category="devenv",
 | 
						|
    description="Generate JS bindings using uniffi-bindgen-gecko-js",
 | 
						|
)
 | 
						|
def uniffi(command_context, *runargs, **lintargs):
 | 
						|
    """Run uniffi."""
 | 
						|
    command_context._sub_mach(["help", "uniffi"])
 | 
						|
    return 1
 | 
						|
 | 
						|
 | 
						|
@SubCommand(
 | 
						|
    "uniffi",
 | 
						|
    "generate",
 | 
						|
    description="Generate/regenerate bindings",
 | 
						|
)
 | 
						|
def generate_command(command_context):
 | 
						|
    binary_path = build_uniffi_bindgen_gecko_js(command_context)
 | 
						|
    cmdline = [
 | 
						|
        binary_path,
 | 
						|
        "--js-dir",
 | 
						|
        JS_DIR,
 | 
						|
        "--fixture-js-dir",
 | 
						|
        FIXTURE_JS_DIR,
 | 
						|
        "--cpp-path",
 | 
						|
        CPP_PATH,
 | 
						|
        "--fixture-cpp-path",
 | 
						|
        FIXTURE_CPP_PATH,
 | 
						|
    ]
 | 
						|
    subprocess.check_call(cmdline, cwd=command_context.topsrcdir)
 | 
						|
    return 0
 | 
						|
 | 
						|
 | 
						|
def crate_root(command_context):
 | 
						|
    return os.path.join(
 | 
						|
        command_context.topsrcdir, "toolkit", "components", "uniffi-bindgen-gecko-js"
 | 
						|
    )
 |