Commit b8cc4fc1e94710f383afba46a84cb4032f7100b9
1 parent
c0e71352
Exists in
master
and in
28 other branches
Avoid enabling plugins with missing dependencies
Showing
1 changed file
with
20 additions
and
5 deletions
Show diff stats
script/noosfero-plugins
| ... | ... | @@ -72,11 +72,26 @@ _enable(){ |
| 72 | 72 | if [ -h "$target" ]; then |
| 73 | 73 | _say "$plugin already enabled" |
| 74 | 74 | else |
| 75 | - ln -s "$source" "$target" | |
| 76 | - plugins_public_dir="$NOOSFERO_DIR/public/plugins" | |
| 77 | - test -d "$target/public/" && ln -s "$target/public" "$plugins_public_dir/$plugin" | |
| 78 | - _say "$plugin enabled" | |
| 79 | - needs_migrate=true | |
| 75 | + if [ ! -d "$source" ]; then | |
| 76 | + echo "E: $plugin plugin does not exist!" | |
| 77 | + return | |
| 78 | + fi | |
| 79 | + dependencies_ok=true | |
| 80 | + dependencies_file="$source/dependencies.rb" | |
| 81 | + if [ -e "$dependencies_file" ]; then | |
| 82 | + if ! "$NOOSFERO_DIR"/script/runner "require '$dependencies_file'"; then | |
| 83 | + dependencies_ok=false | |
| 84 | + fi | |
| 85 | + fi | |
| 86 | + if [ "$dependencies_ok" = true ]; then | |
| 87 | + ln -s "$source" "$target" | |
| 88 | + plugins_public_dir="$NOOSFERO_DIR/public/plugins" | |
| 89 | + test -d "$target/public/" && ln -s "$target/public" "$plugins_public_dir/$plugin" | |
| 90 | + _say "$plugin enabled" | |
| 91 | + needs_migrate=true | |
| 92 | + else | |
| 93 | + echo "W: failed to load dependencies for $plugin; not enabling" | |
| 94 | + fi | |
| 80 | 95 | fi |
| 81 | 96 | } |
| 82 | 97 | ... | ... |