vade-cli 0.1.0

A command-line tool to deploy applications on Linux servers
###
# Sanity checks
###

# The app's username must not conflict with a pre-existing, unmanaged user
# (the user is considered unmanaged if the app's home directory doesn't exist)
if "{{ vade.app.username }}" in host.get_fact(Users) and not host.get_fact(Directory, path="{{ vade.internal.app.paths.home }}"):
    raise DeployError(
        "Your application's name (`{{ vade.app.username }}`) conflicts with an existing user on the "
        "system. Please choose a different one and try again."
    )

###
# Initialize application
###

server.user(
    name="Ensure app user exists",
    user="{{ vade.app.username }}",
    system=True,
    ensure_home=False,
)

files.directory(
    name="Ensure app directory exists",
    path="{{ vade.internal.app.paths.home }}",
    user="{{ vade.app.username }}",
    group="{{ vade.app.username }}",
    mode="755",
)

files.directory(
    name="Ensure storage directory exists",
    path="{{ vade.app.paths.storage }}",
    user="{{ vade.app.username }}",
    group="{{ vade.app.username }}",
    mode="700",
)

files.file(
    name="Ensure secrets file exists",
    path="{{ vade.app.paths.secrets }}",
    user="root",
    group="root",
    mode="600",
)