changeset 43:8b9aa9f40fa5

moving most of blogme to its own function
author k0s <k0scist@gmail.com>
date Wed, 11 Nov 2009 19:25:21 -0500
parents ffe95e34066f
children 0e7f56709c90
files bitsyblog/blogme.py
diffstat 1 files changed, 78 insertions(+), 76 deletions(-) [+]
line wrap: on
line diff
--- a/bitsyblog/blogme.py	Wed Nov 04 18:18:07 2009 -0500
+++ b/bitsyblog/blogme.py	Wed Nov 11 19:25:21 2009 -0500
@@ -7,64 +7,13 @@
 import tempfile
 import urllib2
 
-# global variables
-
-EDITOR='emacs -nw'
-SERVER='http://bitsyblog.biz'
+# global variable
 dotfile='.blogme'
 
-parser = optparse.OptionParser()
-parser.add_option('-s', '--server', default=SERVER)
-parser.add_option('-u', '--user')
-parser.add_option('-p', '--password')
-parser.add_option('--private', action='store_true', default=False)
-parser.add_option('--secret', action='store_true', default=False)
-
-options, args = parser.parse_args()
-
-if options.private and options.secret:
-    print "post can't be secret and private!"
-    sys.exit(1)
-
-# parse dotfile
-
-home = os.environ.get('HOME')
-if home:
-    dotfile = os.path.join(home, dotfile)
-    if os.path.exists(dotfile):
-        prefs = file(dotfile).read().split('\n')
-        prefs = [ i for i in prefs if i.strip() ]
-        prefs = [ [ j.strip() for j in i.split(':', 1) ] for i in prefs
-                  if ':' in i] # probably not necessary
-        prefs = dict(prefs)
-    else:
-        prefs = {}
-
-# determine user name and password
-fields = [ 'user', 'password' ]
-for field in fields:
-    globals()[field] = prefs.get(field)
-
-    optval = getattr(options, field)
-    if optval:
-        password = None # needed to ensure prompting for pw from command line
-        globals()[field] = optval
-
-    if globals()[field] is None:
-        globals()[field] = raw_input('%s: ' % field)
-assert user is not None
-assert password is not None
-
-# write the dotfile if it doesn't exist
-if not os.path.exists(dotfile):
-    preffile = file(dotfile, 'w')
-    print >> preffile, 'user: %s' % user
-    print >> preffile, 'password: %s' % password
-    preffile.close()
-    os.chmod(dotfile, 0600)
-        
-def tmpbuffer(editor=EDITOR):
+def tmpbuffer(editor=None):
     """open an editor and retreive the resulting editted buffer"""
+    if not editor:
+        editor = os.environ['EDITOR']
     tmpfile = tempfile.mktemp(suffix='.txt')
     cmdline = editor.split()
     cmdline.append(tmpfile)
@@ -73,30 +22,83 @@
     os.remove(tmpfile)
     return buffer
 
-# get the blog
+def main(args=sys.argv[1:]):
+
+    # create the option parser
+    parser = optparse.OptionParser()
+    parser.add_option('-s', '--server')
+    parser.add_option('-u', '--user')
+    parser.add_option('-p', '--password')
+    parser.add_option('--private', action='store_true', default=False)
+    parser.add_option('--secret', action='store_true', default=False)
+
+    options, args = parser.parse_args()
+    
+    # sanity check
+    if options.private and options.secret:
+        print "post can't be secret and private!"
+        sys.exit(1)
 
-if args:
-    msg = ' '.join(args)
-else:
-    msg = tmpbuffer()
+    # parse dotfile
+    home = os.environ.get('HOME')
+    if home:
+        dotfile = os.path.join(home, dotfile)
+        if os.path.exists(dotfile):
+            prefs = file(dotfile).read().split('\n')
+            prefs = [ i for i in prefs if i.strip() ]
+            prefs = [ [ j.strip() for j in i.split(':', 1) ] for i in prefs
+                      if ':' in i] # probably not necessary
+            prefs = dict(prefs)
+        else:
+            prefs = {}
 
-# open the url
+    # determine user name and password
+    fields = [ 'user', 'password' ]
+    for field in fields:
+        globals()[field] = prefs.get(field)
 
-url = '/'.join((options.server, user))
-url += '?auth=digest' # specify authentication method
+        optval = getattr(options, field)
+        if optval:
+            password = None # needed to ensure prompting for pw from command line
+            globals()[field] = optval
 
-if options.private:
-    url += '&privacy=private'
-if options.secret:
-    url += '&privacy=secret'
+        if globals()[field] is None:
+            globals()[field] = raw_input('%s: ' % field)
+    assert user is not None
+    assert password is not None
+
+    # write the dotfile if it doesn't exist
+    if not os.path.exists(dotfile):
+        preffile = file(dotfile, 'w')
+        print >> preffile, 'user: %s' % user
+        print >> preffile, 'password: %s' % password
+        preffile.close()
+        os.chmod(dotfile, 0600)
+    
+
+    # get the blog
+    if args:
+        msg = ' '.join(args)
+    else:
+        msg = tmpbuffer()
 
-authhandler = urllib2.HTTPDigestAuthHandler()
-authhandler.add_password('bitsyblog', url, user, password)
-opener = urllib2.build_opener(authhandler)
-urllib2.install_opener(opener)
+    # open the url
+    url = '/'.join((options.server, user))
+    url += '?auth=digest' # specify authentication method
+    if options.private:
+        url += '&privacy=private'
+    if options.secret:
+        url += '&privacy=secret'
+    authhandler = urllib2.HTTPDigestAuthHandler()
+    authhandler.add_password('bitsyblog', url, user, password)
+    opener = urllib2.build_opener(authhandler)
+    urllib2.install_opener(opener)
 
-try:
-    url = urllib2.urlopen(url, data=msg)
-    print url.url # print the blog post's url
-except urllib2.HTTPError:
-    pass
+    try:
+        url = urllib2.urlopen(url, data=msg)
+        print url.url # print the blog post's url
+    except urllib2.HTTPError:
+        pass
+
+if __name__ == '__main__':
+    main()