feat(scripts): Add script for Local Component Development

This commit is contained in:
Emil Ivanichkov 2024-02-16 21:21:51 +02:00 committed by Emil Ivanichkov
parent 47ca187726
commit 941910d205
1 changed files with 105 additions and 0 deletions

View File

@ -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 "$@"