Show More
@@ -531,10 +531,14 b' class ui(object):' | |||
|
531 | 531 | if util.hasscheme(loc) or os.path.isdir(os.path.join(loc, '.hg')): |
|
532 | 532 | return loc |
|
533 | 533 | |
|
534 | path = self.config('paths', loc) | |
|
535 | if not path and default is not None: | |
|
536 | path = self.config('paths', default) | |
|
537 |
return |
|
|
534 | p = self.paths.getpath(loc, default=default) | |
|
535 | if p: | |
|
536 | return p.loc | |
|
537 | return loc | |
|
538 | ||
|
539 | @util.propertycache | |
|
540 | def paths(self): | |
|
541 | return paths(self) | |
|
538 | 542 | |
|
539 | 543 | def pushbuffer(self, error=False): |
|
540 | 544 | """install a buffer to capture standard output of the ui object |
@@ -923,3 +927,48 b' class ui(object):' | |||
|
923 | 927 | ui.write(ui.label(s, 'label')). |
|
924 | 928 | ''' |
|
925 | 929 | return msg |
|
930 | ||
|
931 | class paths(dict): | |
|
932 | """Represents a collection of paths and their configs. | |
|
933 | ||
|
934 | Data is initially derived from ui instances and the config files they have | |
|
935 | loaded. | |
|
936 | """ | |
|
937 | def __init__(self, ui): | |
|
938 | dict.__init__(self) | |
|
939 | ||
|
940 | for name, loc in ui.configitems('paths'): | |
|
941 | # No location is the same as not existing. | |
|
942 | if not loc: | |
|
943 | continue | |
|
944 | self[name] = path(name, rawloc=loc) | |
|
945 | ||
|
946 | def getpath(self, name, default=None): | |
|
947 | """Return a ``path`` for the specified name, falling back to a default. | |
|
948 | ||
|
949 | Returns the first of ``name`` or ``default`` that is present, or None | |
|
950 | if neither is present. | |
|
951 | """ | |
|
952 | try: | |
|
953 | return self[name] | |
|
954 | except KeyError: | |
|
955 | if default is not None: | |
|
956 | try: | |
|
957 | return self[default] | |
|
958 | except KeyError: | |
|
959 | pass | |
|
960 | ||
|
961 | return None | |
|
962 | ||
|
963 | class path(object): | |
|
964 | """Represents an individual path and its configuration.""" | |
|
965 | ||
|
966 | def __init__(self, name, rawloc=None): | |
|
967 | """Construct a path from its config options. | |
|
968 | ||
|
969 | ``name`` is the symbolic name of the path. | |
|
970 | ``rawloc`` is the raw location, as defined in the config. | |
|
971 | """ | |
|
972 | self.name = name | |
|
973 | # We'll do more intelligent things with rawloc in the future. | |
|
974 | self.loc = rawloc |
General Comments 0
You need to be logged in to leave comments.
Login now