| #!/usr/bin/env bash | |
| # we want jruby-complete to take care of all things ruby | |
| unset GEM_HOME | |
| unset GEM_PATH | |
| JAVA_OPTS="-client -Xmx4096m -XX:ReservedCodeCacheSize=512m -XX:MetaspaceSize=1024m --add-modules java.se --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/javax.crypto=ALL-UNNAMED" | |
| # This code supports both: | |
| # ./go "namespace:task[--arg1,--arg2]" --rake-flag | |
| # ./go namespace:task --arg1 --arg2 -- --rake-flag | |
| # The first argument is always the Rake task name | |
| task="$1" | |
| shift | |
| # Initialize arrays for rake flags and task arguments | |
| rake_flags=() | |
| task_args=() | |
| # Arguments before -- are task arguments | |
| while [ $# -gt 0 ]; do | |
| if [ "$1" = "--" ]; then | |
| shift | |
| break | |
| fi | |
| task_args+=("$1") | |
| shift | |
| done | |
| # Remaining arguments are rake flags | |
| rake_flags=("$@") | |
| # If we have task args, format them | |
| if [ ${#task_args[@]} -gt 0 ]; then | |
| # Convert task args array to comma-separated string | |
| args=$(IFS=','; echo "${task_args[*]}") | |
| task="$task[$args]" | |
| echo "Executing rake task: $task" | |
| fi | |
| java $JAVA_OPTS -jar third_party/jruby/jruby-complete.jar -X-C -S rake $task "${rake_flags[@]}" |