#!/usr/local/bin/python

import pickle
import random
import sys
import os

DRINKSFILE = '%s/drinksfile.pck' % os.getcwd()

def GetDrinks():
  """List drinks in the database
  
  Args:
    None
    
  Returns:
    drinkslist: ('drink', 'drink', ...)
  """

  try:
    drinkspickle = open(DRINKSFILE, 'r')
  except IOError:
    print 'Drinks file %s does not exist' % DRINKSFILE
    drinkslist = ['natural spring water']
    SaveDrinks(drinkslist)
    drinkspickle = open(DRINKSFILE, 'r')

  try:
    drinkslist = pickle.load(drinkspickle)
  except EOFError:
    print 'Drinks file %s is empty' % DRINKSFILE
    drinkslist = ['natural spring water']
    SaveDrinks(drinkslist)
  return drinkslist


def SaveDrinks(drinkslist):
  """Saves the drinks to the drinks file.

  Args:
    drinkslist: ['drink', 'drink'...]

  Returns:
    str: Success or failure message
  """

  drinkspickle = open(DRINKSFILE, 'w')
  pickle.dump(drinkslist,drinkspickle)
  drinkspickle.close()
  return 'Drinks list updated!'


def AddDrink(drink):
  """Add drinks to the database"""
  if len(drink) > 64:
    msg = 'Hmmm that drink name is rather long, isn\'t it?'
    return msg
  drinkslist = GetDrinks()
  drinkslist.append(drink)
  SaveDrinks(drinkslist)
  msg = 'Added %s to the database' % drink
  return msg


def PopDrink():
  """Pop the database, to remove the latest entry
  
  Args:
    None
    
  Returns:
    str: Success or failure message"""

  drinkslist = GetDrinks()
  try:
    drinkslist.pop()
    SaveDrinks(drinkslist)
    msg = 'Popped the database'
  except IndexError:
    msg = 'Unable to pop empty database'
  return msg


def DelDrink(drink):
  """Remove drinks from the database

  Args:
    drink: string

  Returns:
    str: Success or failure message
  """

  drinkslist = GetDrinks()
  try:
    drinkslist.remove(drink)
    msg = 'Removed %s from the database' % drink
  except ValueError:
    msg = '%s is not in the database' % drink
  SaveDrinks(drinkslist)
  return msg


def ServeDrink(nick):
  """Serve the drinks!

  Args:
    nick: string

  Returns:
    str: Message serving drink
  """

  drinkslist = GetDrinks()
  drink = random.choice(drinkslist)
  msg = 'pours %s one %s' % (nick, drink)
  return msg


def main():
  if sys.argv[1] == 'getdrinks':
    result = GetDrinks()
  print result

if __name__ == '__main__':
  main()
