475c9de60d4f

Add some basic init functionality.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Sun, 04 Oct 2009 13:23:09 -0400
parents caef886ce739
children c68fc0a81e6e
branches/tags (none)
files review.py

Changes

--- a/review.py	Sun Oct 04 12:38:50 2009 -0400
+++ b/review.py	Sun Oct 04 13:23:09 2009 -0400
@@ -1,15 +1,52 @@
+from __future__ import with_statement
+
 '''A Mercurial extension for code reviewing changesets.
 '''
 
+import os
+from mercurial import cmdutil, hg
+
 
 def review(ui, repo, *fnames, **opts):
     '''code review a changeset in the current repository
     '''
-    pass
+    if opts.pop('init'):
+        if '.hgreview' in repo['tip']:
+            ui.note('already initialized by someone else\n')
+            review_config = repo['tip']['.hgreview']
+        elif os.path.exists(os.path.join(repo.root, '.hgreview')):
+            ui.warn('the review data has already been initialized, but '
+                'is not recorded!\n'
+                'run "hg commit .hgreview -m\'initialized code review\'" '
+                'to record it permanently\n')
+        else:
+            ui.note('initializing the code review data store and config\n')
+            
+            lpath = opts.pop('local_path') or '.review'
+            dspath = os.path.join(repo.root, lpath)
+            rpath = opts.pop('remote_path')
+            if not rpath:
+                rpath = '../%s-review' % os.path.basename(repo.root)
+            
+            ui.note('creating the datastore\n')
+            hg.repository(cmdutil.remoteui(ui, opts), dspath, create=1)
+            
+            ui.note('creating the .hgreview file\n')
+            hgrpath = os.path.join(repo.root, '.hgreview')
+            with open(hgrpath, 'w') as hgrf:
+                hgrf.write('local = %s\n' % lpath)
+                hgrf.write('remote = %s\n' % rpath)
+            repo.add([hgrpath])
+            
+            ui.status('the review data has been initialized\n'
+                'run "hg commit .hgreview -m\'initialized code review\'" '
+                'to record it permanently\n')
 
 cmdtable = {
     'review': (review, [
-        ('i', '--init', [], 'start code reviewing this repository'),
+        ('i', 'init', False, 'start code reviewing this repository'),
+        ('', 'local-path', '', 'the local path to the code review data'),
+        ('', 'remote-path', '', 'the remote path to code review data'),
     ],
     'hg review')
 }