From 7533606302bc3d7feb9848316d2d3ce5ffbbefb3 Mon Sep 17 00:00:00 2001 From: Jeevitha Kannan K S Date: Thu, 21 Nov 2024 08:39:13 +0530 Subject: [PATCH] Refactor utility functions Separate utitility functions into user manager functions and monitor control functions, disable somechecks and formatting --- .../monitor-control/auto_detect_displays.sh | 13 +++-- .../monitor-control/change_orientation.sh | 10 ++-- .../utils/monitor-control/disable_monitor.sh | 7 ++- .../monitor-control/duplicate_displays.sh | 5 +- .../utils/monitor-control/enable_monitor.sh | 7 ++- .../utils/monitor-control/extend_displays.sh | 7 ++- .../monitor-control/manage_arrangement.sh | 10 ++-- .../monitor-control-functions.sh} | 50 +++++-------------- .../utils/monitor-control/reset_scaling.sh | 5 +- .../utils/monitor-control/scale_monitor.sh | 5 +- .../utils/monitor-control/set_brightness.sh | 7 +-- .../monitor-control/set_primary_monitor.sh | 5 +- .../utils/monitor-control/set_resolutions.sh | 13 +++-- .../user-account-manager/add_to_group.sh | 14 ++---- .../utils/user-account-manager/add_user.sh | 11 ++-- .../user-account-manager/change_password.sh | 15 +++--- .../utils/user-account-manager/delete_user.sh | 15 +++--- .../user-account-manager/remove_from_group.sh | 18 +++---- .../user-manager-functions.sh | 31 ++++++++++++ 19 files changed, 122 insertions(+), 126 deletions(-) rename core/tabs/utils/{utility_functions.sh => monitor-control/monitor-control-functions.sh} (76%) create mode 100644 core/tabs/utils/user-account-manager/user-manager-functions.sh diff --git a/core/tabs/utils/monitor-control/auto_detect_displays.sh b/core/tabs/utils/monitor-control/auto_detect_displays.sh index 2613f99e7..3044f762b 100755 --- a/core/tabs/utils/monitor-control/auto_detect_displays.sh +++ b/core/tabs/utils/monitor-control/auto_detect_displays.sh @@ -1,14 +1,13 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to auto-detect displays and set common resolution auto_detect_displays() { if confirm_action "Auto-detect displays and set common resolution?"; then execute_command "xrandr --auto" - + monitors=$(detect_connected_monitors) first_monitor=$(echo "$monitors" | head -n 1) common_resolutions=$(get_unique_resolutions "$first_monitor") @@ -18,14 +17,14 @@ auto_detect_displays() { temp_common_resolutions=$(mktemp) temp_resolutions=$(mktemp) - printf "%b\n" "$common_resolutions" > "$temp_common_resolutions" - printf "%b\n" "$resolutions" > "$temp_resolutions" + printf "%b\n" "$common_resolutions" >"$temp_common_resolutions" + printf "%b\n" "$resolutions" >"$temp_resolutions" common_resolutions=$(comm -12 "$temp_common_resolutions" "$temp_resolutions") rm -f "$temp_common_resolutions" "$temp_resolutions" done - + if [ -z "$common_resolutions" ]; then printf "%b\n" "${RED}No common resolution found among connected monitors.${RC}" return diff --git a/core/tabs/utils/monitor-control/change_orientation.sh b/core/tabs/utils/monitor-control/change_orientation.sh index 00ac1b95c..e38a9c09f 100755 --- a/core/tabs/utils/monitor-control/change_orientation.sh +++ b/core/tabs/utils/monitor-control/change_orientation.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to change monitor orientation change_orientation() { @@ -47,7 +46,10 @@ change_orientation() { 2) orientation="left" ;; 3) orientation="right" ;; 4) orientation="inverted" ;; - *) printf "%b\n" "${RED}Invalid selection.${RC}"; return ;; + *) + printf "%b\n" "${RED}Invalid selection.${RC}" + return + ;; esac if confirm_action "Change orientation of $monitor_name to $orientation?"; then diff --git a/core/tabs/utils/monitor-control/disable_monitor.sh b/core/tabs/utils/monitor-control/disable_monitor.sh index 649d71a21..7085004cf 100755 --- a/core/tabs/utils/monitor-control/disable_monitor.sh +++ b/core/tabs/utils/monitor-control/disable_monitor.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to disable a monitor disable_monitor() { @@ -31,7 +30,7 @@ disable_monitor() { monitor_name=$(echo "$monitor_array" | cut -d' ' -f"$monitor_choice") printf "%b\n" "${RED}Warning: Disabling the monitor will turn it off and may affect your display setup.${RC}" - + if confirm_action "Do you really want to disable ${GREEN}$monitor_name${RC}?"; then printf "%b\n" "${GREEN}Disabling $monitor_name${RC}" execute_command "xrandr --output $monitor_name --off" diff --git a/core/tabs/utils/monitor-control/duplicate_displays.sh b/core/tabs/utils/monitor-control/duplicate_displays.sh index 53aa260d3..3c48ab919 100755 --- a/core/tabs/utils/monitor-control/duplicate_displays.sh +++ b/core/tabs/utils/monitor-control/duplicate_displays.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to duplicate displays duplicate_displays() { diff --git a/core/tabs/utils/monitor-control/enable_monitor.sh b/core/tabs/utils/monitor-control/enable_monitor.sh index ec4db8d6a..9d4c1b8b8 100755 --- a/core/tabs/utils/monitor-control/enable_monitor.sh +++ b/core/tabs/utils/monitor-control/enable_monitor.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to enable a monitor enable_monitor() { @@ -14,7 +13,7 @@ enable_monitor() { printf "%b\n" "${YELLOW} Enable Monitor${RC}" printf "%b\n" "${YELLOW}=========================================${RC}" printf "%b\n" "${YELLOW}Choose a monitor to enable: ${RC}" - + i=1 for monitor in $monitor_array; do printf "%b\n" "$i. ${GREEN}$monitor${RC}" diff --git a/core/tabs/utils/monitor-control/extend_displays.sh b/core/tabs/utils/monitor-control/extend_displays.sh index ebe729f3e..a584c6eb3 100755 --- a/core/tabs/utils/monitor-control/extend_displays.sh +++ b/core/tabs/utils/monitor-control/extend_displays.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to extend displays extend_displays() { @@ -11,7 +10,7 @@ extend_displays() { i=1 for monitor in $monitor_array; do if [ "$i" -gt 1 ]; then - prev_monitor=$(echo "$monitor_array" | cut -d' ' -f$((i-1))) + prev_monitor=$(echo "$monitor_array" | cut -d' ' -f$((i - 1))) if confirm_action "Extend $monitor to the right of $prev_monitor?"; then printf "%b\n" "${GREEN}Extending $monitor to the right of $prev_monitor${RC}" execute_command "xrandr --output $monitor --right-of $prev_monitor" diff --git a/core/tabs/utils/monitor-control/manage_arrangement.sh b/core/tabs/utils/monitor-control/manage_arrangement.sh index 5d73b1ff1..34be12257 100755 --- a/core/tabs/utils/monitor-control/manage_arrangement.sh +++ b/core/tabs/utils/monitor-control/manage_arrangement.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to manage monitor arrangement manage_arrangement() { @@ -45,7 +44,10 @@ manage_arrangement() { 2) position="--right-of" ;; 3) position="--above" ;; 4) position="--below" ;; - *) printf "%b\n" "${RED}Invalid selection.${RC}"; return ;; + *) + printf "%b\n" "${RED}Invalid selection.${RC}" + return + ;; esac printf "%b\n" "${YELLOW}Choose the reference monitor:${RC}" diff --git a/core/tabs/utils/utility_functions.sh b/core/tabs/utils/monitor-control/monitor-control-functions.sh similarity index 76% rename from core/tabs/utils/utility_functions.sh rename to core/tabs/utils/monitor-control/monitor-control-functions.sh index 09f33c60a..b4005e548 100755 --- a/core/tabs/utils/utility_functions.sh +++ b/core/tabs/utils/monitor-control/monitor-control-functions.sh @@ -10,7 +10,7 @@ setup_xrandr() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm xorg-xrandr ;; - apt-get|nala) + apt-get | nala) "$ESCALATION_TOOL" "$PACKAGER" install -y x11-xserver-utils ;; apk) @@ -30,6 +30,7 @@ execute_command() { command="$1" printf "Executing: %s\n" "$command" eval "$command" 2>&1 | tee /tmp/xrandr.log | tail -n 20 + #shellcheck disable=SC2181 if [ $? -ne 0 ]; then printf "%b\n" "${RED}An error occurred while executing the command. Check /tmp/xrandr.log for details.${RC}" fi @@ -52,25 +53,25 @@ get_unique_resolutions() { monitor="$1" xrandr_output=$(xrandr) available_resolutions=$(printf "%s" "$xrandr_output" | sed -n "/$monitor connected/,/^[^ ]/p" | grep -oP '\d+x\d+' | sort -u) - + standard_resolutions="1920x1080 1280x720 1600x900 2560x1440 3840x2160" - + temp_file=$(mktemp) - printf "%s" "$available_resolutions" > "$temp_file" - + printf "%s" "$available_resolutions" >"$temp_file" + filtered_standard_resolutions=$(printf "%s" "$standard_resolutions" | tr ' ' '\n' | grep -xF -f "$temp_file") - + rm "$temp_file" - + available_res_file=$(mktemp) filtered_standard_res_file=$(mktemp) - printf "%s" "$available_resolutions" | sort > "$available_res_file" - printf "%s" "$filtered_standard_resolutions" | sort > "$filtered_standard_res_file" - + printf "%s" "$available_resolutions" | sort >"$available_res_file" + printf "%s" "$filtered_standard_resolutions" | sort >"$filtered_standard_res_file" + remaining_resolutions=$(comm -23 "$available_res_file" "$filtered_standard_res_file") - + rm "$available_res_file" "$filtered_standard_res_file" - + printf "%b\n" "$filtered_standard_resolutions\n$remaining_resolutions" | head -n 10 } @@ -87,31 +88,6 @@ confirm_action() { fi } -checkEmpty() { - if [ -z "$1" ]; then - printf "%b\n" "${RED}Empty value is not allowed${RC}" >&2 - exit 1 - fi -} - -checkGroups() { - groups="$1" - available_groups="$2" - for group in $groups; do - if ! echo "$available_groups" | grep -q -w "$group"; then - return 1 - fi - done - return 0 -} - -confirmAction() { - if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then - printf "%b\n" "${RED}Cancelled operation...${RC}" >&2 - exit 1 - fi -} - checkEnv checkEscalationTool setup_xrandr diff --git a/core/tabs/utils/monitor-control/reset_scaling.sh b/core/tabs/utils/monitor-control/reset_scaling.sh index 63eac1d74..716c33788 100755 --- a/core/tabs/utils/monitor-control/reset_scaling.sh +++ b/core/tabs/utils/monitor-control/reset_scaling.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to Reset scaling back to 1 (native resolution) for all monitors Reset_scaling() { diff --git a/core/tabs/utils/monitor-control/scale_monitor.sh b/core/tabs/utils/monitor-control/scale_monitor.sh index 1817f0f0a..215964eb6 100755 --- a/core/tabs/utils/monitor-control/scale_monitor.sh +++ b/core/tabs/utils/monitor-control/scale_monitor.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to scale smaller monitors to the highest resolution of a bigger monitor scale_monitors() { diff --git a/core/tabs/utils/monitor-control/set_brightness.sh b/core/tabs/utils/monitor-control/set_brightness.sh index 0b7a2a838..b8ce99472 100755 --- a/core/tabs/utils/monitor-control/set_brightness.sh +++ b/core/tabs/utils/monitor-control/set_brightness.sh @@ -1,6 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to adjust brightness for a selected monitor adjust_monitor_brightness() { @@ -29,7 +30,7 @@ adjust_monitor_brightness() { if ! echo "$monitor_choice" | grep -qE '^[0-9]+$'; then printf "%b\n" "${RED}Invalid selection. Please try again.${RC}" printf "Press [Enter] to continue..." - read -r dummy + read -r _ continue fi @@ -37,7 +38,7 @@ adjust_monitor_brightness() { if [ "$monitor_choice" -lt 1 ] || [ "$monitor_choice" -gt "$monitor_count" ]; then printf "%b\n" "${RED}Invalid selection. Please try again.${RC}" printf "Press [Enter] to continue..." - read -r dummy + read -r _ continue fi diff --git a/core/tabs/utils/monitor-control/set_primary_monitor.sh b/core/tabs/utils/monitor-control/set_primary_monitor.sh index d38e6b0f4..fbd681c42 100755 --- a/core/tabs/utils/monitor-control/set_primary_monitor.sh +++ b/core/tabs/utils/monitor-control/set_primary_monitor.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to set a monitor as primary set_primary_monitor() { diff --git a/core/tabs/utils/monitor-control/set_resolutions.sh b/core/tabs/utils/monitor-control/set_resolutions.sh index 84aea4d5a..596999446 100755 --- a/core/tabs/utils/monitor-control/set_resolutions.sh +++ b/core/tabs/utils/monitor-control/set_resolutions.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../utility_functions.sh - -. ../../common-script.sh +# shellcheck disable=SC1091 +. ./monitor-control-functions.sh # Function to set resolutions set_resolutions() { @@ -33,7 +32,7 @@ set_resolutions() { if ! echo "$monitor_choice" | grep -qE '^[0-9]+$' || [ "$monitor_choice" -lt 1 ] || [ "$monitor_choice" -gt "$((i - 1))" ]; then printf "%b\n" "${RED}Invalid selection. Please try again.${RC}" printf "%b\n" "Press [Enter] to continue..." - read -r dummy + read -r _ continue fi @@ -41,13 +40,13 @@ set_resolutions() { resolutions=$(get_unique_resolutions "$monitor_name" | sort -rn -t'x' -k1,1 -k2,2) temp_res_file=$(mktemp) - printf "%b\n" "$resolutions" | awk '{print NR " " $0}' > "$temp_res_file" + printf "%b\n" "$resolutions" | awk '{print NR " " $0}' >"$temp_res_file" i=1 while read -r resolution; do - echo "$resolution" >> "$temp_res_file" + echo "$resolution" >>"$temp_res_file" i=$((i + 1)) - done < "$temp_res_file" + done <"$temp_res_file" clear printf "%b\n" "${YELLOW}=========================================${RC}" diff --git a/core/tabs/utils/user-account-manager/add_to_group.sh b/core/tabs/utils/user-account-manager/add_to_group.sh index 665cf72ac..4622997f2 100755 --- a/core/tabs/utils/user-account-manager/add_to_group.sh +++ b/core/tabs/utils/user-account-manager/add_to_group.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../../common-script.sh - -. ../utility_functions.sh +# shellcheck disable=SC1091 +. ./user-manager-functions.sh addToGroup() { clear @@ -24,7 +23,7 @@ addToGroup() { printf "%b" "${YELLOW}Enter the groups you want to add user $username to (space-separated): ${RC}" read -r groups - checkEmpty "$groups" || exit 1 + checkEmpty "$groups" if ! checkGroups "$groups" "$available_groups"; then printf "%b\n" "${RED}One or more groups are not available.${RC}" exit 1 @@ -34,14 +33,11 @@ addToGroup() { printf "%b" "${YELLOW}Are you sure you want to add user $username to $groups_to_add? [Y/n]: ${RC}" read -r confirm - confirmAction || exit 1 + confirmAction "$confirm" "$ESCALATION_TOOL" usermod -aG "$groups_to_add" "$username" printf "%b\n" "${GREEN}User successfully added to the $groups_to_add${RC}" } -checkEnv -checkEscalationTool -checkGroups -addToGroup \ No newline at end of file +addToGroup diff --git a/core/tabs/utils/user-account-manager/add_user.sh b/core/tabs/utils/user-account-manager/add_user.sh index 26435f412..a1b3e62f1 100755 --- a/core/tabs/utils/user-account-manager/add_user.sh +++ b/core/tabs/utils/user-account-manager/add_user.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../../common-script.sh - -. ../utility_functions.sh +# shellcheck disable=SC1091 +. ./user-manager-functions.sh createUser() { clear @@ -11,7 +10,9 @@ createUser() { printf "%b" "${YELLOW}Enter the username: ${RC}" read -r username - if ! echo "$username" | grep '^[a-zA-Z]*$' > /dev/null; then + checkEmpty "$username" + + if ! echo "$username" | grep '^[a-zA-Z]*$' >/dev/null; then printf "%b\n" "${RED}Username must only contain letters and cannot contain spaces.${RC}" exit 1 fi @@ -33,6 +34,4 @@ createUser() { printf "%b\n" "${GREEN}To add additional groups use Add User To Groups${RC}" } -checkEnv -checkEscalationTool createUser diff --git a/core/tabs/utils/user-account-manager/change_password.sh b/core/tabs/utils/user-account-manager/change_password.sh index a909a5b2b..89960c012 100755 --- a/core/tabs/utils/user-account-manager/change_password.sh +++ b/core/tabs/utils/user-account-manager/change_password.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../../common-script.sh - -. ../utility_functions.sh +# shellcheck disable=SC1091 +. ./user-manager-functions.sh changePassword() { clear @@ -12,13 +11,15 @@ changePassword() { printf "%b" "${YELLOW}Enter the username: ${RC}" read -r username - if id "$username" > /dev/null 2>&1; then + checkEmpty "$username" + + if id "$username" >/dev/null 2>&1; then printf "%b" "${YELLOW}Enter new password: ${RC}" read -r password printf "%b" "${YELLOW}Are you sure you want to change password for ""$username""? [Y/n]: ${RC}" read -r confirm - confirmAction || exit 1 + confirmAction "$confirm" echo "$username:$password" | "$ESCALATION_TOOL" chpasswd printf "%b\n" "${GREEN}Password changed successfully${RC}" @@ -28,6 +29,4 @@ changePassword() { fi } -checkEnv -checkEscalationTool -changePassword \ No newline at end of file +changePassword diff --git a/core/tabs/utils/user-account-manager/delete_user.sh b/core/tabs/utils/user-account-manager/delete_user.sh index aee9482e3..89c62a5e8 100755 --- a/core/tabs/utils/user-account-manager/delete_user.sh +++ b/core/tabs/utils/user-account-manager/delete_user.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../../common-script.sh - -. ../utility_functions.sh +# shellcheck disable=SC1091 +. ./user-manager-functions.sh deleteUser() { clear @@ -12,10 +11,12 @@ deleteUser() { printf "%b" "${YELLOW}Enter the username: ${RC}" read -r username - if id "$username" > /dev/null 2>&1; then + checkEmpty "$username" + + if id "$username" >/dev/null 2>&1; then printf "%b" "${YELLOW}Are you sure you want to delete user ""$username""? [Y/n]: ${RC}" read -r confirm - confirmAction || exit 1 + confirmAction "$confirm" $ESCALATION_TOOL userdel --remove "$username" 2>/dev/null printf "%b\n" "${GREEN}User $username deleted successfully${RC}" @@ -25,6 +26,4 @@ deleteUser() { fi } -checkEnv -checkEscalationTool -deleteUser \ No newline at end of file +deleteUser diff --git a/core/tabs/utils/user-account-manager/remove_from_group.sh b/core/tabs/utils/user-account-manager/remove_from_group.sh index 23935b5e4..c8c84fa9d 100755 --- a/core/tabs/utils/user-account-manager/remove_from_group.sh +++ b/core/tabs/utils/user-account-manager/remove_from_group.sh @@ -1,8 +1,7 @@ #!/bin/sh -e -. ../../common-script.sh - -. ../utility_functions.sh +# shellcheck disable=SC1091 +. ./user-manager-functions.sh removeFromGroup() { clear @@ -12,7 +11,9 @@ removeFromGroup() { printf "%b" "${YELLOW}Enter the username: ${RC}" read -r username - if ! id "$username" > /dev/null 2>&1; then + checkEmpty "$username" + + if ! id "$username" >/dev/null 2>&1; then printf "%b\n" "${RED}User $username does not exist.${RC}" exit 1 fi @@ -25,7 +26,7 @@ removeFromGroup() { printf "%b" "${YELLOW}Enter the groups you want to remove user $username from (space-separated): ${RC} " read -r groups - checkEmpty "$groups" || exit 1 + checkEmpty "$groups" if ! checkGroups "$groups" "$user_groups"; then printf "%b\n" "${RED}One or more specified groups do not exist.${RC}" exit 1 @@ -35,13 +36,12 @@ removeFromGroup() { printf "%b" "${YELLOW}Are you sure you want to remove user $username from $groups_to_remove? [Y/n]: ${RC}" read -r confirm - confirmAction || exit 1 + confirmAction "$confirm" + #shellcheck disable=SC2086 $ESCALATION_TOOL usermod -rG $groups_to_remove "$username" printf "%b\n" "${GREEN}User successfully removed from $groups_to_remove${RC}" } -checkEnv -checkEscalationTool -removeFromGroup \ No newline at end of file +removeFromGroup diff --git a/core/tabs/utils/user-account-manager/user-manager-functions.sh b/core/tabs/utils/user-account-manager/user-manager-functions.sh new file mode 100644 index 000000000..f9f4df40c --- /dev/null +++ b/core/tabs/utils/user-account-manager/user-manager-functions.sh @@ -0,0 +1,31 @@ +#!/bin/sh -e + +. ../../common-script.sh + +checkGroups() { + groups="$1" + available_groups="$2" + for group in $groups; do + if ! echo "$available_groups" | grep -q -w "$group"; then + return 1 + fi + done + return 0 +} + +confirmAction() { + confirm="$1" + if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then + printf "%b\n" "${RED}Cancelled operation...${RC}" >&2 + exit 1 + fi +} + +checkEmpty() { + if [ -z "$1" ]; then + printf "%b\n" "${RED}Empty value is not allowed${RC}" >&2 + exit 1 + fi +} + +checkEnv