#!/usr/bin/python
# coding: utf8

# spm, simple postgres manager

import os
import sys

import libspm


pguser = os.environ.get("SPM_PGUSER")

help = """usage: spm <command> [...]

commands:
    createdb <db>
    createuser <user> <passwd>
    grantall <user> <db>
    sql [<sql commands>]
    psql [psql args]"""

try:
    cmd = sys.argv[1]
except IndexError:
    print help
    exit()

if cmd == "createdb":
    try:
        dbname = sys.argv[2]
    except IndexError:
        print help
        exit()
    libspm.sql("CREATE DATABASE %s WITH ENCODING 'UTF8' LC_COLLATE = 'en_US.UTF8' LC_CTYPE = 'en_US.UTF8' TEMPLATE template0;"%dbname, pguser)
elif cmd == "createuser":
    try:
        username = sys.argv[2]
        passwd = sys.argv[3]
    except IndexError:
        print help
        exit()
    os.system("su -c \"useradd %s -s /bin/bash -d /var/lib/postgresql\""%username)
    os.system("echo '%s\n%s' | su -c \"passwd %s > /dev/null 2> /dev/null\""%(passwd, passwd, username))
    libspm.sql("CREATE USER %s WITH PASSWORD '%s';"%(username, passwd), pguser)
elif cmd == "dropdb":
    try:
        dbname = sys.argv[2]
    except IndexError:
        print help
        exit()
    libspm.sql("DROP DATABASE %s"%dbname)
elif cmd == "grantall":
    try:
        username = sys.argv[2]
        dbname = sys.argv[3]
    except IndexError:
        print help
        exit()
    libspm.sql("GRANT ALL PRIVILEGES ON DATABASE %s to %s;"%(dbname, username), pguser)
elif cmd == "psql":
    str_args = " ".join(sys.argv[2:])
    libspm.psql(str_args, pguser)
elif cmd == "sql":
    str_sql = " ".join(sys.argv[2:])
    libspm.sql(str_sql, pguser)
else:
    print help
