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',
        ],
    },
}