feat: container setup prep test
This commit is contained in:
parent
5da79ac854
commit
175d590778
15 changed files with 125 additions and 33 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -1,4 +1,2 @@
|
|||
config.ini
|
||||
.venv
|
||||
.vscode
|
||||
*.log
|
||||
/config.json
|
||||
/data/
|
||||
|
|
29
bin/kruhobot
Normal file
29
bin/kruhobot
Normal file
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env python3
|
||||
import json
|
||||
from discord.ext import commands
|
||||
import logging
|
||||
import os
|
||||
|
||||
|
||||
LOG_FOLDER = os.environ.get("KRUHOBOT_LOG", '.')
|
||||
CONFIG_FOLDER = os.environ.get("KRUHOBOT_ETC", '.')
|
||||
|
||||
|
||||
logger = logging.getLogger('kruhobot')
|
||||
logger.setLevel(logging.INFO)
|
||||
handler = logging.FileHandler(filename=os.path.join(LOG_FOLDER, 'kruhobot.log'), encoding='utf-8', mode='w')
|
||||
handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s'))
|
||||
logger.addHandler(handler)
|
||||
|
||||
with open(os.path.join(CONFIG_FOLDER, 'config.json'), 'r', encoding='utf-8') as f:
|
||||
config = json.load(f)
|
||||
|
||||
bot = commands.Bot()
|
||||
bot.load_extension('kruhobot.cogs.auth')
|
||||
bot.load_extension('kruhobot.cogs.utils')
|
||||
|
||||
@bot.listen('on_interaction')
|
||||
async def statistics(interaction):
|
||||
logger.info(f"{interaction.user} ({interaction.user.id}) used command {interaction.data['name']}.")
|
||||
|
||||
bot.run(config["token"])
|
|
@ -1,5 +1,11 @@
|
|||
progress "Installing matfyz-help discord bot"
|
||||
|
||||
install-pkgs python3-venv
|
||||
echo "Creating virtual environment"
|
||||
|
||||
# Do stuff??
|
||||
install-pkgs python3-venv
|
||||
python3 -m venv /srv/kruhobot
|
||||
. /srv/kruhobot/bin/activate
|
||||
|
||||
echo "Installing package"
|
||||
cd /build/src
|
||||
pip install .
|
||||
|
|
16
cobuild/010-service.d/kruhobot.service
Normal file
16
cobuild/010-service.d/kruhobot.service
Normal file
|
@ -0,0 +1,16 @@
|
|||
[Unit]
|
||||
Description="Kruhobot"
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
ExecStartPre=mkdir -p /data/kruhobot
|
||||
ExecStart=/srv/kruhobot/bin/kruhobot
|
||||
Environment=KRUHOBOT_DATA=/data/kruhobot
|
||||
Environment=KRUHOBOT_ETC=/data/kruhobot
|
||||
Environment=KRUHOBOT_LOG=/data/log
|
||||
Restart=on-failure
|
||||
RestartSec=5min
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
4
cobuild/010-service.d/run.sh
Normal file
4
cobuild/010-service.d/run.sh
Normal file
|
@ -0,0 +1,4 @@
|
|||
progress "Configuring kruhobot.service"
|
||||
|
||||
install-config kruhobot.service /etc/systemd/system/
|
||||
systemctl enable kruhobot
|
|
@ -1 +1,4 @@
|
|||
FROM docker://registry.ks.matfyz.cz/gimli/base:bookworm
|
||||
FROM docker://registry.ks.matfyz.cz/gimli/base:bookworm
|
||||
COPY bin /build/src/bin
|
||||
COPY kruhobot /build/src/kruhobot
|
||||
COPY setup.py /build/src
|
||||
|
|
10
cobuild/try
10
cobuild/try
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
#!/bin/bash
|
||||
set -e
|
||||
common/build cobuild --tag matfyz-help-bot-test
|
||||
podman rm -if matfyz-help-bot-test
|
||||
podman create --name matfyz-help-bot-test --hostname matfyz-help-bot-test matfyz-help-bot-test
|
||||
podman start matfyz-help-bot-test
|
||||
common/build cobuild --tag kruhobot-test
|
||||
podman rm -if kruhobot-test
|
||||
podman create --name kruhobot-test --hostname kruhobot-test kruhobot-test
|
||||
podman start kruhobot-test
|
||||
|
|
21
common/build
21
common/build
|
@ -1,30 +1,18 @@
|
|||
#!/usr/bin/env bash
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
gen-init ()
|
||||
{
|
||||
echo "COPY common /build/common"
|
||||
}
|
||||
|
||||
gen-cleanup ()
|
||||
{
|
||||
echo "RUN rm -rf /build /data"
|
||||
}
|
||||
|
||||
gen-docker-file ()
|
||||
{
|
||||
if [ -f $src/Dockerfile.top ] ; then
|
||||
cat $src/Dockerfile.top
|
||||
gen-init
|
||||
fi
|
||||
|
||||
echo "COPY common /build/common"
|
||||
|
||||
for stage in $(cd $src && echo [0-9]*.[a-z]*) ; do
|
||||
case $stage in
|
||||
*.docker)
|
||||
cat $src/$stage
|
||||
if grep -wq '^FROM' $src/$stage ; then
|
||||
gen-init
|
||||
fi
|
||||
;;
|
||||
*.d|*.sh)
|
||||
echo "COPY $src/$stage /build/$stage"
|
||||
|
@ -41,7 +29,7 @@ gen-docker-file ()
|
|||
cat $src/Dockerfile.bottom
|
||||
fi
|
||||
|
||||
gen-cleanup
|
||||
echo "RUN rm -rf /build /data"
|
||||
}
|
||||
|
||||
if [ $# = 0 ] ; then
|
||||
|
@ -75,6 +63,7 @@ mkdir -p $CACHE_DIR/download
|
|||
|
||||
gen-docker-file | podman build \
|
||||
--file - \
|
||||
--layers \
|
||||
--http-proxy \
|
||||
--volume=$CACHE_DIR:/root/.cache \
|
||||
"$@" \
|
||||
|
|
|
@ -138,7 +138,7 @@ download ()
|
|||
echo "Using cached $DEST"
|
||||
else
|
||||
echo "Downloading $URL with caching"
|
||||
curl -L $URL >$CACHE/$DEST.tmp
|
||||
curl $URL >$CACHE/$DEST.tmp
|
||||
mv $CACHE/$DEST.tmp $CACHE/$DEST
|
||||
fi
|
||||
ln -s $CACHE/$DEST .
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[ROK]
|
||||
server_ID = 111
|
||||
kruh-XX = 6
|
7
config.example.json
Normal file
7
config.example.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"server_ID": 0,
|
||||
"bot_token": "token",
|
||||
"kruhove_role": {
|
||||
"kruh-XX": 0
|
||||
}
|
||||
}
|
6
kruhobot/cogs/auth.py
Normal file
6
kruhobot/cogs/auth.py
Normal file
|
@ -0,0 +1,6 @@
|
|||
import discord
|
||||
from discord.ext import commands
|
||||
|
||||
|
||||
def setup(bot):
|
||||
...
|
19
kruhobot/cogs/utils.py
Normal file
19
kruhobot/cogs/utils.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
import discord
|
||||
from discord.ext import commands
|
||||
|
||||
|
||||
class Basic(commands.Cog):
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
|
||||
@discord.slash_command(description="Greets the world.")
|
||||
async def hello(self, ctx):
|
||||
await ctx.respond('Hello world!')
|
||||
|
||||
@discord.slash_command(description="Sends the bot's latency.")
|
||||
async def ping(self, ctx):
|
||||
await ctx.respond('My ping is {:.0f}ms'.format(self.bot.latency*1000), ephemeral=True)
|
||||
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Basic(bot))
|
|
@ -1 +1 @@
|
|||
discord==2.3.2
|
||||
py-cord
|
||||
|
|
18
setup.py
Normal file
18
setup.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
name='kruhobot',
|
||||
version='0.1',
|
||||
description='Discordový bot pro správu Kruhového serveru',
|
||||
packages=['kruhobot', 'kruhobot/cogs'],
|
||||
scripts=[
|
||||
'bin/kruhobot',
|
||||
],
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
install_requires=[
|
||||
'py-cord',
|
||||
],
|
||||
)
|
Loading…
Reference in a new issue