Revert "Merge branch 'revert-4fabf83a' into 'develop'"
[akkoma] / rel / files / bin / pleroma_ctl
index 671fd3860b664ecda79f52a5a39dc135514eb50c..e731d20eb7e6ba27321d70d365870b96d930c4e1 100755 (executable)
@@ -2,7 +2,7 @@
 # XXX: This should be removed when elixir's releases get custom command support
 
 detect_flavour() {
-       arch="$(arch)"
+       arch="$(uname -m)"
        if [ "$arch" = "x86_64" ]; then
                arch="amd64"
        elif [ "$arch" = "armv7l" ]; then
@@ -30,12 +30,15 @@ detect_flavour() {
 
 detect_branch() {
        version="$(cut -d' ' -f2 <"$RELEASE_ROOT"/releases/start_erl.data)"
-       branch="$(echo "$version" | cut -d'-' -f 4)"
+       # Expected format: major.minor.patch_version(-number_of_commits_ahead_of_tag-gcommit_hash).branch
+       branch="$(echo "$version" | cut -d'.' -f 4)"
        if [ "$branch" = "develop" ]; then
                echo "develop"
        elif [ "$branch" = "" ]; then
                echo "master"
        else
+         # Note: branch name in version is of SemVer format and may only contain [0-9a-zA-Z-] symbols —
+         #   if supporting releases for more branches, need to ensure they contain only these symbols.
                echo "Releases are built only for master and develop branches" >&2
                exit 1
        fi
@@ -46,7 +49,7 @@ update() {
        uri="${PLEROMA_CTL_URI:-https://git.pleroma.social}"
        project_id="${PLEROMA_CTL_PROJECT_ID:-2}"
        project_branch="$(detect_branch)"
-       flavour="${PLEROMA_CTL_ARCH:-$(detect_flavour)}"
+       flavour="${PLEROMA_CTL_FLAVOUR:-$(detect_flavour)}"
        echo "Detected flavour: $flavour"
        tmp="${PLEROMA_CTL_TMP_DIR:-/tmp}"
        artifact="$tmp/pleroma.zip"
@@ -90,12 +93,12 @@ if [ -z "$1" ] || [ "$1" = "help" ]; then
          some files are stored inside of the release directories (although you really shouldn't store them
          there), or if you want to be able to quickly revert a broken update.
 
-         The script will try to detect your architecture and ABI automatically, but if it is wrong, you can
-         overwrite it by setting PLEROMA_CTL_ARCH to the desired architecture.
+         The script will try to detect your architecture and ABI and set a flavour automatically,
+         but if it is wrong, you can overwrite it by setting PLEROMA_CTL_FLAVOUR to the desired flavour.
 
          By default the artifact will be downloaded from https://git.pleroma.social for pleroma/pleroma (project id: 2)
          to /tmp/, you can overwrite these settings by setting PLEROMA_CTL_URI, PLEROMA_CTL_PROJECT_ID and PLEROMA_CTL_TMP_DIR
-         respectievly.
+         respectively.
 
 
     and any mix tasks under Pleroma namespace, for example \`mix pleroma.user COMMAND\` is
@@ -110,7 +113,7 @@ else
 
        if [ "$1" = "update" ]; then
                update "$2"
-       elif [ "$1" = "migrate" ] || [ "$1" = "rollback" ] || [ "$1" = "create" ] || [ -n "$PLEROMA_CTL_RPC_DISABLED" ]; then
+       elif [ "$1" = "migrate" ] || [ "$1" = "rollback" ] || [ "$1" = "create" ] || [ "$1 $2" = "instance gen" ] || [ -n "$PLEROMA_CTL_RPC_DISABLED" ]; then
                "$SCRIPTPATH"/pleroma eval 'Pleroma.ReleaseTasks.run("'"$*"'")'
        else
                "$SCRIPTPATH"/pleroma rpc 'Pleroma.ReleaseTasks.run("'"$*"'")'