-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1828 from nodesource/jesus/support-23
Support node.js v23
- Loading branch information
Showing
13 changed files
with
659 additions
and
131 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
#!/bin/bash | ||
|
||
# Logger Function | ||
log() { | ||
local message="$1" | ||
local type="$2" | ||
local timestamp=$(date '+%Y-%m-%d %H:%M:%S') | ||
local color | ||
local endcolor="\033[0m" | ||
|
||
case "$type" in | ||
"info") color="\033[38;5;79m" ;; | ||
"success") color="\033[1;32m" ;; | ||
"error") color="\033[1;31m" ;; | ||
*) color="\033[1;34m" ;; | ||
esac | ||
|
||
echo -e "${color}${timestamp} - ${message}${endcolor}" | ||
} | ||
|
||
# Error handler function | ||
handle_error() { | ||
local exit_code=$1 | ||
local error_message="$2" | ||
log "Error: $error_message (Exit Code: $exit_code)" "error" | ||
exit $exit_code | ||
} | ||
|
||
# Function to check for command availability | ||
command_exists() { | ||
command -v "$1" &> /dev/null | ||
} | ||
|
||
check_os() { | ||
if ! [ -f "/etc/debian_version" ]; then | ||
echo "Error: This script is only supported on Debian-based systems." | ||
exit 1 | ||
fi | ||
} | ||
|
||
# Function to Install the script pre-requisites | ||
install_pre_reqs() { | ||
log "Installing pre-requisites" "info" | ||
|
||
# Run 'apt-get update' | ||
if ! apt-get update -y; then | ||
handle_error "$?" "Failed to run 'apt-get update'" | ||
fi | ||
|
||
# Run 'apt-get install' | ||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then | ||
handle_error "$?" "Failed to install packages" | ||
fi | ||
|
||
if ! mkdir -p /usr/share/keyrings; then | ||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo" | ||
fi | ||
|
||
rm -f /usr/share/keyrings/nodesource.gpg || true | ||
rm -f /etc/apt/sources.list.d/nodesource.list || true | ||
|
||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key | ||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then | ||
handle_error "$?" "Failed to download and import the NodeSource signing key" | ||
fi | ||
|
||
# Explicitly set the permissions to ensure the file is readable by all | ||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then | ||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg" | ||
fi | ||
} | ||
|
||
# Function to configure the Repo | ||
configure_repo() { | ||
local node_version=$1 | ||
|
||
arch=$(dpkg --print-architecture) | ||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then | ||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." | ||
fi | ||
|
||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null | ||
|
||
# N|solid Config | ||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null | ||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null | ||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null | ||
|
||
# Nodejs Config | ||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null | ||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null | ||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null | ||
|
||
# Run 'apt-get update' | ||
if ! apt-get update -y; then | ||
handle_error "$?" "Failed to run 'apt-get update'" | ||
else | ||
log "Repository configured successfully." | ||
log "To install Node.js, run: apt-get install nodejs -y" "info" | ||
log "You can use N|solid Runtime as a node.js alternative" "info" | ||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" | ||
fi | ||
} | ||
|
||
# Define Node.js version | ||
NODE_VERSION="23.x" | ||
|
||
# Check OS | ||
check_os | ||
|
||
# Main execution | ||
install_pre_reqs || handle_error $? "Failed installing pre-requisites" | ||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.