From 941910d20584dfa72a17392b7a6e164c35e94e91 Mon Sep 17 00:00:00 2001 From: Emil Ivanichkov Date: Fri, 16 Feb 2024 21:21:51 +0200 Subject: [PATCH] feat(scripts): Add script for Local Component Development --- scripts/local_component_development.sh | 105 +++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100755 scripts/local_component_development.sh diff --git a/scripts/local_component_development.sh b/scripts/local_component_development.sh new file mode 100755 index 00000000..7e79f7ea --- /dev/null +++ b/scripts/local_component_development.sh @@ -0,0 +1,105 @@ +#!/usr/bin/env bash + +ROOT="$(git rev-parse --show-toplevel)" +VENDOR="$ROOT/vendor" +STATUS_WEB="$ROOT/vendor/status-web" +STATUS_WEB_COMPONENTS="$STATUS_WEB/packages/components" +NODE_MODULE_COMPONENTS="$ROOT/node_modules/@status-im/components" + +# Function to check if the vendor folder is empty and initialize submodules if necessary +check_vendor_folder() { + # Check if the vendor folder is empty + if [ -z "$(ls -A "$VENDOR")" ]; then + # If empty, initialize submodules + git submodule update --init --recursive + echo "Submodules initialized in $(pwd)" + else + # If not empty, print a message + echo "Submodules are ready to use." + fi +} + +# Function to install dependencies and build project in vendor/status-web directory +install_and_build() { + # Change directory to vendor/status-web + cd "$STATUS_WEB" || exit + + # Print message indicating the directory being processed + echo "Installing dependencies and building project in $(pwd)" + + # Install dependencies + yarn install + + cd "$STATUS_WEB_COMPONENTS" || exit + # Build project + yarn build + yarn build:types + + # Print completion message + echo "Installation and build completed in $(pwd)" + + #clean up + cd "$STATUS_WEB" || exit + rm -rf .yarn/ + cd "$ROOT" || exit + +} + +copy_components() { + # Check if the components folder exists in node_modules + if [ -d "$NODE_MODULE_COMPONENTS" ]; then + # If exists, delete the folder + rm -rf "$NODE_MODULE_COMPONENTS" + echo "Deleted existing components folder: $NODE_MODULE_COMPONENTS" + fi + + # Copy components folder from vendor to node_modules + cp -r "$STATUS_WEB_COMPONENTS" "$NODE_MODULE_COMPONENTS" + echo "Copied components folder from $STATUS_WEB_COMPONENTS to $NODE_MODULE_COMPONENTS" +} + +finish() { + cd "$STATUS_WEB" || exit + git checkout apps/mobile/package.json + git checkout packages/colors/package.json + git checkout packages/icons/package.json + git checkout yarn.lock + + git_status=$(git status --porcelain) + + # Check if there are uncommitted changes + if [ -n "$git_status" ]; then + # Prompt user to confirm if everything is committed + echo "There are uncommitted changes. Have you committed everything?" + exit 1 + fi + + echo "All changes are committed. Ready to finish local component development." + cd "$ROOT" || exit + yarn install +} + +# Main function to execute based on argument +main() { + case "$1" in + "begin") + check_vendor_folder + install_and_build + copy_components + ;; + "build") + install_and_build + copy_components + ;; + "end") + finish + ;; + *) + echo "Invalid argument. Please use 'begin', 'build' or 'end'." + exit 1 + ;; + esac +} + +# Execute main function with the provided argument +main "$@"