448d739b25
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
27 lines
1.1 KiB
Bash
Executable file
27 lines
1.1 KiB
Bash
Executable file
#!/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]
|
|
|
|
The known commands are:
|
|
|
|
create Create database schema (needs to be executed only once)
|
|
migrate Execute database migrations (needs to be done after updates)
|
|
rollback [VERSION] Rollback database migrations (needs to be done before downgrading)
|
|
|
|
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")
|
|
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
|