Mercurial > hg > config
comparison python/hgrc.py @ 478:df60292c29b2
python/hgrc.py
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Sat, 10 Aug 2013 19:37:50 -0700 |
| parents | 6274107e477e |
| children | 0a9e1e0d077c |
comparison
equal
deleted
inserted
replaced
| 477:6274107e477e | 478:df60292c29b2 |
|---|---|
| 16 | 16 |
| 17 #@parser # decorator makes this x-form path -> ConfigParser automagically | 17 #@parser # decorator makes this x-form path -> ConfigParser automagically |
| 18 #@section('paths') | 18 #@section('paths') |
| 19 def set_default_push(parser, default_push): | 19 def set_default_push(parser, default_push): |
| 20 """ | 20 """ |
| 21 set [paths]:default_push to `default_push` | 21 set [paths]:default-push to `default_push` |
| 22 """ | 22 """ |
| 23 pass | 23 if 'paths' not in parser.sections(): |
| 24 parser.add_section('paths') | |
| 25 parser.set('paths', 'default-push', default_push) | |
| 26 | |
| 24 | 27 |
| 25 def set_default_push_to_ssh(parser): | 28 def set_default_push_to_ssh(parser): |
| 26 """ | 29 """ |
| 27 set `[paths]:default_push` to that given by `[paths]:default` but | 30 set `[paths]:default-push` to that given by `[paths]:default` but |
| 28 turn the protocol to 'ssh' | 31 turn the protocol to 'ssh' |
| 29 If `[paths]:default` is not there, do nothing. | 32 If `[paths]:default` is not there, do nothing. |
| 30 Returns True if written, otherwise False | 33 Returns True if written, otherwise False |
| 31 """ | 34 """ |
| 32 | 35 |
| 39 | 42 |
| 40 # parse URL | 43 # parse URL |
| 41 scheme, netloc, path, query, anchor = urlparse.urlsplit(default) | 44 scheme, netloc, path, query, anchor = urlparse.urlsplit(default) |
| 42 ssh_url = urlparse.urlunsplit(('ssh', netloc, path, query, anchor)) | 45 ssh_url = urlparse.urlunsplit(('ssh', netloc, path, query, anchor)) |
| 43 | 46 |
| 47 # set | |
| 48 set_default_push(parser, ssh_url) | |
| 49 return True # XXX could instead be url to set to or old value | |
| 50 | |
| 44 | 51 |
| 45 def main(args=sys.argv[1:]): | 52 def main(args=sys.argv[1:]): |
| 46 | 53 |
| 47 # parse command line arguments | 54 # parse command line arguments |
| 48 usage = '%prog [options] repository <repository> <...>' | 55 usage = '%prog [options] repository <repository> <...>' |
| 53 parser.add_option('--ssh', dest='default_push_ssh', | 60 parser.add_option('--ssh', dest='default_push_ssh', |
| 54 action='store_true', default=False, | 61 action='store_true', default=False, |
| 55 help="use `default` entries for `default-push`") | 62 help="use `default` entries for `default-push`") |
| 56 parser.add_option('--push', '--default-push', dest='default_push', | 63 parser.add_option('--push', '--default-push', dest='default_push', |
| 57 help="set [paths] default-push location") | 64 help="set [paths] default-push location") |
| 65 parser.add_option('-p', '--print', dest='print_ini', | |
| 66 action='store_true', default=False, | |
| 67 help="print .ini contents") | |
| 58 options, args = parser.parse_args(args) | 68 options, args = parser.parse_args(args) |
| 59 | 69 |
| 60 # sanitization | 70 # sanitization |
| 61 if options.default_push and options.default_push_ssh: | 71 if options.default_push and options.default_push_ssh: |
| 62 parser.error("Cannot set --push and --ssh") | 72 parser.error("Cannot set --push and --ssh") |
| 150 if parameter is not None: | 160 if parameter is not None: |
| 151 method(ini, parameter) | 161 method(ini, parameter) |
| 152 else: | 162 else: |
| 153 method(ini) | 163 method(ini) |
| 154 | 164 |
| 165 # print .hgrc files, if specified | |
| 166 for path, ini in config.items(): | |
| 167 print '+++ %s' % (path) | |
| 168 ini.write(sys.stdout) | |
| 169 print | |
| 155 | 170 |
| 156 if __name__ == '__main__': | 171 if __name__ == '__main__': |
| 157 main() | 172 main() |
