From 6897acc23834a09bed07fd883d93bebc2b1f066e Mon Sep 17 00:00:00 2001 From: Michal Date: Mon, 27 Jan 2025 22:41:15 +0100 Subject: [PATCH 1/5] Added preinstall script --- package.json | 1 + preinstall.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 preinstall.sh diff --git a/package.json b/package.json index 89cfb181b..d2613f767 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "hardhat/**/@ethereumjs/tx": "3.5.0" }, "scripts": { + "preinstall": "bash preinstall.sh", "postinstall": "patch-package", "prepare": "yarn prepare:husky", "prepare:husky": "husky install", diff --git a/preinstall.sh b/preinstall.sh new file mode 100644 index 000000000..c4e978042 --- /dev/null +++ b/preinstall.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +echo "Setting up the development environment..." + +# Function to install a package if not already installed +install_package_linux() { + PACKAGE=$1 + if ! command -v $PACKAGE &> /dev/null; then + echo "Installing $PACKAGE on Linux..." + sudo apt-get update -y + sudo apt-get install -y $PACKAGE + else + echo "$PACKAGE is already installed." + fi +} + +install_package_mac() { + PACKAGE=$1 + if ! command -v $PACKAGE &> /dev/null; then + echo "Installing $PACKAGE on macOS..." + brew install $PACKAGE + else + echo "$PACKAGE is already installed." + fi +} + +# Detect the operating system +OS=$(uname -s) + +if [[ "$OS" == "Linux" ]]; then + echo "Detected Linux. Using apt package manager." + install_package_linux jq + install_package_linux bc +elif [[ "$OS" == "Darwin" ]]; then + echo "Detected macOS. Using Homebrew package manager." + + # Check if Homebrew is installed + if ! command -v brew &> /dev/null; then + echo "Homebrew is not installed. Installing Homebrew..." + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + # Add Homebrew to PATH for immediate use + eval "$($(brew --prefix)/bin/brew shellenv)" + fi + + install_package_mac jq + install_package_mac bc +else + echo "Unsupported operating system: $OS" + echo "Please install jq and bc manually." + exit 1 +fi + +echo "All necessary packages are installed." \ No newline at end of file From 6bba4b10f38627eaefde86e2326f69ab042f626d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Miro=C5=84czuk?= Date: Tue, 28 Jan 2025 08:40:46 +0100 Subject: [PATCH 2/5] Update preinstall.sh Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- preinstall.sh | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/preinstall.sh b/preinstall.sh index c4e978042..a9eae6264 100644 --- a/preinstall.sh +++ b/preinstall.sh @@ -37,9 +37,22 @@ elif [[ "$OS" == "Darwin" ]]; then # Check if Homebrew is installed if ! command -v brew &> /dev/null; then echo "Homebrew is not installed. Installing Homebrew..." - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + # Download script first to allow inspection + BREW_SCRIPT=$(mktemp) + if ! curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh -o "$BREW_SCRIPT"; then + echo "Failed to download Homebrew install script" + rm -f "$BREW_SCRIPT" + exit 1 + fi + # Execute the downloaded script + if ! /bin/bash "$BREW_SCRIPT"; then + echo "Failed to install Homebrew" + rm -f "$BREW_SCRIPT" + exit 1 + fi + rm -f "$BREW_SCRIPT" # Add Homebrew to PATH for immediate use - eval "$($(brew --prefix)/bin/brew shellenv)" + eval "$("$(brew --prefix)/bin/brew" shellenv)" fi install_package_mac jq From e5b5c15ff41ab1075107460abba4358cb9d2f1b9 Mon Sep 17 00:00:00 2001 From: Michal Date: Tue, 28 Jan 2025 08:48:58 +0100 Subject: [PATCH 3/5] Updated script --- preinstall.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/preinstall.sh b/preinstall.sh index c4e978042..8f1157bbc 100644 --- a/preinstall.sh +++ b/preinstall.sh @@ -5,6 +5,11 @@ echo "Setting up the development environment..." # Function to install a package if not already installed install_package_linux() { PACKAGE=$1 + # Check for apt-get availability + if ! command -v apt-get &> /dev/null; then + echo "apt-get not found. Please install packages manually." + exit 1 + fi if ! command -v $PACKAGE &> /dev/null; then echo "Installing $PACKAGE on Linux..." sudo apt-get update -y @@ -18,7 +23,10 @@ install_package_mac() { PACKAGE=$1 if ! command -v $PACKAGE &> /dev/null; then echo "Installing $PACKAGE on macOS..." - brew install $PACKAGE + if ! brew install "$PACKAGE"; then + echo "Failed to install $PACKAGE" + exit 1 + fi else echo "$PACKAGE is already installed." fi @@ -27,6 +35,11 @@ install_package_mac() { # Detect the operating system OS=$(uname -s) +if [[ "$OS" == "Linux" ]] && ! command -v sudo &> /dev/null; then + echo "sudo is required but not available" + exit 1 +fi + if [[ "$OS" == "Linux" ]]; then echo "Detected Linux. Using apt package manager." install_package_linux jq From 0a52203b23c9868e797f9723a33e8615e7b9e3b6 Mon Sep 17 00:00:00 2001 From: Michal Date: Tue, 28 Jan 2025 10:00:30 +0100 Subject: [PATCH 4/5] Updated preinstall script --- preinstall.sh | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/preinstall.sh b/preinstall.sh index 6f5f137e9..f6e214b0e 100644 --- a/preinstall.sh +++ b/preinstall.sh @@ -2,20 +2,32 @@ echo "Setting up the development environment..." -# Function to install a package if not already installed install_package_linux() { - PACKAGE=$1 - # Check for apt-get availability - if ! command -v apt-get &> /dev/null; then - echo "apt-get not found. Please install packages manually." - exit 1 - fi - if ! command -v $PACKAGE &> /dev/null; then - echo "Installing $PACKAGE on Linux..." - sudo apt-get update -y - sudo apt-get install -y $PACKAGE + local PACKAGE=$1 + + # apt-get for Debian Ubuntu + if command -v apt-get &> /dev/null; then + if ! command -v "$PACKAGE" &> /dev/null; then + echo "Installing $PACKAGE using apt-get..." + sudo apt-get update -y + sudo apt-get install -y "$PACKAGE" + else + echo "$PACKAGE is already installed." + fi + + # try dnf for Fedora or RedHat + elif command -v dnf &> /dev/null; then + if ! command -v "$PACKAGE" &> /dev/null; then + echo "Installing $PACKAGE using dnf..." + sudo dnf install -y "$PACKAGE" + else + echo "$PACKAGE is already installed." + fi + else - echo "$PACKAGE is already installed." + echo "No recognized package manager found." + echo "Please install $PACKAGE manually." + exit 1 fi } From 369d81396cfb6d78f3ddec23e164e9310ede9b89 Mon Sep 17 00:00:00 2001 From: Michal Date: Wed, 29 Jan 2025 09:15:45 +0100 Subject: [PATCH 5/5] Updated preinstall script --- preinstall.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/preinstall.sh b/preinstall.sh index f6e214b0e..d116614ff 100644 --- a/preinstall.sh +++ b/preinstall.sh @@ -5,7 +5,7 @@ echo "Setting up the development environment..." install_package_linux() { local PACKAGE=$1 - # apt-get for Debian Ubuntu + # try to use apt-get (default package manager for Debian/Ubuntu) if command -v apt-get &> /dev/null; then if ! command -v "$PACKAGE" &> /dev/null; then echo "Installing $PACKAGE using apt-get..." @@ -15,7 +15,7 @@ install_package_linux() { echo "$PACKAGE is already installed." fi - # try dnf for Fedora or RedHat + # try to use dnf (default package manager for Fedora/RedHat) elif command -v dnf &> /dev/null; then if ! command -v "$PACKAGE" &> /dev/null; then echo "Installing $PACKAGE using dnf..." @@ -47,12 +47,11 @@ install_package_mac() { # Detect the operating system OS=$(uname -s) -if [[ "$OS" == "Linux" ]] && ! command -v sudo &> /dev/null; then - echo "sudo is required but not available" - exit 1 -fi - if [[ "$OS" == "Linux" ]]; then + if ! command -v sudo &> /dev/null; then + echo "sudo is required but not available" + exit 1 + fi echo "Detected Linux. Using apt package manager." install_package_linux jq install_package_linux bc