Mercurial > hg > config
comparison python/hgrc.py @ 482:6c0aac8799da
python/hgrc.py
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Sat, 10 Aug 2013 20:51:25 -0700 |
| parents | 65e38d33acae |
| children | 4bd2932d21d4 |
comparison
equal
deleted
inserted
replaced
| 481:65e38d33acae | 482:6c0aac8799da |
|---|---|
| 13 import sys | 13 import sys |
| 14 import urlparse | 14 import urlparse |
| 15 from ConfigParser import RawConfigParser as ConfigParser | 15 from ConfigParser import RawConfigParser as ConfigParser |
| 16 | 16 |
| 17 class section(object): | 17 class section(object): |
| 18 def __init__(self, function, section_name, *section_names): | 18 def __init__(self, section_name, *section_names): |
| 19 self.function = function | |
| 20 self.sections = [section_name] | 19 self.sections = [section_name] |
| 21 self.sections.extend(section_names) | 20 self.sections.extend(section_names) |
| 22 def __call__(self, parser): | 21 def __call__(self, parser): |
| 23 import pdb; pdb.set_trace() | 22 def wrapped(parser, *args, **kwargs): |
| 23 for section in self.sections: | |
| 24 if section not in parser.sections(): | |
| 25 parser.add_section(section) | |
| 26 f(*args, **kwargs) | |
| 27 return wrapped | |
| 24 | 28 |
| 25 #@parser # decorator makes this x-form path -> ConfigParser automagically | 29 #@parser # decorator makes this x-form path -> ConfigParser automagically |
| 26 @section('paths') | 30 @section('paths') |
| 27 def set_default(parser, default): | 31 def set_default(parser, default): |
| 28 """set [paths]:default""" | 32 """set [paths]:default""" |
| 29 | 33 |
| 34 @section('paths') | |
| 30 def set_default_push(parser, default_push): | 35 def set_default_push(parser, default_push): |
| 31 """ | 36 """ |
| 32 set [paths]:default-push to `default_push` | 37 set [paths]:default-push to `default_push` |
| 33 """ | 38 """ |
| 34 if 'paths' not in parser.sections(): | 39 if 'paths' not in parser.sections(): |
| 95 'default_push_ssh', | 100 'default_push_ssh', |
| 96 'list_hgrc', | 101 'list_hgrc', |
| 97 ) | 102 ) |
| 98 actions = [(name, getattr(options, name)) | 103 actions = [(name, getattr(options, name)) |
| 99 for name in available_actions | 104 for name in available_actions |
| 100 if getattr(options, name)]) | 105 if getattr(options, name)] |
| 101 if not actions: | 106 if not actions: |
| 102 actions = [('default_push_ssh', True)] | 107 actions = [('default_push_ssh', True)] |
| 103 | 108 |
| 104 # find all hgrc files | 109 # find all hgrc files |
| 105 hgrc = [] | 110 hgrc = [] |
| 150 | 155 |
| 151 # print the chosen hgrc paths | 156 # print the chosen hgrc paths |
| 152 if options.list_hgrc: | 157 if options.list_hgrc: |
| 153 print '\n'.join(hgrc) | 158 print '\n'.join(hgrc) |
| 154 | 159 |
| 160 # remove from actions list | |
| 155 # TODO -> OrderedDict | 161 # TODO -> OrderedDict |
| 156 actions.pop('list_hgrc', None): | 162 actions.pop('list_hgrc', None) |
| 163 actions.pop() | |
| 157 | 164 |
| 158 # map of actions -> functions; | 165 # map of actions -> functions; |
| 159 # XXX this is pretty improv; to be improved | 166 # XXX this is pretty improv; to be improved |
| 160 action_map = {'default_push_ssh': set_default_push_to_ssh, | 167 action_map = {'default_push_ssh': set_default_push_to_ssh, |
| 161 'default_push': set_default_push | 168 'default_push': set_default_push |
