Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F84165034
pleroma_ctl
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
4 KB
Referenced Files
None
Subscribers
None
pleroma_ctl
View Options
#!/bin/sh
# XXX: This should be removed when elixir's releases get custom command support
detect_flavour
()
{
arch
=
"
$(
uname -m
)
"
if
[
"
$arch
"
=
"x86_64"
]
;
then
arch
=
"amd64"
elif
[
"
$arch
"
=
"armv7l"
]
;
then
arch
=
"arm"
elif
[
"
$arch
"
=
"aarch64"
]
;
then
arch
=
"arm64"
else
echo
"Unsupported arch:
$arch
"
>
&
2
exit
1
fi
if
getconf GNU_LIBC_VERSION >/dev/null
;
then
libc_postfix
=
""
elif
[
"
$(
ldd
2
>
&
1
|
head -c
9
)
"
=
"musl libc"
]
;
then
libc_postfix
=
"-musl"
elif
[
"
$(
find /lib/libc.musl*
|
wc -l
)
"
]
;
then
libc_postfix
=
"-musl"
else
echo
"Unsupported libc"
>
&
2
exit
1
fi
echo
"
$arch$libc_postfix
"
}
detect_branch
()
{
version
=
"
$(
cut -d
' '
-f2 <
"
$RELEASE_ROOT
"
/releases/start_erl.data
)
"
# 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
"stable"
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
"Can't detect the branch automatically, please specify it by using the --branch option."
>
&
2
exit
1
fi
}
update
()
{
set
-e
NO_RM
=
false
while
echo
"
$1
"
|
grep
"^-"
>/dev/null
;
do
case
"
$1
"
in
--zip-url
)
FULL_URI
=
"
$2
"
shift
2
;;
--no-rm
)
NO_RM
=
true
shift
;;
--flavour
)
FLAVOUR
=
"
$2
"
shift
2
;;
--branch
)
BRANCH
=
"
$2
"
shift
2
;;
--tmp-dir
)
TMP_DIR
=
"
$2
"
shift
2
;;
-*
)
echo
"invalid option:
$1
"
1
>
&
2
shift
;;
esac
done
RELEASE_ROOT
=
$(
dirname
"
$SCRIPTPATH
"
)
uri
=
"https://git.pleroma.social"
project_id
=
"2"
project_branch
=
"
${
BRANCH
:-$(
detect_branch
)
}
"
flavour
=
"
${
FLAVOUR
:-$(
detect_flavour
)
}
"
tmp
=
"
${
TMP_DIR
:-
/tmp
}
"
artifact
=
"
$tmp
/pleroma.zip"
full_uri
=
"
${
FULL_URI
:-
${
uri
}
/api/v4/projects/
${
project_id
}
/jobs/artifacts/
${
project_branch
}
/download?job=
${
flavour
}}
"
echo
"Downloading the artifact from
${
full_uri
}
to
${
artifact
}
"
curl
"
$full_uri
"
-o
"
${
artifact
}
"
echo
"Unpacking
${
artifact
}
to
${
tmp
}
"
unzip -q
"
$artifact
"
-d
"
$tmp
"
echo
"Copying files over to
$RELEASE_ROOT
"
if
[
"
$NO_RM
"
=
false
]
;
then
echo
"Removing files from the previous release"
rm -r
"
${
RELEASE_ROOT
:-
?
}
"
/*
fi
cp -rf
"
$tmp
/release"
/*
"
$RELEASE_ROOT
"
echo
"Removing temporary files"
rm -r
"
$tmp
/release"
rm
"
$artifact
"
echo
"Done! Please refer to the changelog/release notes for changes and update instructions"
set
+e
}
if
[
-z
"
$1
"
]
||
[
"
$1
"
=
"help"
]
;
then
# TODO: Just list the commands on `pleroma_ctl help` and output help for the individual command on `pleroma_ctl help $COMMAND`
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)
update [OPTIONS]
Update the instance.
Options:
--branch Update to a specified branch, instead of the latest version of the current one.
--flavour Update to a specified flavour (CPU architecture+libc), instead of the current one.
--zip-url Get the release from a specified url. If set, renders the previous 2 options inactive.
--no-rm Do not erase previous release's files.
--tmp-dir Download the temporary files to a specified directory.
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
=
$(
realpath
"
$0
"
)
SCRIPTPATH
=
$(
dirname
"
$SCRIPT
"
)
FULL_ARGS
=
"
$*
"
ACTION
=
"
$1
"
if
[
$#
-gt
0
]
;
then
shift
fi
echo
"
$1
"
|
grep
"^-"
>/dev/null
if
[
$?
-eq
1
]
;
then
SUBACTION
=
"
$1
"
if
[
$#
-gt
0
]
;
then
shift
fi
fi
if
[
"
$ACTION
"
=
"update"
]
;
then
update
"
$@
"
elif
[
"
$ACTION
"
=
"migrate"
]
||
[
"
$ACTION
"
=
"rollback"
]
||
[
"
$ACTION
"
=
"create"
]
||
[
"
$ACTION
$SUBACTION
"
=
"instance gen"
]
||
[
"
$PLEROMA_CTL_RPC_DISABLED
"
=
true
]
;
then
"
$SCRIPTPATH
"
/pleroma
eval
'Pleroma.ReleaseTasks.run("'
"
$FULL_ARGS
"
'")'
else
"
$SCRIPTPATH
"
/pleroma rpc
'Pleroma.ReleaseTasks.run("'
"
$FULL_ARGS
"
'")'
fi
fi
File Metadata
Details
Attached
Mime Type
text/x-shellscript
Expires
Thu, Jun 4, 6:32 PM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1537654
Default Alt Text
pleroma_ctl (4 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment