summaryrefslogtreecommitdiffstats
path: root/toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py')
-rw-r--r--toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py b/toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py
new file mode 100644
index 0000000000..68c2c3d58b
--- /dev/null
+++ b/toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py
@@ -0,0 +1,92 @@
+# 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
+
+# IMPORTANT: Please Request review from a DOM peer before
+# committing to using UniFFI. There are other ways to consume Rust from
+# JavaScript that might fit your use case better.
+UDL_FILES = [
+ "third_party/rust/tabs/src/tabs.udl",
+]
+
+FIXTURE_UDL_FILES = [
+ "third_party/rust/uniffi-example-geometry/src/geometry.udl",
+ "third_party/rust/uniffi-example-arithmetic/src/arithmetic.udl",
+ "third_party/rust/uniffi-example-rondpoint/src/rondpoint.udl",
+ "third_party/rust/uniffi-example-sprites/src/sprites.udl",
+ "third_party/rust/uniffi-example-todolist/src/todolist.udl",
+ "toolkit/components/uniffi-fixture-callbacks/src/callbacks.udl",
+ "toolkit/components/uniffi-example-custom-types/src/custom-types.udl",
+ "toolkit/components/uniffi-fixture-external-types/src/external-types.udl",
+]
+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,
+ ]
+ if UDL_FILES:
+ cmdline += ["--udl-files"] + UDL_FILES
+ if FIXTURE_UDL_FILES:
+ cmdline += ["--fixture-udl-files"] + FIXTURE_UDL_FILES
+ 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"
+ )