Install scripts:

- Windows:
  - install:
    Move repo URI into variable
    Remove -NoWinget check (was unused)
  - upgrade:
    Change -NoWinget to disable updating with winget (can take a while)
    Create function to check install of node packages which are put on Path.
- Linux:
  - Install:
    Port install-windows to some linux distros
    Support for Apt (Ubuntu, possibly Debian/Mint)
    Support for Pacman (Arch/Manjaro/Garuda)
  - Upgrade:
    Port upgrade-windows to some linux distros
This commit is contained in:
2022-04-28 17:30:55 -05:00
parent 0634a90f58
commit e8afacef18
6 changed files with 214 additions and 23 deletions

View File

@@ -0,0 +1,60 @@
#!/bin/bash
#* linux-install.sh: First-run setup script
#* Ensures git is installed, clones the repo, and then runs
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
ELEVATE='';if (( $UID != 0 )); then ELEVATE='sudo';fi
help () {
echo "Usage: $0 [-g path/to/git/directory]"
exit 0
}
GITDIR = "~/git"
# Get option flags:
dry=false
while getopts ghd arg; do
case $arg in
g) GITDIR="$OPTARG";;
h) help;;
d) dry=true;;
esac
done
function dryrun {
if $dry; then
echo "> $* [dry]";
else
echo "> $*"
$@
}
SETUPDIR= "Mind_Reader/setup-development"
REPOURI = "https://github.com/We-Dont-Byte/Mind_Reader.git"
# Install git
if which git; then
echo "Git already installed."
elif which pacman; then
# using pacman
dryrun $ELEVATE pacman -Sy git
elif which apt; then
# using apt
dryrun $ELEVATE apt-get update && \
dryrun $ELEVATE apt-get install git -y
fi #? TODO: other package managers?
echo Cloning repository into "$GITDIR"
dryrun mkdir "$GITDIR"
cd $GITDIR && git clone "$REPOURI"
# TODO: remove this when merging!
cd Mind_Reader
dryrun git checkout origin/johnBreaux
# TODO: remove this when merging!
cd "$GITDIR/$SETUPDIR"
bash ./linux-update.sh

View File

@@ -0,0 +1,4 @@
apt-transport-https
build-essential
python3
wget

View File

@@ -0,0 +1,5 @@
base-devel
code
git
nvm
python3

View File

@@ -0,0 +1,100 @@
#!/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 "> $*"
$@
}
# 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
dryrun $ELEVATE pacman -S - < package-managers/pacman.dependencies
elif which apt-get; then
# Install dependencies using apt-get
dryrun xargs -a ./package-managers/apt.dependencies $ELEVATE apt-get install -y
# Install Node Version Manager (nvm)
# TODO: Find a better way to install nvm on Ubuntu, the official NodeJS for <20.04 is so out of date it's unsupported.
dryrun curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
# 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
if !(which code); 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
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
1.66.*) electronversion = "17.2.0"; nodeversion = "16.13.0";;
*) ;;
esac
# Install NodeJS and npm
dryrun nvm install "$nodeversion"
dryrun nvm use "$nodeversion"
# Use npm to install electron-rebuild and yo
dryrun npm install electron-rebuild yo generator-code
# use npm to acquire dependencies for Mind-Reader
dryrun npm install
# Use electron-rebuild to rebuild electron
if (( electronversion != "" )); then
dryrun electron-rebuild --version $electronversion
else
printf "%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