Add comprehensive dependency checking at startup
New Function: check_dependencies()
- Verifies all 4 critical binaries exist before proceeding
- Binaries checked: mysqld, mysql, mysqldump, mysqladmin
- Clear error messages with installation instructions per OS
- Called early in main() before any interactive prompts
Impact:
- Prevents silent failures deep in the workflow
- Saves user time by failing fast with clear error messages
- Provides helpful package installation instructions
- Supports CentOS/RHEL, Debian/Ubuntu, AlmaLinux
- Runs once at startup (not repeatedly)
Before: User could go through all 5 steps only to fail when
mysqldump or mysqladmin was actually needed
After: Dependencies validated immediately, clear error if missing
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -79,6 +79,57 @@ cleanup_on_exit() {
|
|||||||
# Set trap for signals
|
# Set trap for signals
|
||||||
trap cleanup_on_exit EXIT INT TERM
|
trap cleanup_on_exit EXIT INT TERM
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# DEPENDENCY CHECKING
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Verify all required binaries exist before proceeding
|
||||||
|
# Returns 1 if any critical dependency is missing
|
||||||
|
check_dependencies() {
|
||||||
|
local missing_deps=0
|
||||||
|
local missing_list=""
|
||||||
|
|
||||||
|
# Critical binaries required for script operation
|
||||||
|
local required_binaries=(
|
||||||
|
"mysqld:MySQL server daemon (required to start second instance)"
|
||||||
|
"mysql:MySQL client (required for database queries)"
|
||||||
|
"mysqldump:MySQL backup tool (required to create SQL dump)"
|
||||||
|
"mysqladmin:MySQL admin tool (required for shutdown)"
|
||||||
|
)
|
||||||
|
|
||||||
|
print_info "Verifying required dependencies..."
|
||||||
|
|
||||||
|
for bin_info in "${required_binaries[@]}"; do
|
||||||
|
local bin="${bin_info%:*}"
|
||||||
|
local description="${bin_info#*:}"
|
||||||
|
|
||||||
|
# Try to find the binary
|
||||||
|
if ! command -v "$bin" &> /dev/null; then
|
||||||
|
print_error " Missing: $bin - $description"
|
||||||
|
missing_deps=$((missing_deps + 1))
|
||||||
|
missing_list="$missing_list - $bin\n"
|
||||||
|
else
|
||||||
|
print_success " Found: $bin"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$missing_deps" -gt 0 ]; then
|
||||||
|
echo ""
|
||||||
|
print_error "MISSING $missing_deps REQUIRED DEPENDENCY/IES"
|
||||||
|
echo ""
|
||||||
|
echo "Please install the following packages:"
|
||||||
|
echo -e "$missing_list"
|
||||||
|
echo ""
|
||||||
|
echo "On CentOS/RHEL: yum install mysql mysql-server"
|
||||||
|
echo "On Debian/Ubuntu: apt-get install mysql-client mysql-server"
|
||||||
|
echo "On AlmaLinux: dnf install mysql mysql-server"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_success "All required dependencies found"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# UTILITY FUNCTIONS
|
# UTILITY FUNCTIONS
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -1839,6 +1890,13 @@ step5_create_dump() {
|
|||||||
# creates SQL dump, and provides usage instructions
|
# creates SQL dump, and provides usage instructions
|
||||||
# Handles errors and signal interrupts with proper cleanup
|
# Handles errors and signal interrupts with proper cleanup
|
||||||
main() {
|
main() {
|
||||||
|
# CRITICAL: Check all required dependencies before proceeding
|
||||||
|
if ! check_dependencies; then
|
||||||
|
press_enter
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
show_intro
|
show_intro
|
||||||
echo -n "Continue? (y/n, or 0 to cancel): "
|
echo -n "Continue? (y/n, or 0 to cancel): "
|
||||||
read -r start
|
read -r start
|
||||||
|
|||||||
Reference in New Issue
Block a user