47 lines
1.3 KiB
Python

uberspaceify = repo.libs.uberspace.Uberspaceify(node)
directories = uberspaceify.directories({
f'/home/{node.username}/.config/cron.d': {
"purge": True,
},
})
crontab_files = {}
for crontab_name, crontab_line in node.metadata.get("cron/jobs", {}).items():
crontab_files[f'/home/{node.username}/.config/cron.d/{crontab_name}'] = {
"content": crontab_line + "\n",
}
files = uberspaceify.files({
f'/home/{node.username}/bin/crontab-dir-generate-crontab': {
"source": "crontab-dir-generate-crontab.sh",
"mode": "0750",
},
f'/home/{node.username}/bin/crontab-dir-is-sync': {
"source": "crontab-dir-is-sync.sh",
"mode": "0750",
"needs": [
f'file:/home/{node.username}/bin/crontab-dir-generate-crontab',
],
},
f'/home/{node.username}/bin/crontab-dir-update': {
"source": "crontab-dir-update.sh",
"mode": "0750",
"needs": [
f'file:/home/{node.username}/bin/crontab-dir-generate-crontab',
],
},
**crontab_files,
})
actions = {
"update_crontab": {
"command": 'crontab-dir-update',
"unless": 'crontab-dir-is-sync',
"needs": [
f'file:/home/{node.username}/bin/crontab-dir-update',
f'file:/home/{node.username}/bin/crontab-dir-is-sync',
],
},
}