Fix code consistency and reliability issues
This commit addresses multiple code consistency and reliability issues across the codebase: 1. Version consistency - use package.json version (2.0.9) throughout 2. Improved module loading with better error handling and consistent symlinks 3. Enhanced data directory handling with better error checking 4. Fixed redundant code in main-installer.sh 5. Improved error handling in transmission-client.js 6. Added extensive module symlink creation 7. Better file path handling and permission checks 8. Enhanced API response handling 💡 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,49 +1,78 @@
|
||||
#!/bin/bash
|
||||
# Create bi-directional symlinks for module compatibility
|
||||
# Script to create symlinks for all modules in different naming styles
|
||||
# This ensures compatibility with different module import styles
|
||||
|
||||
MODULES_DIR="$(dirname "$(dirname "$0")")/modules"
|
||||
APP_DIR="$(dirname "$(dirname "$(readlink -f "$0")")")"
|
||||
MODULE_DIR="$APP_DIR/modules"
|
||||
|
||||
echo "Creating module symlinks in $MODULES_DIR..."
|
||||
echo "Creating module symlinks for compatibility..."
|
||||
echo "Module directory: $MODULE_DIR"
|
||||
|
||||
# Check if modules directory exists
|
||||
if [ ! -d "$MODULES_DIR" ]; then
|
||||
echo "Error: Modules directory not found: $MODULES_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create bidirectional symlinks
|
||||
create_bidirectional_links() {
|
||||
local hyphenated="$1"
|
||||
local camelCase="$2"
|
||||
|
||||
# Check if hyphenated version exists
|
||||
if [ -f "$MODULES_DIR/$hyphenated.js" ]; then
|
||||
# Create camelCase symlink
|
||||
ln -sf "$hyphenated.js" "$MODULES_DIR/$camelCase.js"
|
||||
echo "Created symlink: $camelCase.js -> $hyphenated.js"
|
||||
# Create a function to make bidirectional symlinks
|
||||
create_module_symlinks() {
|
||||
if [ -d "$MODULE_DIR" ]; then
|
||||
# Create symlinks for hyphenated modules
|
||||
for module in "$MODULE_DIR"/*-*.js; do
|
||||
if [ -f "$module" ]; then
|
||||
# Convert hyphenated to camelCase
|
||||
BASE_NAME=$(basename "$module")
|
||||
CAMEL_NAME=$(echo "$BASE_NAME" | sed -E 's/-([a-z])/\U\1/g')
|
||||
|
||||
# Create camelCase symlink if needed
|
||||
if [ ! -f "$MODULE_DIR/$CAMEL_NAME" ] && [ ! -L "$MODULE_DIR/$CAMEL_NAME" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$CAMEL_NAME"
|
||||
echo "Created symlink: $CAMEL_NAME -> $BASE_NAME"
|
||||
fi
|
||||
|
||||
# Create extension-less symlink for both versions
|
||||
NO_EXT_BASE="${BASE_NAME%.js}"
|
||||
if [ ! -f "$MODULE_DIR/$NO_EXT_BASE" ] && [ ! -L "$MODULE_DIR/$NO_EXT_BASE" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$NO_EXT_BASE"
|
||||
echo "Created symlink: $NO_EXT_BASE -> $BASE_NAME"
|
||||
fi
|
||||
|
||||
NO_EXT_CAMEL="${CAMEL_NAME%.js}"
|
||||
if [ ! -f "$MODULE_DIR/$NO_EXT_CAMEL" ] && [ ! -L "$MODULE_DIR/$NO_EXT_CAMEL" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$NO_EXT_CAMEL"
|
||||
echo "Created symlink: $NO_EXT_CAMEL -> $BASE_NAME"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Create symlinks without extension
|
||||
ln -sf "$hyphenated.js" "$MODULES_DIR/$hyphenated"
|
||||
ln -sf "$hyphenated.js" "$MODULES_DIR/$camelCase"
|
||||
echo "Created extension-less symlinks: $hyphenated, $camelCase -> $hyphenated.js"
|
||||
# Check if camelCase version exists
|
||||
elif [ -f "$MODULES_DIR/$camelCase.js" ]; then
|
||||
# Create hyphenated symlink
|
||||
ln -sf "$camelCase.js" "$MODULES_DIR/$hyphenated.js"
|
||||
echo "Created symlink: $hyphenated.js -> $camelCase.js"
|
||||
# Create symlinks for camelCase modules (only non-symlinked files)
|
||||
for module in "$MODULE_DIR"/[a-z]*[A-Z]*.js; do
|
||||
if [ -f "$module" ] && [ ! -L "$module" ]; then
|
||||
# Convert camelCase to hyphenated
|
||||
BASE_NAME=$(basename "$module")
|
||||
HYPHEN_NAME=$(echo "$BASE_NAME" | sed -E 's/([a-z])([A-Z])/\1-\L\2/g')
|
||||
|
||||
# Create hyphenated symlink if needed
|
||||
if [ ! -f "$MODULE_DIR/$HYPHEN_NAME" ] && [ ! -L "$MODULE_DIR/$HYPHEN_NAME" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$HYPHEN_NAME"
|
||||
echo "Created symlink: $HYPHEN_NAME -> $BASE_NAME"
|
||||
fi
|
||||
|
||||
# Create extension-less symlink for both versions
|
||||
NO_EXT_BASE="${BASE_NAME%.js}"
|
||||
if [ ! -f "$MODULE_DIR/$NO_EXT_BASE" ] && [ ! -L "$MODULE_DIR/$NO_EXT_BASE" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$NO_EXT_BASE"
|
||||
echo "Created symlink: $NO_EXT_BASE -> $BASE_NAME"
|
||||
fi
|
||||
|
||||
NO_EXT_HYPHEN="${HYPHEN_NAME%.js}"
|
||||
if [ ! -f "$MODULE_DIR/$NO_EXT_HYPHEN" ] && [ ! -L "$MODULE_DIR/$NO_EXT_HYPHEN" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$NO_EXT_HYPHEN"
|
||||
echo "Created symlink: $NO_EXT_HYPHEN -> $BASE_NAME"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Create symlinks without extension
|
||||
ln -sf "$camelCase.js" "$MODULES_DIR/$hyphenated"
|
||||
ln -sf "$camelCase.js" "$MODULES_DIR/$camelCase"
|
||||
echo "Created extension-less symlinks: $hyphenated, $camelCase -> $camelCase.js"
|
||||
echo "Module symlinks created successfully"
|
||||
else
|
||||
echo "Warning: Neither $hyphenated.js nor $camelCase.js exists in $MODULES_DIR"
|
||||
echo "Error: Module directory not found at $MODULE_DIR"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Create symlinks for all modules
|
||||
create_bidirectional_links "rss-feed-manager" "rssFeedManager"
|
||||
create_bidirectional_links "transmission-client" "transmissionClient"
|
||||
create_bidirectional_links "post-processor" "postProcessor"
|
||||
|
||||
echo "Module symlinks created successfully."
|
||||
# Execute the symlink creation function
|
||||
create_module_symlinks
|
||||
@@ -25,17 +25,25 @@ if [ ! -d "$DATA_DIR" ]; then
|
||||
fi
|
||||
|
||||
# Set permissions
|
||||
chmod -R 755 "$DATA_DIR"
|
||||
chmod -R 755 "$DATA_DIR" || {
|
||||
echo "Warning: Failed to set permissions on data directory"
|
||||
}
|
||||
|
||||
# Check for RSS files
|
||||
if [ ! -f "$DATA_DIR/rss-feeds.json" ]; then
|
||||
echo "Creating initial empty rss-feeds.json file"
|
||||
echo "[]" > "$DATA_DIR/rss-feeds.json"
|
||||
echo "[]" > "$DATA_DIR/rss-feeds.json" || {
|
||||
echo "ERROR: Failed to create rss-feeds.json file"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
if [ ! -f "$DATA_DIR/rss-items.json" ]; then
|
||||
echo "Creating initial empty rss-items.json file"
|
||||
echo "[]" > "$DATA_DIR/rss-items.json"
|
||||
echo "[]" > "$DATA_DIR/rss-items.json" || {
|
||||
echo "ERROR: Failed to create rss-items.json file"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# Find the node executable path
|
||||
@@ -57,12 +65,74 @@ if [ -z "$NODE_PATH" ]; then
|
||||
fi
|
||||
|
||||
# Create module symlinks to ensure compatibility
|
||||
if [ -f "$APP_DIR/scripts/create-module-links.sh" ]; then
|
||||
echo "Creating module symlinks for compatibility..."
|
||||
bash "$APP_DIR/scripts/create-module-links.sh"
|
||||
else
|
||||
echo "Warning: Module symlink script not found"
|
||||
fi
|
||||
echo "Creating module symlinks for compatibility..."
|
||||
MODULE_DIR="$APP_DIR/modules"
|
||||
|
||||
# Create a function to make bidirectional symlinks
|
||||
create_module_symlinks() {
|
||||
if [ -d "$MODULE_DIR" ]; then
|
||||
# Create symlinks for hyphenated modules
|
||||
for module in "$MODULE_DIR"/*-*.js; do
|
||||
if [ -f "$module" ]; then
|
||||
# Convert hyphenated to camelCase
|
||||
BASE_NAME=$(basename "$module")
|
||||
CAMEL_NAME=$(echo "$BASE_NAME" | sed -E 's/-([a-z])/\U\1/g')
|
||||
|
||||
# Create camelCase symlink if needed
|
||||
if [ ! -f "$MODULE_DIR/$CAMEL_NAME" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$CAMEL_NAME"
|
||||
echo "Created symlink: $CAMEL_NAME -> $BASE_NAME"
|
||||
fi
|
||||
|
||||
# Create extension-less symlink for both versions
|
||||
NO_EXT_BASE="${BASE_NAME%.js}"
|
||||
if [ ! -f "$MODULE_DIR/$NO_EXT_BASE" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$NO_EXT_BASE"
|
||||
echo "Created symlink: $NO_EXT_BASE -> $BASE_NAME"
|
||||
fi
|
||||
|
||||
NO_EXT_CAMEL="${CAMEL_NAME%.js}"
|
||||
if [ ! -f "$MODULE_DIR/$NO_EXT_CAMEL" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$NO_EXT_CAMEL"
|
||||
echo "Created symlink: $NO_EXT_CAMEL -> $BASE_NAME"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Create symlinks for camelCase modules
|
||||
for module in "$MODULE_DIR"/[a-z]*[A-Z]*.js; do
|
||||
if [ -f "$module" ]; then
|
||||
# Convert camelCase to hyphenated
|
||||
BASE_NAME=$(basename "$module")
|
||||
HYPHEN_NAME=$(echo "$BASE_NAME" | sed -E 's/([a-z])([A-Z])/\1-\L\2/g')
|
||||
|
||||
# Create hyphenated symlink if needed
|
||||
if [ ! -f "$MODULE_DIR/$HYPHEN_NAME" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$HYPHEN_NAME"
|
||||
echo "Created symlink: $HYPHEN_NAME -> $BASE_NAME"
|
||||
fi
|
||||
|
||||
# Create extension-less symlink for both versions
|
||||
NO_EXT_BASE="${BASE_NAME%.js}"
|
||||
if [ ! -f "$MODULE_DIR/$NO_EXT_BASE" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$NO_EXT_BASE"
|
||||
echo "Created symlink: $NO_EXT_BASE -> $BASE_NAME"
|
||||
fi
|
||||
|
||||
NO_EXT_HYPHEN="${HYPHEN_NAME%.js}"
|
||||
if [ ! -f "$MODULE_DIR/$NO_EXT_HYPHEN" ]; then
|
||||
ln -sf "$BASE_NAME" "$MODULE_DIR/$NO_EXT_HYPHEN"
|
||||
echo "Created symlink: $NO_EXT_HYPHEN -> $BASE_NAME"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "Warning: Module directory not found at $MODULE_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute the symlink creation function
|
||||
create_module_symlinks
|
||||
|
||||
# Start the application
|
||||
cd "$APP_DIR" || { echo "Failed to change to application directory"; exit 1; }
|
||||
|
||||
Reference in New Issue
Block a user