From e6dc635c0396b6eeb9f7fb6545d05b51cb456095 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 27 Jun 2025 21:14:14 -0400 Subject: [PATCH] updated completions for new plex commands; removed shellcheck backup file --- completions/env-backup-completion.bash | 0 plex/plex.sh | 4 + setup/run-docker-tests.sh.sc2086_backup | 240 ------------------------ 3 files changed, 4 insertions(+), 240 deletions(-) mode change 100644 => 100755 completions/env-backup-completion.bash delete mode 100755 setup/run-docker-tests.sh.sc2086_backup diff --git a/completions/env-backup-completion.bash b/completions/env-backup-completion.bash old mode 100644 new mode 100755 diff --git a/plex/plex.sh b/plex/plex.sh index dce238b..a0159b1 100755 --- a/plex/plex.sh +++ b/plex/plex.sh @@ -30,6 +30,10 @@ # ./plex.sh restart # Restart Plex service # ./plex.sh status # Show service status # ./plex.sh scan # Launch library scanner +# ./plex.sh repair # Repair Plex database issues +# ./plex.sh nuclear # Nuclear recovery mode +# ./plex.sh help # Show help menu +# ./plex.sh logs # Show recent logs # ./plex.sh # Interactive menu # # Dependencies: diff --git a/setup/run-docker-tests.sh.sc2086_backup b/setup/run-docker-tests.sh.sc2086_backup deleted file mode 100755 index 8c54e82..0000000 --- a/setup/run-docker-tests.sh.sc2086_backup +++ /dev/null @@ -1,240 +0,0 @@ -#!/bin/bash - -# Script to run setup tests in Docker containers -# This allows testing the setup process in isolated environments - -set -e # Exit on error - -# Colors for output -GREEN='\033[0;32m' -YELLOW='\033[0;33m' -RED='\033[0;31m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Check if Docker is installed and working -if ! command -v docker &> /dev/null; then - echo -e "${RED}Error: Docker is not installed. Please install Docker to run tests.${NC}" - exit 1 -fi - -# Create logs directory at the top level to ensure it exists -LOGS_DIR="$(pwd)/logs" -if [ ! -d "$LOGS_DIR" ]; then - echo -e "${YELLOW}Creating logs directory at: $LOGS_DIR${NC}" - mkdir -p "$LOGS_DIR" || { - echo -e "${RED}Failed to create logs directory! Check permissions.${NC}" - exit 1 - } -else - echo -e "${GREEN}Logs directory already exists at: $LOGS_DIR${NC}" -fi - -# Ensure the logs directory is writable -if [ ! -w "$LOGS_DIR" ]; then - echo -e "${YELLOW}Setting permissions on logs directory...${NC}" - chmod -R 755 "$LOGS_DIR" && \ - find "$LOGS_DIR" -type f -exec chmod 644 {} \; || { - echo -e "${RED}Failed to set write permissions on logs directory!${NC}" - exit 1 - } -fi - -# Create a test file to verify we can write to it -if touch "$LOGS_DIR/test_file" && rm "$LOGS_DIR/test_file"; then - echo -e "${GREEN}Log directory is writable and ready for use${NC}" -else - echo -e "${RED}Cannot write to logs directory even after setting permissions!${NC}" - exit 1 -fi - -# Check if Docker is running -if ! docker info &>/dev/null; then - echo -e "${YELLOW}Warning: Docker appears to be installed but not running or not properly configured.${NC}" - echo -e "${YELLOW}If using WSL2, ensure Docker Desktop is running with WSL integration enabled.${NC}" - echo -e "${YELLOW}Would you like to run the local test instead? [Y/n]${NC}" - read -r response - if [[ "$response" =~ ^([nN][oO]|[nN])$ ]]; then - echo -e "${RED}Exiting...${NC}" - exit 1 - else - echo -e "${BLUE}Running local test instead...${NC}" - ./test-setup.sh - exit $? - fi -fi - -# Build and run Ubuntu test container -run_ubuntu_test() { - echo -e "\n${BLUE}=== Running test in Ubuntu container ===${NC}" - # Create the logs directory if it doesn't exist - local log_dir="$(pwd)/logs" - mkdir -p "$log_dir" || true - - # Use sudo for chmod only if necessary - if [ ! -w "$log_dir" ]; then - echo -e "${YELLOW}Attempting to fix permissions with sudo...${NC}" - sudo chmod -R 755 "$log_dir" 2>/dev/null && \ - sudo find "$log_dir" -type f -exec chmod 644 {} \; 2>/dev/null || { - echo -e "${YELLOW}Could not change permissions with sudo, continuing anyway...${NC}" - } - fi - - echo -e "${YELLOW}Logs will be saved to: $log_dir${NC}" - echo -e "${YELLOW}Building Ubuntu test container...${NC}" - docker build --target ubuntu-test -t shell-test:ubuntu . - - echo -e "${GREEN}Running tests with package installation...${NC}" - - # Create a timestamp for this test run - TEST_TIMESTAMP=$(date +"%Y%m%d-%H%M%S") - echo -e "${YELLOW}Test run timestamp: $TEST_TIMESTAMP${NC}" - - # Run container with proper volume mount and add environment variable for timestamp - docker run --rm -it \ - -e TEST_TIMESTAMP="$TEST_TIMESTAMP" \ - -e CONTAINER_TYPE="ubuntu" \ - -v "$log_dir:/logs:z" \ - shell-test:ubuntu - - # Check if logs were created - if ls "$log_dir"/setup-test-*"$TEST_TIMESTAMP"* &>/dev/null 2>&1; then - echo -e "${GREEN}Test logs successfully created in host directory${NC}" - else - echo -e "${YELLOW}Warning: No log files found matching timestamp $TEST_TIMESTAMP${NC}" - echo -e "${YELLOW}This may indicate issues with volume mounting or permissions${NC}" - echo -e "${YELLOW}Contents of log directory:${NC}" - ls -la "$log_dir" || echo "Cannot list directory contents" - fi - - echo -e "${BLUE}Test completed. Check logs in $log_dir directory${NC}" -} - -# Build and run Debian test container -run_debian_test() { - echo -e "\n${BLUE}=== Running test in Debian container ===${NC}" - # Create the logs directory if it doesn't exist - local log_dir="$(pwd)/logs" - mkdir -p "$log_dir" || true - - # Use sudo for chmod only if necessary - if [ ! -w "$log_dir" ]; then - echo -e "${YELLOW}Attempting to fix permissions with sudo...${NC}" - sudo chmod -R 755 "$log_dir" 2>/dev/null && \ - sudo find "$log_dir" -type f -exec chmod 644 {} \; 2>/dev/null || { - echo -e "${YELLOW}Could not change permissions with sudo, continuing anyway...${NC}" - } - fi - - echo -e "${YELLOW}Logs will be saved to: $log_dir${NC}" - echo -e "${YELLOW}Building Debian test container...${NC}" - docker build --target debian-test -t shell-test:debian . - - echo -e "${GREEN}Running tests with package installation...${NC}" - - # Create a timestamp for this test run - TEST_TIMESTAMP=$(date +"%Y%m%d-%H%M%S") - echo -e "${YELLOW}Test run timestamp: $TEST_TIMESTAMP${NC}" - - # Run container with proper volume mount and add environment variable for timestamp - docker run --rm -it \ - -e TEST_TIMESTAMP="$TEST_TIMESTAMP" \ - -e CONTAINER_TYPE="debian" \ - -v "$log_dir:/logs:z" \ - shell-test:debian - - # Check if logs were created - if ls "$log_dir"/setup-test-*"$TEST_TIMESTAMP"* &>/dev/null 2>&1; then - echo -e "${GREEN}Test logs successfully created in host directory${NC}" - else - echo -e "${YELLOW}Warning: No log files found matching timestamp $TEST_TIMESTAMP${NC}" - echo -e "${YELLOW}This may indicate issues with volume mounting or permissions${NC}" - echo -e "${YELLOW}Contents of log directory:${NC}" - ls -la "$log_dir" || echo "Cannot list directory contents" - fi - - echo -e "${BLUE}Test completed. Check logs in $log_dir directory${NC}" -} - -# Full test with bootstrap script -run_full_test() { - local distro=$1 - local tag_name=$(echo $distro | sed 's/:/-/g') # Replace colon with hyphen for tag - echo -e "\n${BLUE}=== Running full bootstrap test in $distro container ===${NC}" - - # Create a Dockerfile for full test - cat > Dockerfile.fulltest < /etc/timezone \ - && apt-get update && apt-get install -y curl git sudo wget - -# Create a test user with sudo permissions -RUN useradd -ms /bin/bash testuser && \\ - echo "testuser ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/testuser - -# Create directory structure for setup files -RUN mkdir -p /home/testuser/shell - -# Copy test script for post-bootstrap validation -COPY --chown=testuser:testuser test-setup.sh /home/testuser/ - -# Copy entire repo structure to ensure we have all needed files -COPY --chown=testuser:testuser . /home/testuser/shell/ - -USER testuser -WORKDIR /home/testuser - -# Make the script executable -RUN chmod +x /home/testuser/test-setup.sh - -# Run tests before and after bootstrap to verify package installation -CMD ["/bin/bash", "-c", "echo -e '\\n\\nRunning pre-bootstrap tests...' && ./test-setup.sh && echo -e '\\n\\nRunning bootstrap...' && /home/testuser/shell/bootstrap.sh && echo -e '\\n\\nRunning post-bootstrap tests...' && ./test-setup.sh"] -EOF - - # Build and run the container - # Create the logs directory if it doesn't exist - mkdir -p "$(pwd)/logs" - docker build -f Dockerfile.fulltest -t shell-full-test:$tag_name . - docker run --rm -it -v "$(pwd)/logs:/logs" shell-full-test:$tag_name - - # Clean up - rm Dockerfile.fulltest -} - -# Parse command line arguments -case "$1" in - ubuntu) - run_ubuntu_test - ;; - debian) - run_debian_test - ;; - full-ubuntu) - run_full_test "ubuntu:24.04" - ;; - full-debian) - run_full_test "debian:12" - ;; - all) - run_ubuntu_test - run_debian_test - ;; - *) - echo -e "${BLUE}Shell Setup Test Runner${NC}" - echo -e "Usage: $0 [option]" - echo -e "\nOptions:" - echo " ubuntu Run test on Ubuntu container (tests packages and components)" - echo " debian Run test on Debian container (tests packages and components)" - echo " full-ubuntu Run full bootstrap test on Ubuntu container (performs complete installation)" - echo " full-debian Run full bootstrap test on Debian container (performs complete installation)" - echo " all Run tests on both Ubuntu and Debian containers (component tests only)" - echo -e "\nExamples:" - echo -e " $0 ubuntu # Quick test for package availability" - echo -e " $0 full-debian # Test complete bootstrap installation" - ;; -esac