mirror of
https://github.com/We-Dont-Byte/Mind_Reader.git
synced 2024-11-15 03:35:59 +00:00
142 lines
4.9 KiB
Bash
142 lines
4.9 KiB
Bash
#!/bin/bash
|
|
|
|
#* linux-update.sh: Install and update dependencies of Mind_Reader, on linux.
|
|
#* Heads-up, this expects to be run from Mind_Reader/setup-development/linux.
|
|
|
|
# If run with bash -vx, print useful information instead of just a + sign
|
|
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
|
|
# If run as root, it could be because sudo isn't installed (some people disagree with sudo, especially on Arch)
|
|
ELEVATE='';if (( $UID !=0 )); then ELEVATE='sudo';fi
|
|
|
|
# Get option flags:
|
|
dry=false
|
|
while getopts d arg; do
|
|
case $arg in
|
|
d) dry=true;;
|
|
esac
|
|
done
|
|
|
|
function dryrun {
|
|
if $dry; then
|
|
echo "> $* [dry]";
|
|
else
|
|
echo "> $*"
|
|
$@
|
|
fi
|
|
}
|
|
|
|
# Get whether the user is running in Windows Subsystem for Linux
|
|
function getwsl {
|
|
grep "[Mm]icrosoft" /proc/version > /dev/null
|
|
return $?
|
|
}
|
|
|
|
# Get the user's default login shell
|
|
function getsh {
|
|
#* This code was created by user [Todd A. Jacobs](https://stackoverflow.com/users/1301972/todd-a-jacobs) on [StackOverflow](https://stackoverflow.com/a/11059152) and is used in accordance with Creative Commons CC BY-SA 3.0
|
|
getent passwd $LOGNAME | cut -d: -f7
|
|
}
|
|
|
|
# Install NVM (this is gross, but the recommended way to install nvm)
|
|
function installnvm {
|
|
# nvm's install script tries to be smart, so we have to work around its supposed cleverness
|
|
usershell=`getsh`
|
|
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | dryrun "$usershell"
|
|
# Reload profile
|
|
case $usershell in
|
|
*/bash) dryrun . ~/.bashrc ~/.bashprofile;;
|
|
*/zsh) dryrun . ~/.zshrc;;
|
|
*) "Your shell, $usershell, is currently unsupported by nvm. It's up to you to set up your development environment."; exit;;
|
|
esac
|
|
}
|
|
|
|
# Set these variables if you need to install for a different architecture
|
|
# Valid architectures are "x64", "arm64", "armhf"
|
|
arch=""
|
|
case `uname -i` in
|
|
"x86_64") arch="x64";;
|
|
"armv[6-8]*") arch="armhf";;
|
|
"aarch64") arch="arm64";;
|
|
*) echo "Architecture '$(uname -i)' unknown. Assuming x86_64..."
|
|
arch="x64";;
|
|
esac
|
|
|
|
if which pacman; then
|
|
# Install dependencies with pacman
|
|
printf "Installing dependencies with pacman...\n"
|
|
cat ./package-managers/pacman.dependencies | dryrun $ELEVATE pacman -S -
|
|
# If not in Windows Subsystem for Linux, install vscode
|
|
[[ !(getwsl) ]] && dryrun $ELEVATE pacman -S code
|
|
# Install Node Version Manager
|
|
installnvm
|
|
|
|
elif which apt-get; then
|
|
# Install dependencies using apt-get
|
|
printf "Installing dependencies with apt...\n"
|
|
dryrun xargs -a ./package-managers/apt.dependencies $ELEVATE apt-get install -y
|
|
# Check if vscode exists, if not, install it.
|
|
# Microsoft doesn't put it in any Ubuntu repos, you have to get it straight from them.
|
|
# This does have the side effect, however, of installing the official repository
|
|
# Don't attempt to install vscode if running in WSL; it can cause problems.
|
|
if !(which code) && !(getwsl); then
|
|
#* Install VSCode
|
|
vscodepackagename="code_amd64.deb"
|
|
dryrun wget "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-$arch" -O ./code.deb
|
|
dryrun $ELEVATE apt install ./code.deb
|
|
dryrun rm ./code.deb
|
|
fi
|
|
# Install Node Version Manager (nvm)
|
|
installnvm
|
|
|
|
fi
|
|
|
|
cdir=$(pwd)
|
|
# Go back to source tree root
|
|
cd ../..
|
|
|
|
# Check the VSCode version
|
|
nodeversion="node"
|
|
electronversion=""
|
|
#* Note:
|
|
#* When adding support for new VSCode versions, update this case
|
|
#* By the time you're working on this project, things are likely going to differ!
|
|
case `code --version` in
|
|
#* Each version of VSCode has a corresponding Electron version and Node version
|
|
#* These are used when configuring nvm
|
|
1.66.*) electronversion="17.2.0"; nodeversion="16.13.0";;
|
|
1.67.*) electronversion="17.4.1"; nodeversion="16.13.0";;
|
|
*) nodeversion="--lts";;
|
|
esac
|
|
|
|
# Install NodeJS and npm
|
|
printf "\nInstalling node $nodeversion\n"
|
|
dryrun nvm install "$nodeversion"
|
|
dryrun nvm use "$nodeversion"
|
|
|
|
# Use npm to install electron-rebuild and yo
|
|
printf "Installing electron-rebuild, yo, and generator-code\n"
|
|
dryrun npm install electron-rebuild yo generator-code
|
|
|
|
# use npm to acquire dependencies for Mind-Reader
|
|
printf "\nAcquiring dependencies...\n"
|
|
dryrun npm install
|
|
|
|
# automatically update vulnerable packages, if possible
|
|
printf "\nUpdating vulnerable packages, if possible...\n"
|
|
dryrun npm audit fix
|
|
|
|
# Use electron-rebuild to rebuild electron
|
|
if [[ "$electronversion" != "" ]]; then
|
|
printf "\nRebuilding electron with version $electronversion...\n"
|
|
dryrun electron-rebuild --version $electronversion
|
|
else
|
|
printf "\n%s\n%s\n%s\n%s\n" \
|
|
"Open Visual Studio Code, select the 'Help' tab in the toolbar, and go to 'About'." \
|
|
"Find the line that says 'Electron: [electron version]'" \
|
|
"Run the command below, filling in the Electron version with the one from that menu:" \
|
|
"electron-rebuild --version [electron version]"
|
|
fi
|
|
|
|
cd $cdir
|
|
echo "Done!"
|