e0e6d1b5af867bfae4b44c4ccf68c4b3a2c5ac82
2 # XXX: This should be removed when elixir's releases get custom command support
7 if grep -qe "VERSION_CODENAME=jammy" /etc
/os
-release; then
8 echo "$arch-ubuntu-jammy"
10 if getconf GNU_LIBC_VERSION
>/dev
/null
; then
12 elif [ "$(ldd 2>&1 | head -c 9)" = "musl libc" ]; then
14 elif [ "$(find /lib/libc.musl* | wc -l)" ]; then
17 echo "Unsupported libc" >&2
21 echo "$arch$libc_postfix"
26 version
="$(cut -d' ' -f2 <"$RELEASE_ROOT"/releases/start_erl.data)"
27 # Expected format: major.minor.patch_version(-number_of_commits_ahead_of_tag-gcommit_hash).branch
28 branch
="$(echo "$version" | cut -d'.' -f 4)"
29 if [ "$branch" = "develop" ]; then
31 elif [ "$branch" = "" ]; then
34 # Note: branch name in version is of SemVer format and may only contain [0-9a-zA-Z-] symbols —
35 # if supporting releases for more branches, need to ensure they contain only these symbols.
36 echo "Can't detect the branch automatically, please specify it by using the --branch option." >&2
44 while echo "$1" | grep "^-" >/dev
/null
; do
67 echo "invalid option: $1" 1>&2
73 RELEASE_ROOT
=$(dirname "$SCRIPTPATH")
74 uri
="https://akkoma-updates.s3-website.fr-par.scw.cloud"
76 project_branch
="${BRANCH:-$(detect_branch)}"
77 flavour
="${FLAVOUR:-$(detect_flavour)}"
78 tmp
="${TMP_DIR:-/tmp}"
79 artifact
="$tmp/pleroma.zip"
80 full_uri
="${FULL_URI:-${uri}/${project_branch}/akkoma-${flavour}}.zip"
81 echo "Downloading the artifact from ${full_uri} to ${artifact}"
82 curl
"$full_uri" -o "${artifact}"
83 echo "Unpacking ${artifact} to ${tmp}"
84 unzip -q "$artifact" -d "$tmp"
85 echo "Backing up erlang cookie"
86 erlang_cookie
=$(cat $RELEASE_ROOT/releases/COOKIE)
87 echo "Cookie: $erlang_cookie"
88 echo "Copying files over to $RELEASE_ROOT"
89 if [ "$NO_RM" = false
]; then
90 echo "Removing files from the previous release"
91 rm -r "${RELEASE_ROOT:-?}"/*
93 cp -rf "$tmp/release"/* "$RELEASE_ROOT"
94 echo "Removing temporary files"
97 echo "Restoring erlang cookie"
98 echo $erlang_cookie > $RELEASE_ROOT/releases
/COOKIE
99 echo "Done! Please refer to the changelog/release notes for changes and update instructions"
100 echo "You probably also want to update your frontend!"
104 if [ -z "$1" ] || [ "$1" = "help" ]; then
105 # TODO: Just list the commands on `pleroma_ctl help` and output help for the individual command on `pleroma_ctl help $COMMAND`
106 echo "Usage: $(basename "$0") COMMAND [ARGS]
108 The known commands are:
111 Create database schema (needs to be executed only once)
114 Execute database migrations (needs to be done after updates)
117 Rollback database migrations (needs to be done before downgrading)
123 --branch Update to a specified branch, instead of the latest version of the current one.
124 --flavour Update to a specified flavour (CPU architecture+libc), instead of the current one.
125 --zip-url Get the release from a specified url. If set, renders the previous 2 options inactive.
126 --no-rm Do not erase previous release's files.
127 --tmp-dir Download the temporary files to a specified directory.
129 and any mix tasks under Pleroma namespace, for example \`mix pleroma.user COMMAND\` is
130 equivalent to \`$(basename "$0") user COMMAND\`
132 By default pleroma_ctl will try calling into a running instance to execute non migration-related commands,
133 if for some reason this is undesired, set PLEROMA_CTL_RPC_DISABLED environment variable.
137 SCRIPT
=$(readlink -f "$0")
138 SCRIPTPATH
=$(dirname "$SCRIPT")
143 if [ $# -gt 0 ]; then
146 echo "$1" | grep "^-" >/dev
/null
147 if [ $?
-eq 1 ]; then
149 if [ $# -gt 0 ]; then
154 if [ "$ACTION" = "update" ]; then
156 elif [ "$ACTION" = "migrate" ] || [ "$ACTION" = "rollback" ] || [ "$ACTION" = "create" ] || [ "$ACTION $SUBACTION" = "instance gen" ] || [ "$PLEROMA_CTL_RPC_DISABLED" = true
]; then
157 "$SCRIPTPATH"/pleroma
eval 'Pleroma.ReleaseTasks.run("'"$FULL_ARGS"'")'
159 "$SCRIPTPATH"/pleroma rpc
'Pleroma.ReleaseTasks.run("'"$FULL_ARGS"'")'