mirror of
				https://github.com/We-Dont-Byte/Mind_Reader.git
				synced 2025-02-04 10:38:42 +00:00 
			
		
		
		
	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:
		
							
								
								
									
										60
									
								
								setup-development/linux/install-linux.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								setup-development/linux/install-linux.sh
									
									
									
									
									
										Normal 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
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
apt-transport-https
 | 
			
		||||
build-essential
 | 
			
		||||
python3
 | 
			
		||||
wget
 | 
			
		||||
@@ -0,0 +1,5 @@
 | 
			
		||||
base-devel
 | 
			
		||||
code
 | 
			
		||||
git
 | 
			
		||||
nvm
 | 
			
		||||
python3
 | 
			
		||||
							
								
								
									
										100
									
								
								setup-development/linux/upgrade-linux.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								setup-development/linux/upgrade-linux.sh
									
									
									
									
									
										Normal 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
 | 
			
		||||
		Reference in New Issue
	
	Block a user