diff --git a/scripts/update_newtab.py b/scripts/update_newtab.py index 0a8b4aeb..e0898b8f 100644 --- a/scripts/update_newtab.py +++ b/scripts/update_newtab.py @@ -2,40 +2,72 @@ import os import subprocess import logging -# Set up logging -logging.basicConfig(level=logging.INFO) +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s' +) -# Constants for paths NEW_TAB_DIR = "./engine/browser/components/newtab" ENGINE_DIR = "./engine" NPM_INSTALL_COMMANDS = ["npm install", "npm install meow@9.0.0"] BUNDLE_COMMAND = "npm run bundle --prefix=browser/components/newtab" - def install_dependencies(): - """Install necessary npm packages for the newtab component.""" - for command in NPM_INSTALL_COMMANDS: - logging.info(f"Running command: {command} in {NEW_TAB_DIR}") - subprocess.run(command.split(), cwd=NEW_TAB_DIR, check=True) - + if not os.path.isdir(NEW_TAB_DIR): + logging.error(f"Directory not found: {NEW_TAB_DIR}") + raise FileNotFoundError(f"New tab directory {NEW_TAB_DIR} does not exist") + + for command in NPM_INSTALL_COMMANDS: + try: + logging.info(f"Running command: {command} in {NEW_TAB_DIR}") + subprocess.run( + command.split(), + cwd=NEW_TAB_DIR, + check=True, + capture_output=True, + text=True + ) + logging.info(f"Successfully executed: {command}") + except subprocess.CalledProcessError as e: + logging.error(f"Command failed: {command} - {e.stderr}") + raise def bundle_newtab_components(): - """Bundle the newtab components.""" - logging.info(f"Bundling newtab components in {ENGINE_DIR}") - subprocess.run(BUNDLE_COMMAND.split(), cwd=ENGINE_DIR, check=True) - + if not os.path.isdir(ENGINE_DIR): + logging.error(f"Directory not found: {ENGINE_DIR}") + raise FileNotFoundError(f"Engine directory {ENGINE_DIR} does not exist") + + try: + logging.info(f"Bundling newtab components in {ENGINE_DIR}") + result = subprocess.run( + BUNDLE_COMMAND.split(), + cwd=ENGINE_DIR, + check=True, + capture_output=True, + text=True + ) + logging.info(f"Bundle completed successfully: {result.stdout}") + except subprocess.CalledProcessError as e: + logging.error(f"Bundle failed: {e.stderr}") + raise def update_newtab(init: bool = True): - """Update the newtab components, optionally initializing dependencies.""" - try: - if init: - install_dependencies() - - bundle_newtab_components() - except subprocess.CalledProcessError as e: - logging.error(f"An error occurred: {e}") - raise - + try: + if init: + logging.info("Starting dependency installation") + install_dependencies() + logging.info("Dependencies installed successfully") + + logging.info("Starting bundle process") + bundle_newtab_components() + logging.info("Newtab update completed successfully") + + except (subprocess.CalledProcessError, FileNotFoundError) as e: + logging.error(f"Update process failed: {str(e)}") + raise + except Exception as e: + logging.error(f"Unexpected error: {str(e)}") + raise if __name__ == "__main__": - update_newtab(init=False) + update_newtab(init=False)