This commit is contained in:
Executable
+203
@@ -0,0 +1,203 @@
|
||||
#!/bin/sh
|
||||
|
||||
BRANCH=${BRANCH:-""}
|
||||
DEBUG=${DEBUG:-0}
|
||||
BUILD_CLI_FROM_SOURCE=${BUILD_CLI_FROM_SOURCE:-0}
|
||||
|
||||
set -e
|
||||
|
||||
bold_start() {
|
||||
printf "\e[1m"
|
||||
}
|
||||
|
||||
bold_end() {
|
||||
printf "\e[22m"
|
||||
}
|
||||
|
||||
print_bold() {
|
||||
bold_start
|
||||
printf "$1"
|
||||
bold_end
|
||||
}
|
||||
|
||||
print_yellow() {
|
||||
printf "\e[33m$1\e[0m"
|
||||
}
|
||||
|
||||
print_green() {
|
||||
printf "\e[32m$1\e[0m"
|
||||
}
|
||||
|
||||
underline_start() {
|
||||
printf "\e[4m"
|
||||
}
|
||||
|
||||
underline_end() {
|
||||
printf "\e[24m\n"
|
||||
}
|
||||
|
||||
get_current_version(){
|
||||
if ! which maccel &>/dev/null; then
|
||||
return
|
||||
fi
|
||||
|
||||
maccel -V | awk '{ print $2 }'
|
||||
}
|
||||
|
||||
get_version() {
|
||||
wget -qO- https://github.com/Gnarus-G/maccel/releases/latest | grep -oP 'v\d+\.\d+\.\d+' | tail -n 1 | cut -c 2-
|
||||
}
|
||||
|
||||
CURR_VERSION=$(get_current_version)
|
||||
VERSION=$(get_version)
|
||||
|
||||
set -e
|
||||
|
||||
setup_dirs() {
|
||||
rm -rf /opt/maccel && mkdir -p /opt/maccel
|
||||
cd /opt/maccel
|
||||
|
||||
if [ -n "$BRANCH" ]; then
|
||||
print_bold "Will do an install, using the branch: $BRANCH\n"
|
||||
git clone --depth 1 --no-single-branch https://github.com/Gnarus-G/maccel.git .
|
||||
git switch $BRANCH
|
||||
else
|
||||
git clone --depth 1 https://github.com/Gnarus-G/maccel.git .
|
||||
fi
|
||||
}
|
||||
|
||||
version_update_warning() {
|
||||
if [ -z "$CURR_VERSION" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
MARKER_VERSION="0.4.0"
|
||||
|
||||
if [ "$CURR_VERSION" = "$MARKER_VERSION" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ "$CURR_VERSION" < "$MARKER_VERSION" ]]; then
|
||||
print_yellow $(print_bold "ATTENTION!")
|
||||
printf "\n\n"
|
||||
|
||||
print_yellow "The precision for the processed values has been updated since version '$CURR_VERSION';\n"
|
||||
EMPHASIS=$(print_bold "MUST re-enter your parameter values in maccel")
|
||||
print_yellow "This means that you $EMPHASIS.\n"
|
||||
print_yellow "Otherwise your curve and mouse movement won't behave as expected.\n"
|
||||
|
||||
printf "\nHere were your values as maccel understands them in '$CURR_VERSION':\n"
|
||||
|
||||
print_bold "SENS MULT: "
|
||||
maccel get param sens-mult
|
||||
|
||||
print_bold "ACCEL: "
|
||||
maccel get param accel
|
||||
|
||||
print_bold "OFFSET: "
|
||||
maccel get param offset
|
||||
|
||||
print_bold "OUTPUT CAP: "
|
||||
maccel get param output-cap
|
||||
fi
|
||||
}
|
||||
|
||||
install_udev_rules() {
|
||||
make udev_uninstall
|
||||
make udev_install
|
||||
}
|
||||
|
||||
install_driver_dkms() {
|
||||
dkms_version=$(cat PKGBUILD | grep "pkgver=" | grep -oP '\d.\d.\d')
|
||||
|
||||
! sudo rmmod maccel 2>/dev/null; # It's obviously okay if this fails
|
||||
|
||||
# Uninstall if this version already exists
|
||||
test -n "$(sudo dkms status maccel/$dkms_version)" && {
|
||||
sudo dkms remove maccel/$dkms_version
|
||||
}
|
||||
|
||||
# Install Driver
|
||||
install -Dm 644 "$(pwd)/dkms.conf" "/usr/src/maccel-${dkms_version}/dkms.conf"
|
||||
|
||||
DEBUG_CFLAGS=""
|
||||
if [ $DEBUG -eq 1 ]; then
|
||||
print_bold "Debug build enabled\n"
|
||||
DEBUG_CFLAGS="-g -DDEBUG"
|
||||
fi
|
||||
|
||||
# Set name and version
|
||||
sudo sed -e "s/@_PKGNAME@/maccel/" \
|
||||
-e "s/@PKGVER@/${dkms_version}/" \
|
||||
-e "s/@DRIVER_CFLAGS@/'${DEBUG_CFLAGS}'/" \
|
||||
-i "/usr/src/maccel-${dkms_version}/dkms.conf"
|
||||
|
||||
sudo cp -r "$(pwd)/driver/." "/usr/src/maccel-${dkms_version}/"
|
||||
|
||||
sudo dkms install --force "maccel/${dkms_version}"
|
||||
|
||||
# Note(Gnarus):
|
||||
# This wouldn't ok in the .install file as noted in https://wiki.archlinux.org/title/DKMS_package_guidelines#Module_loading_automatically_in_.install
|
||||
# But I think it's ok here.
|
||||
sudo modprobe maccel
|
||||
}
|
||||
|
||||
install_cli() {
|
||||
if [ $(getconf LONG_BIT) -lt 64 ]; then
|
||||
BUILD_CLI_FROM_SOURCE=1
|
||||
fi
|
||||
|
||||
if [ $BUILD_CLI_FROM_SOURCE -eq 1 ]; then
|
||||
export RUSTUP_TOOLCHAIN=stable
|
||||
cargo build --bin maccel --release
|
||||
sudo install -m 755 `pwd`/target/release/maccel /usr/local/bin/maccel
|
||||
else
|
||||
print_bold "Preparing to download and install the CLI tool...\n"
|
||||
printf "If you want to build the CLI tool from source, then next time run: \n"
|
||||
print_bold " curl -fsSL https://maccel.org/install.sh | sudo BUILD_CLI_FROM_SOURCE=1 sh \n"
|
||||
curl -fsSL https://github.com/Gnarus-G/maccel/releases/download/v$VERSION/maccel-cli.tar.gz -o maccel-cli.tar.gz
|
||||
tar -zxvf maccel-cli.tar.gz maccel_v$VERSION/maccel
|
||||
mkdir -p bin
|
||||
sudo install -m 755 -v -D maccel_v$VERSION/maccel* bin/
|
||||
sudo ln -vfs $(pwd)/bin/maccel* /usr/local/bin/
|
||||
fi
|
||||
|
||||
sudo groupadd -f maccel
|
||||
}
|
||||
|
||||
# ---- Install Process ----
|
||||
|
||||
ATTENTION=$(version_update_warning)
|
||||
|
||||
underline_start
|
||||
print_bold "\nFetching the maccel github repo"
|
||||
underline_end
|
||||
|
||||
setup_dirs
|
||||
|
||||
underline_start
|
||||
print_bold "\nInstalling udev rules..."
|
||||
underline_end
|
||||
|
||||
install_udev_rules
|
||||
|
||||
underline_start
|
||||
print_bold "\nInstalling the driver (kernel module)"
|
||||
underline_end
|
||||
|
||||
install_driver_dkms
|
||||
|
||||
underline_start
|
||||
print_bold "\nInstalling the CLI"
|
||||
underline_end
|
||||
|
||||
install_cli
|
||||
|
||||
print_bold $(print_green "[Recommended]")
|
||||
print_bold ' Add yourself to the "maccel" group\n'
|
||||
print_bold $(print_green "[Recommended]")
|
||||
print_bold ' usermod -aG maccel $USER\n'
|
||||
|
||||
if [ -n "$ATTENTION" ]; then
|
||||
printf "\n$ATTENTION\n"
|
||||
fi
|
||||
Reference in New Issue
Block a user