from fabric import task
from path import Path
import click


def get_git_cmd():
    p = Path(__file__)
    return f'sudo -u {p.owner} git '


@task(name="git:status")
def git_status(c):
    git_cmd = get_git_cmd()
    status = c.run(git_cmd + 'status')
    if "is up to date" in status.stdout.splitlines()[1]:
        click.echo(click.style('\nTodo OK.', fg='green'))
    else:
        click.echo(click.style('\nEjecuta fab git:up para subir todo.\n Si lo acabas de hacer puede haber un problema.', fg='yellow'))

@task(name="git:up")
def git_up(c):
    git_cmd = get_git_cmd()
    status = c.run(git_cmd + 'status')
    if "is up to date" in status.stdout.splitlines()[1] and "Untracked" not in status.stdout:
        click.echo(click.style('\nTodo OK.', fg='green'))
        click.echo(click.style('\nEjecuta fab git:status para asegurarte.', fg='cyan'))
    elif click.confirm('Continuamos?'):
        c.run(git_cmd + 'add --all')
        c.run(git_cmd + 'add *')
        c.run(git_cmd + 'commit -a -m "Last auto changes"')
        c.run(git_cmd + 'push')
        click.echo('Subido!')
        c.run("fab git:status")
