Archived
2
0
Fork 0
forked from blallo/Feedati
This repository has been archived on 2024-10-31. You can view files and clone it, but cannot push or open issues or pull requests.
Feedati/dodo.py

102 lines
2.6 KiB
Python
Raw Normal View History

2018-08-09 10:34:34 +02:00
import subprocess
from doit.tools import LongRunning
from dodo_utils import wait_net_service, up2date_anyimages
COMPOSE = 'docker-compose -p feedati'
def task_build():
'''builda il container docker'''
return {
'uptodate': [up2date_anyimages],
'file_dep': ['docker-compose.yml', 'docker/Dockerfile-tt-rss'],
'actions': [COMPOSE + ' build'],
'clean': [remove_build],
}
def remove_build():
cmd = "docker container ls -a --format '{{.ID}}\t{{.Names}}'|" \
"awk '$2 ~ /feedati_/ { print $$1 }' | " \
"xargs -r docker container rm",
subprocess.check_call(cmd, shell=True)
def task_build_rm():
'''rimuove container avviati'''
return {'actions': [remove_build]}
def task_build_rmi():
'''rimuove immagini ottenute con build'''
return {
'actions': [
r"docker images |"
"awk '$1 ~ /^feedati\// { print $3 }' | xargs -r "
"docker rmi",
]
}
def task_dump_rm():
'''rimuove il dump caricato sul db'''
return {
'actions': [
"docker container ls -a --format '{{.ID}}\t{{.Names}}'|"
"awk '$2 ~ /^feedati_db { print $$1 }' | "
"xargs -r docker container rm",
"docker volume rm feedati_postgres_data || true",
]
}
def task_dump_load():
'''applica il dump sql al container del db'''
return {
'task_dep': ['dump_rm', 'build'],
'file_dep': ['docker/ttrss.sql'],
'actions': [
(COMPOSE + ' up -d db').split(),
r'docker cp ./docker/ttrss.sql '
'$(docker ps -qf name=feedati_db):/tmp/ttrss.sql',
(wait_net_service, ['localhost', 5432, 300]),
r'docker exec -t $(docker ps -qf name=feedati_db) '
'su -c "psql -d ttrss < /tmp/ttrss.sql" postgres',
'docker exec -t $(docker ps -qf name=feedati_db) '
'rm -f /tmp/ttrss.sql',
COMPOSE + ' stop',
]
}
def task_fix_perms():
'''fix permissions for shared www dir'''
return {
'actions': [
'chmod -R 777 tt-rss/feed-icons/ tt-rss/cache/ tt-rss/lock/'
.split()
]
}
def task_up():
return {
'task_dep': ['build', 'dump_load', 'fix_perms'],
'actions': [LongRunning(
(COMPOSE + ' up'),
shell=True)
]
}
def task_cleanall():
'''clean everything there is to clean'''
return {
'task_dep': ['build_rm', 'build_rmi', 'dump_rm'],
'actions': None
}