Compare commits

8 Commits

2 changed files with 100 additions and 2 deletions

70
setup_cswpilib.sh Normal file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
HELP() {
echo "----------------------------------------------------------"
echo "setup_cswpilib.sh [options] WPILIB_DL_URL"
echo "Install and setup code-server for WPILIB use"
echo "This script needs to be run as root!"
echo "Options:"
echo "\t-h: Show this help"
echo "\t-v: Make the script tell you more about what it is doing"
echo "----------------------------------------------------------"
echo ""
}
VERBOSE=false
while getopts "hv" flag; do
case "$flag" in
h)
Help
exit 0;;
v) VERBOSE=true;;
\?)
echo "Unknown option $flag, run setup_cswpilib.sh -h"
exit 1;;
esac
done
WPILIB_DL_URL = ${@:$OPTIND:1}
if [ $WPILIB_DL_URL == '' ]; then
echo "You need to specify a WPILIB download URL"
exit 1
fi
if [ $(whoami) != 'root' ]; then
echo "This script must be run as root"
exit 2
fi
echo "Installing code-server"
curl -fsSL https://code-server.dev/install.sh | sh
echo "Downloading WPILIB"
WPILIB_FILE_NAME="$(echo "$WPILIB_DL_URL" | grep -o '[^/]*$')"
curl -fsSL $WPILIB_DL_URL -o "/tmp/$WPILIB_FILE_NAME"
echo "Unpacking WPILIB"
tar -xzf "/tmp/$WPILIB_FILE_NAME" -C "/tmp"
echo "Unpacking WPILIB-artifacts"
WPILIB_ARTIFACTS=$(find /tmp -type f -name "WPILib_Linux-*-artifacts.tar.gz" -print)
if [ ! -d "/opt/wpilib" ]; then
mkdir -p /opt/wpilib
fi
tar -xzf "$WPILIB_ARTIFACTS" -C "/opt/wpilib"
find /tmp -type f -name "WPILibInstallerVersion.txt" -exec cp {} /opt/wpilib \;
echo "Cleanup excess WPILIB files"
rm -f /tmp/$WPILIB_FILE_NAME
rm -rf "$(find /tmp -type d -name "WPILib_Linux-*" -print)"

View File

@@ -48,6 +48,8 @@ else
useradd "$USERNAME"
fi
echo "Unpacking WPILIB"
HOMEDIR="$(grep "$USERNAME" /etc/passwd | cut -d ':' -f 6)"
ARTIFACTSNAME="$(ls /opt/wpilib | grep artifacts)"
@@ -59,11 +61,15 @@ fi
su -c "tar -xzf /opt/wpilib/$ARTIFACTSNAME -C ~/wpilib/$ARTIFACTSYEAR" "$USERNAME"
echo "Unpacking Gradle"
GRADLEZIP="$(ls $HOMEDIR/wpilib/$ARTIFACTSYEAR/installUtils | grep 'gradle-.*-bin.zip')"
GRADLEFOLDER="$HOMEDIR/gradle-$(echo "$GRADLEZIP" | cut -d '-' -f 2)"
su -c "unzip $HOMEDIR/wpilib/$ARTIFACTSYEAR/installUtils/$GRADLEZIP -d ~/" "$USERNAME"
echo "Setting up user environment variables"
if [ -f "$HOMEDIR/.bashrc.d/wpilib.sh" ]; then
rm -f "$HOMEDIR/.bashrc.d/wpilib.sh"
fi
@@ -78,20 +84,42 @@ echo "export JAVA_HOME=$HOMEDIR/wpilib/$ARTIFACTSYEAR/jdk" >> "$HOMEDIR/.bashrc.
echo "export PATH=\$PATH:$HOMEDIR/wpilib/$ARTIFACTSYEAR/jdk/bin" >> "$HOMEDIR/.bashrc.d/wpilib.sh"
echo "export PATH=\$PATH:$GRADLEFOLDER/bin" >> "$HOMEDIR/.bashrc.d/wpilib.sh"
echo "Setting up tools"
su -c "$HOMEDIR/wpilib/$ARTIFACTSYEAR/jdk/bin/java -jar $HOMEDIR/wpilib/$ARTIFACTSYEAR/tools/ToolsUpdater.jar" "$USERNAME"
echo "Setting up maven"
su -c "$HOMEDIR/wpilib/$ARTIFACTSYEAR/jdk/bin/java -jar $HOMEDIR/wpilib/$ARTIFACTSYEAR/maven/MavenMetaDataFixer.jar" "$USERNAME"
echo "Setting up default code-server configs"
if [ ! -d "$HOMEDIR/.local/share" ]; then
su -c "mkdir -p ~/.local/share" "$USERNAME"
fi
if [ ! -d "$HOMEDIR/.config/code-server" ]; then
su -c "mkdir -p ~/.config/code-server" "$USERNAME"
fi
su -c "tar -xzf $SCRIPTDIR/code-server.tar.gz -C ~/.local/share" "$USERNAME"
su -c "cp -f $SCRIPTDIR/settings.json ~/.local/share/code-server/User" "$USERNAME"
su -c "cp -f $SCRIPTDIR/config.yaml ~/.config/code-server" "$USERNAME"
IP="$(hostname -I | head -n 1)"
echo "Setting specific user configs"
IP="$(hostname -I | head -n 1 | tr -d ' ')"
NEW_PASS="$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 20; echo)"
su -c "sed -i 's/IPADDRESS/$IP/g;s/PORT/$PORT/g;s/PASSWORD/$NEW_PASS/g;' ~/.config/code-server/config.yaml" "$USERNAME"
su -c "sed -i 's/IPADDRESS:PORT/$IP:$PORT/g;s/PASSWORD/$NEW_PASS/g;' ~/.config/code-server/config.yaml" "$USERNAME"
echo "Install user extensions"
for EXTENSION in $HOMEDIR/wpilib/$ARTIFACTSYEAR/vsCodeExtensions/*.vsix; do
echo "Installing extension $EXTENSION"
su -c "code-server --install-extension $EXTENSION" "$USERNAME"
done
echo "$USERNAME is configured, there password is $NEW_PASS"
exit 0