#!/usr/bin/env python
# vim:ts=2:sw=2

import sys, os, LiveJournal, re
import tempfile

"""
this is the beginning of a livejournal client that uses your texteditor
exclusively.
"""

EDITOR='/usr/bin/vim +'

class PostFile:
	def __init__(self):
		self.filename = ""
		self.contents = {}
		self.file = None
		self.istemp = 0

	def maketempfile(self):
		self.filename = tempfile.mktemp()
		file = open(self.filename, "w")
		os.chmod(self.filename, 0600)
		file.write('username: \n')
		file.write('subject: \n')
		file.write('usejournal: \n')
		file.write('\n')
		file.write('\n')
		file.close()
		self.istemp = 1

	def loadfile(filename=None):
		if filename:
			self.filename = filename
		file = open(self.filename, "r")
		self.contents = {}
		entry = ""
		roption = re.compile(r'^(\w+): (.*)\n$')

		line = file.readline()
		match = roption.match(line)
		while match:
			(opt, value) = match.groups()
			self.contents[opt] = value
			line = file.readline()
			match = roption.match(line)

		while line:
			entry = entry + line
			line = file.readline()
		self.contents[entry] = line
		file.close()

	def dump(self):
		for k in self.contents.keys():
			print "%s -> %s" % (k, self.contents[k])

	def checkpass(self):
		if not self.contents.has_key('password'):
			self.contents['password'] = getpass("%s's password: ", self.contents['username'])

try:
	post = PostFile()
	post.maketempfile()
	os.execvp('sh', ('sh', '-c', EDITOR + " " + post.filename))
finally:
	if post.istemp:
		os.remove(post.filename)
