#!/usr/local/bin/python

import pickle
import os

HELPFILE = '%s/helpfile.pck' % os.getcwd()

def listhelp():
# List help in the database
    try:
      helppickle = open(HELPFILE, 'r')
    except IOError:
      helplist = ['No help for you!']
      helppickle = open(HELPFILE, 'w')
      pickle.dump(helplist,helppickle)
      helppickle.close()
      helppickle = open(HELPFILE, 'r')
    try:
      helplist = pickle.load(helppickle)
      helppickle.close()
    except EOFError:
      helplist = ['No help for you!']
    helpcountmsg = '%s help in the database:' % len(helplist)
    buffer = [helpcountmsg]
    for help in helplist:
      buffer.append(help)
    return buffer

def addhelp(newhelp):
# Add help to the database
    if len(newhelp) > 256:
      msg = 'Hmmm that help name is rather long, isn\'t it?'
      return msg
    try:
      helppickle = open(HELPFILE, 'r')
    except IOError:
      helplist = ['No help for you!']
      helppickle = open(HELPFILE, 'w')
      pickle.dump(helplist,helppickle)
      helppickle.close()
      helppickle = open(HELPFILE, 'r')
    try:
      helplist = pickle.load(helppickle)
      helppickle.close()
    except EOFError:
      helplist = ['No help for you!']
    helplist.append(newhelp)
    helppickle = open(HELPFILE, 'w')
    pickle.dump(helplist,helppickle)
    helppickle.close()
    msg = 'Added "%s" to the database' % newhelp
    return msg


def pophelp():
# Pop the database, to remove the latest entry
    try:
      helppickle = open(HELPFILE, 'r')
    except IOError:
      msg = 'Help file %s does not exist in this reality' % HELPFILE
      return msg
    try:
      helplist = pickle.load(helppickle)
      helppickle.close()
    except EOFError:
      msg = 'Help file %s is empty' % HELPFILE
      return msg
    try:
      helplist.pop()
      helppickle = open(HELPFILE, 'w')
      pickle.dump(helplist,helppickle)
      helppickle.close()
      msg = 'Popped the database'
    except IndexError:
      msg = 'Unable to pop empty database'
    return msg

def delhelp(oldhelp):
# Remove help from the database
    try:
      helppickle = open(HELPFILE, 'r')
    except IOError:
      msg = 'Help file %s does not exist in this reality' % HELPFILE
      return msg
    try:
      helplist = pickle.load(helppickle)
      helppickle.close()
    except EOFError:
      msg = 'Help file %s is empty' % HELPFILE
      return msg
    try:
      helplist.remove(oldhelp)
      msg = 'Removed %s from the database' % help
    except ValueError:
      msg = '%s is not in the database' % help
    helppickle = open(HELPFILE, 'w')
    pickle.dump(helplist,helppickle)
    helppickle.close()
    return msg

# Serve the help!
def servehelp(nick=''):
  msg = ''
  if nick != '':
    msg += '%s: ' % nick
  try:
    helppickle = open(HELPFILE, 'r')
    helplist = pickle.load(helppickle)
    helppickle.close()
    import random
    msg += random.choice(helplist)
  except IOError:
    msg += 'I\'m not very helpful :( Show me how to help you: "addhelp <help>"'
  return msg

if __name__ == '__main__':
  help = servehelp()
  print help
