commit listens to file arguments to limit changes
[mw] / src / mw / clicommands.py
index ee863b1cb1b36c3c11170d4a09379d6721396bed..a0fb016fad1130816702d92794871725870a687e 100644 (file)
@@ -38,11 +38,6 @@ class CommandBase(object):
         self.parser = OptionParser(usage=usage, description=description)
         self.name = name
         self.metadir = mw.metadir.Metadir()
-        #global_options = OptionGroup(self.parser, "Global Options")
-        #global_options.add_option('-u', '--use-auth', action='store_true',
-        #                          dest='use_auth', help='force authentication '
-        #                          'even if not required')
-        #self.parser.add_option_group(global_options)
         self.shortcuts = []
 
     def main(self):
@@ -173,8 +168,7 @@ class DiffCommand(CommandBase):
         for file in status:
             if status[file] == 'U':
                 print self.metadir.diff_rv_to_working(
-                    mw.api.filename_to_pagename(file[:-5])
-                ),
+                        mw.api.filename_to_pagename(file[:-5])),
 
 
 class CommitCommand(CommandBase):
@@ -189,10 +183,7 @@ class CommitCommand(CommandBase):
     def _do_command(self):
         self._die_if_no_init()
         self._api_setup()
-        print 'WARNING: mw does not do collision detection yet.'
-        print 'Hit ^C now if you haven\'t double checked, otherwise hit Enter'
-        raw_input()
-        status = self.metadir.working_dir_status()
+        status = self.metadir.working_dir_status(files=self.args)
         nothing_to_commit = True
         for file in status:
             print '%s %s' % (status[file], file)
@@ -200,12 +191,16 @@ class CommitCommand(CommandBase):
                 nothing_to_commit = False
         if nothing_to_commit:
             print 'nothing to commit'
+            sys.exit()
+        print
+        print 'WARNING: mw does not do collision detection yet.'
+        print 'Hit ^C now if you haven\'t double checked, otherwise hit Enter'
+        raw_input()
+        if self.options.edit_summary == None:
+            print 'Edit summary:',
+            edit_summary = raw_input()
         else:
-            if self.options.edit_summary == None:
-                print 'Edit summary:',
-                edit_summary = raw_input()
-            else:
-                edit_summary = self.options.edit_summary
+            edit_summary = self.options.edit_summary
         for file in status:
             if status[file] in ['U']:
                 # get edit token
@@ -221,6 +216,7 @@ class CommitCommand(CommandBase):
                 # FIXME use basetimestamp and starttimestamp
                 filename = os.path.join(self.metadir.root, file)
                 text = codecs.open(filename, 'r', 'utf-8').read()
+                text = text.encode('utf-8')
                 if text[-1] == '\n':
                     text = text[:-1]
                 md5 = hashlib.md5()
@@ -232,6 +228,7 @@ class CommitCommand(CommandBase):
                         'token': edittoken,
                         'text': text,
                         'md5': textmd5,
+                        'summary': edit_summary,
                 }
                 response = self.api.call(data)
                 if response['edit']['result'] == 'Success':
@@ -243,7 +240,6 @@ class CommitCommand(CommandBase):
                                     'ids|flags|timestamp|user|comment|content',
                     }
                     response = self.api.call(data)['query']['pages']
-                    print response
                     self.metadir.pages_add_rv(int(pageid),
                                               response[pageid]['revisions'][0])
                 else:

Benjamin Mako Hill || Want to submit a patch?