pleroma_ctl: Run mix tasks using rpc instead of eval
This patch changes pleroma_ctl to call into a running instance instead of spinning up a new one for mix task execution. This significantly decreases the time needed for mix task execution (on my machine for `pleroma_ctl user set rin --no-admin` the difference is 0.2s vs 4.2s) and allows mix tasks to affect the instance context, for example, this allows to clear the cache after user deletiondevelop
parent
49a49d3763
commit
448d739b25
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# XXX: This should be removed when elixir's releases get custom command support
|
||||
if [ -z "$1" ] || [ "$1" = "help" ]; then
|
||||
echo "Usage: $(basename "$0") COMMAND [ARGS]
|
||||
echo "Usage: $(basename "$0") COMMAND [ARGS]
|
||||
|
||||
The known commands are:
|
||||
|
||||
|
@ -11,9 +11,16 @@ if [ -z "$1" ] || [ "$1" = "help" ]; then
|
|||
|
||||
and any mix tasks under Pleroma namespace, for example \`mix pleroma.user COMMAND\` is
|
||||
equivalent to \`$(basename "$0") user COMMAND\`
|
||||
|
||||
By default pleroma_ctl will try calling into a running instance to execute non migration-related commands,
|
||||
if for some reason this is undesired, set PLEROMA_CTL_RPC_DISABLED environment variable
|
||||
"
|
||||
else
|
||||
SCRIPT=$(readlink -f "$0")
|
||||
SCRIPTPATH=$(dirname "$SCRIPT")
|
||||
"$SCRIPTPATH"/pleroma eval 'Pleroma.ReleaseTasks.run("'"$*"'")'
|
||||
SCRIPT=$(readlink -f "$0")
|
||||
SCRIPTPATH=$(dirname "$SCRIPT")
|
||||
if [ "$1" = "migrate" ] || [ "$1" = "rollback" ] || [ "$1" = "create" ] || [ -n "$PLEROMA_CTL_RPC_DISABLED" ]; then
|
||||
"$SCRIPTPATH"/pleroma eval 'Pleroma.ReleaseTasks.run("'"$*"'")'
|
||||
else
|
||||
"$SCRIPTPATH"/pleroma rpc 'Pleroma.ReleaseTasks.run("'"$*"'")'
|
||||
fi
|
||||
fi
|
||||
|
|
Reference in New Issue