comparison python/setup_repo.py @ 403:62eb670a408f

dont roll your own
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 30 Jul 2013 03:42:15 -0700
parents c00b70509fff
children fb304dcd1e64
comparison
equal deleted inserted replaced
402:c00b70509fff 403:62eb670a408f
11 import os 11 import os
12 import subprocess 12 import subprocess
13 import sys 13 import sys
14 import urlparse 14 import urlparse
15 15
16 from subprocess import check_call as call
17 from optparse import OptionParser 16 from optparse import OptionParser
18 17
19 18
20 # global variables 19 # global variables
21 HOST='k0s.org' 20 HOST='k0s.org'
22 HGRC="""[paths] 21 HGRC="""[paths]
23 default = http://%(host)s/%(repo)s/%(name)s 22 default = http://%(host)s/%(repo)s/%(name)s
24 default-push = ssh://%(host)s/%(repo)s/%(name)s 23 default-push = ssh://%(host)s/%(repo)s/%(name)s
25 """ 24 """
26 25
27 def call(command, *args, **kw): 26 call = subprocess.check_output
28
29 code = subprocess.call(command, *args, **kw)
30 if isinstance(command, basestring):
31 cmdstr = command
32 else:
33 cmdstr = ' '.join(command)
34 print cmdstr
35 if code:
36 raise SystemExit("Command `%s` exited with code %d" % (cmdstr, code))
37 27
38 def main(args=sys.argv[1:]): 28 def main(args=sys.argv[1:]):
39 29
40 # parse command line arguments 30 # parse command line arguments
41 parser = OptionParser('%prog [options] location') 31 parser = OptionParser('%prog [options] directory')
42 parser.add_option('-m', '--message', dest='message', 32 parser.add_option('-m', '--message', dest='message',
43 default='initial commit', 33 default='initial commit',
44 help='commit message [Default: %default]') 34 help='commit message [Default: %default]')
45 parser.add_option('-u', '--remote-url', dest='remote_url', 35 parser.add_option('-u', '--remote-url', dest='remote_url',
46 default="http://k0s.org/hg/", 36 default="http://k0s.org/hg/",
72 remote_host, remote_path = remote_path.split(':', 1) 62 remote_host, remote_path = remote_path.split(':', 1)
73 else: 63 else:
74 remote_path = path 64 remote_path = path
75 65
76 # setup remote repository 66 # setup remote repository
77 call(['ssh', host, "mkdir -p cd %s/%s && hg init && hg add && hg ci -m '%s'" % (repo, name, options.message)]) 67 remote_dir = '%s/%s' % (path, name)
68 call(['ssh', host, "mkdir -p %s && cd %s && hg init" % (remote_dir, remote_dir)])
78 69
79 # write local .hgrc file 70 # write local .hgrc file
80 # TODO: use ConfigParser 71 # TODO: use ConfigParser
81 with file(os.path.join(directory, '.hg', 'hgrc'), 'w') as f: 72 with file(os.path.join(directory, '.hg', 'hgrc'), 'w') as f:
82 print >> f, HGRC % { 'host': host, 'repo': repo, 'name': name} 73 print >> f, HGRC % { 'host': host, 'repo': repo, 'name': name}