clan flash: Remove root requirement for flash, add a flash-template
This commit is contained in:
78
pkgs/clan-cli/clan_cli/flash/inhibit.sh
Executable file
78
pkgs/clan-cli/clan_cli/flash/inhibit.sh
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# A function to log error messages
|
||||
log_fatal() {
|
||||
echo "FATAL: $*" >&2
|
||||
}
|
||||
|
||||
# A function to log warning messages
|
||||
log_warning() {
|
||||
echo "WARNING: $*" >&2
|
||||
}
|
||||
|
||||
|
||||
# Function to enable inhibition (pause automounting)
|
||||
enable_inhibition() {
|
||||
local devices=("$@")
|
||||
|
||||
if ! command -v udevadm &> /dev/null; then
|
||||
log_fatal "udev is required to disable automounting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
log_fatal "Root privileges are required to disable automounting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local rules_dir="/run/udev/rules.d"
|
||||
mkdir -p "$rules_dir"
|
||||
|
||||
for device in "${devices[@]}"; do
|
||||
local devpath="$device"
|
||||
local rule_file="$rules_dir/90-udisks-inhibit-${devpath//\//_}.rules"
|
||||
echo 'SUBSYSTEM=="block", ENV{DEVNAME}=="'"$devpath"'*", ENV{UDISKS_IGNORE}="1"' > "$rule_file"
|
||||
sync
|
||||
done
|
||||
|
||||
udevadm control --reload
|
||||
udevadm trigger --settle --subsystem-match=block
|
||||
}
|
||||
|
||||
# Function to disable inhibition (cleanup)
|
||||
disable_inhibition() {
|
||||
local devices=("$@")
|
||||
local rules_dir="/run/udev/rules.d"
|
||||
|
||||
for device in "${devices[@]}"; do
|
||||
local devpath="$device"
|
||||
local rule_file="$rules_dir/90-udisks-inhibit-${devpath//\//_}.rules"
|
||||
rm -f "$rule_file" || log_warning "Could not remove file: $rule_file"
|
||||
done
|
||||
|
||||
udevadm control --reload || log_warning "Could not reload udev rules"
|
||||
udevadm trigger --settle --subsystem-match=block || log_warning "Could not trigger udev settle"
|
||||
}
|
||||
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo "Usage: $0 [enable|disable] /dev/sdX ..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
action=$1
|
||||
shift
|
||||
devices=("$@")
|
||||
|
||||
case "$action" in
|
||||
enable)
|
||||
enable_inhibition "${devices[@]}"
|
||||
;;
|
||||
disable)
|
||||
disable_inhibition "${devices[@]}"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid action: $action"
|
||||
echo "Usage: $0 [enable|disable] /dev/sdX ..."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user