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 deletion
This commit is contained in:
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
|
||||
|
Loading…
Reference in New Issue
Block a user