RetroPie-Setup/scriptmodules/supplementary/usbromservice.sh
2024-09-10 20:23:00 +01:00

126 lines
3.5 KiB
Bash

#!/usr/bin/env bash
# This file is part of The RetroPie Project
#
# The RetroPie Project is the legal property of its developers, whose names are
# too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
#
# See the LICENSE.md file at the top-level directory of this distribution and
# at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
#
rp_module_id="usbromservice"
rp_module_desc="USB ROM Service"
rp_module_section="opt"
function _get_ver_usbromservice() {
echo 0.0.24
}
function _update_hook_usbromservice() {
! rp_isInstalled "$md_id" && return
[[ ! -f "$md_inst/disabled" ]] && install_scripts_usbromservice
}
function depends_usbromservice() {
local depends=(rsync ntfs-3g exfat-fuse)
if ! hasPackage usbmount $(_get_ver_usbromservice); then
depends+=(debhelper devscripts pmount lockfile-progs)
getDepends "${depends[@]}"
gitPullOrClone "$md_build/usbmount" https://github.com/RetroPie/usbmount.git systemd
cd "$md_build/usbmount"
dpkg-buildpackage
dpkg -i ../usbmount_*_all.deb
rm -f ../usbmount_*
fi
}
function install_bin_usbromservice() {
[[ ! -f "$md_inst/disabled" ]] && install_scripts_usbromservice
touch "$md_inst/installed"
}
function install_scripts_usbromservice() {
# copy our mount.d scripts over
local file
local dest
for file in "$md_data/"*; do
dest="/etc/usbmount/mount.d/${file##*/}"
sed -e "s/USER/$__user/g" -e "s/GROUP/$__group/g" "$file" >"$dest"
chmod +x "$dest"
done
}
function enable_usbromservice() {
rm -f "$md_inst/disabled"
install_scripts_usbromservice
}
function disable_usbromservice() {
local file
for file in "$md_data/"*; do
file="/etc/usbmount/mount.d/${file##*/}"
rm -f "$file"
done
[[ -d "$md_inst" ]] && touch "$md_inst/disabled"
}
function remove_usbromservice() {
disable_usbromservice
apt-get remove -y usbmount
}
function configure_usbromservice() {
[[ "$md_mode" == "remove" ]] && return
iniConfig "=" '"' /etc/usbmount/usbmount.conf
local fs
for fs in ntfs exfat; do
iniGet "FILESYSTEMS"
if [[ "$ini_value" != *$fs* ]]; then
iniSet "FILESYSTEMS" "$ini_value $fs"
fi
done
# set our mount options (usbmount has sync by default which we don't want)
iniSet "MOUNTOPTIONS" "nodev,noexec,noatime"
# set per filesystem mount options
local options="uid=$(id -u $__user),gid=$(id -g $__user)"
local fs_options
local fs
for fs in vfat hfsplus ntfs exfat; do
fs_options+=("-fstype=${fs},${options}")
done
iniSet "FS_MOUNTOPTIONS" "${fs_options[*]}"
}
function gui_usbromservice() {
local cmd
local options
local choice
while true; do
cmd=(dialog --backtitle "$__backtitle" --menu "Choose from an option below." 22 86 16)
options=(
1 "Enable USB ROM Service scripts"
2 "Disable USB ROM Service scripts"
)
choice=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
if [[ -n "$choice" ]]; then
case "$choice" in
1)
rp_callModule "$md_id" depends
rp_callModule "$md_id" enable
printMsgs "dialog" "Enabled $md_desc"
;;
2)
rp_callModule "$md_id" disable
printMsgs "dialog" "Disabled $md_desc"
;;
esac
else
break
fi
done
}