From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- browser/components/storybook/mach_commands.py | 108 ++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 browser/components/storybook/mach_commands.py (limited to 'browser/components/storybook/mach_commands.py') diff --git a/browser/components/storybook/mach_commands.py b/browser/components/storybook/mach_commands.py new file mode 100644 index 0000000000..cce9b2173f --- /dev/null +++ b/browser/components/storybook/mach_commands.py @@ -0,0 +1,108 @@ +# 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 subprocess +import threading +import time + +import mozpack.path as mozpath +from mach.decorators import Command, CommandArgument, SubCommand + + +@Command( + "storybook", + category="misc", + description="Start the Storybook server and launch the site in a local build of Firefox. This will install npm dependencies, if necessary.", +) +@CommandArgument( + "--no-open", + action="store_true", + help="Start the Storybook server without opening a local Firefox build.", +) +def storybook_server(command_context, no_open=False): + ensure_env(command_context) + if not no_open: + start_browser_thread = threading.Thread( + target=start_browser, args=(command_context,) + ) + start_browser_thread.start() + return run_npm(command_context, args=["run", "storybook"]) + + +@SubCommand( + "storybook", + "build", + description="Build the Storybook for export.", +) +def storybook_build(command_context): + ensure_env(command_context) + return run_npm(command_context, args=["run", "build-storybook"]) + + +@SubCommand( + "storybook", "launch", description="Launch the Storybook site in your local build." +) +def storybook_launch(command_context): + return run_mach( + command_context, + "run", + argv=["http://localhost:5703"], + setpref=[ + "svg.context-properties.content.enabled=true", + "layout.css.light-dark.enabled=true", + ], + ) + + +def start_browser(command_context): + # This delay is used to avoid launching the browser before the Storybook server has started. + time.sleep(5) + subprocess.run(run_mach(command_context, "storybook", subcommand="launch")) + + +def build_storybook_manifest(command_context): + print("Build ChromeMap backend") + run_mach(command_context, "build-backend", backend=["ChromeMap"]) + config_environment = command_context.config_environment + storybook_chrome_map_path = "browser/components/storybook/.storybook/chrome-map.js" + chrome_map_path = mozpath.join(config_environment.topobjdir, "chrome-map.json") + with open(chrome_map_path, "r") as chrome_map_f: + with open(storybook_chrome_map_path, "w") as storybook_chrome_map_f: + storybook_chrome_map_f.write("module.exports = ") + storybook_chrome_map_f.write(chrome_map_f.read()) + storybook_chrome_map_f.write(";") + + +def run_mach(command_context, cmd, **kwargs): + return command_context._mach_context.commands.dispatch( + cmd, command_context._mach_context, **kwargs + ) + + +def run_npm(command_context, args): + return run_mach( + command_context, "npm", args=[*args, "--prefix=browser/components/storybook"] + ) + + +def ensure_env(command_context): + ensure_npm_deps(command_context) + build_storybook_manifest(command_context) + + +def ensure_npm_deps(command_context): + if not check_npm_deps(command_context): + install_npm_deps(command_context) + else: + print("Dependencies up to date\n") + + +def check_npm_deps(command_context): + print("Checking installed npm dependencies") + return not run_npm(command_context, args=["ls"]) + + +def install_npm_deps(command_context): + print("Installing missing npm dependencies") + run_npm(command_context, args=["ci"]) -- cgit v1.2.3