Archived
1
0
Fork 0

feat: starter

Signed-off-by: xtex <xtexchooser@duck.com>
This commit is contained in:
xtex 2023-11-11 21:53:06 +08:00
parent 33609b5bc8
commit ecfb696097
Signed by: xtex
GPG key ID: B918086ED8045B91
5 changed files with 55 additions and 59 deletions

View file

@ -6,5 +6,5 @@ insert_final_newline = true
indent_style = space
indent_size = 4
[/start]
[{/start,/config/start.sh}]
end_of_line = lf

1
.gitignore vendored
View file

@ -2,6 +2,7 @@
__pycache__/
config/*.cfg
config/*.toml
config/*.sh
.idea
.vscode
assets/mcversion.txt

View file

@ -251,7 +251,15 @@ async def _(msg: Bot.MessageSession):
if Info.subprocess:
rst = module('restart', developers=['OasisAkari'], required_superuser=True, base=True)
rst = module(
'restart',
alias=[
'update',
'update&restart',
'u&r'],
developers=['OasisAkari'],
required_superuser=True,
base=True)
def restart():
sys.exit(233)
@ -293,55 +301,6 @@ if Info.subprocess:
write_version_cache(msg)
restart()
upd = module('update', developers=['OasisAkari'], required_superuser=True, base=True)
def pull_repo():
return os.popen('git pull', 'r').read()[:-1]
def update_dependencies():
poetry_install = os.popen('poetry install').read()[:-1]
if poetry_install != '':
return poetry_install
pip_install = os.popen('pip install -r requirements.txt').read()[:-1]
if len(pip_install) > 500:
return '...' + pip_install[-500:]
return
@upd.handle()
async def update_bot(msg: Bot.MessageSession):
await msg.send_message(msg.locale.t("core.message.confirm"))
confirm = await msg.wait_confirm()
if confirm:
pull_repo_result = pull_repo()
if pull_repo_result != '':
await msg.send_message(pull_repo_result)
await msg.send_message(update_dependencies())
else:
await msg.finish(msg.locale.t("core.message.update.failed"))
if Info.subprocess:
upds = module('update&restart', developers=['OasisAkari'], required_superuser=True, alias='u&r', base=True)
@upds.handle()
async def update_and_restart_bot(msg: Bot.MessageSession):
await msg.send_message(msg.locale.t("core.message.confirm"))
confirm = await msg.wait_confirm()
if confirm:
restart_time.append(datetime.now().timestamp())
await wait_for_restart(msg)
write_version_cache(msg)
pull_repo_result = pull_repo()
if pull_repo_result != '':
await msg.send_message(pull_repo_result)
await msg.send_message(update_dependencies())
else:
await msg.send_message(msg.locale.t("core.message.update.failed"))
restart()
if Bot.FetchTarget.name == 'QQ':
resume = module('resume', developers=['OasisAkari'], required_base_superuser=True)

47
start
View file

@ -1,3 +1,44 @@
#!/usr/bin/env sh
export PYTHONPATH=$PYTHONPATH:$(pwd)
poetry run python bot.py
#!/usr/bin/env bash
# shellcheck source=/dev/null
[[ "$VIRTUAL_ENV" == "" ]] && source venv/bin/activate
source config/start.sh
while true; do
git fetch origin master
git reset --hard origin/master
curl -sS "$HEALTHCHECKS_URL"
timeout --preserve-status --signal=ABRT --verbose --kill-after=5s 5m pip3 install -r requirements.txt
timeout --preserve-status --signal=QUIT --verbose --kill-after=30s 1h python3 -m bots.matrix.bot
echo "Auto merging upstream"
headCommit="$(git rev-parse HEAD)"
curl -sS "$HEALTHCHECKS_URL_AUTOMERGE/start"
git pull --all --prune
git fetch https://github.com/Teahouse-Studios/akari-bot.git master
git merge \
-c user.email="bot-exozyme-akaribot@xtexx.eu.org" \
-c user.name="Akari Bot @ exozy.me" \
--no-edit -m "Merge upstream" \
--signoff --no-stat --no-squash \
MERGE_HEAD
if [[ -e ".git/MERGE_HEAD" ]]; then
echo "Failed to auto-merge"
git merge --abort
fi
if [[ "$headCommit" != "$(git rev-parse HEAD)" ]]; then
echo "Testing auto-merged code"
{
set -xe
timeout --preserve-status --signal=ABRT --verbose --kill-after=5s 3m pip3 install -r requirements.txt
timeout --preserve-status --signal=QUIT --verbose --kill-after=5s 1m python3 -m bots.matrix.bot
git push
}
curl -sS --retry 3 "$HEALTHCHECKS_URL_AUTOMERGE/$?"
else
echo "Nothing is merged"
curl -sS --retry 3 "$HEALTHCHECKS_URL_AUTOMERGE"
fi
done

View file

@ -1,5 +0,0 @@
chcp 65001
set PYTHONIOENCODING=utf-8
set PYTHONPATH=%~dp0
poetry run python bot.py