Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 36447:199443c55463
showconfig: allow multiple section.name selectors (issue5797)
This seems useful and we can disambiguate the output format solely by the
type of the command arguments.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 21 Feb 2018 22:47:47 +0900 |
parents | 07e207e88b42 |
children | 04c319a07c7b |
comparison
equal
deleted
inserted
replaced
36446:07e207e88b42 | 36447:199443c55463 |
---|---|
1630 | 1630 |
1631 With one argument of the form section.name, print just the value | 1631 With one argument of the form section.name, print just the value |
1632 of that config item. | 1632 of that config item. |
1633 | 1633 |
1634 With multiple arguments, print names and values of all config | 1634 With multiple arguments, print names and values of all config |
1635 items with matching section names. | 1635 items with matching section names or section.names. |
1636 | 1636 |
1637 With --edit, start an editor on the user-level config file. With | 1637 With --edit, start an editor on the user-level config file. With |
1638 --global, edit the system-wide config file. With --local, edit the | 1638 --global, edit the system-wide config file. With --local, edit the |
1639 repository-level config file. | 1639 repository-level config file. |
1640 | 1640 |
1696 | 1696 |
1697 selsections = selentries = [] | 1697 selsections = selentries = [] |
1698 if values: | 1698 if values: |
1699 selsections = [v for v in values if '.' not in v] | 1699 selsections = [v for v in values if '.' not in v] |
1700 selentries = [v for v in values if '.' in v] | 1700 selentries = [v for v in values if '.' in v] |
1701 if len(selentries) > 1 or selentries and selsections: | 1701 uniquesel = (len(selentries) == 1 and not selsections) |
1702 raise error.Abort(_('only one config item permitted')) | |
1703 selsections = set(selsections) | 1702 selsections = set(selsections) |
1704 selentries = set(selentries) | 1703 selentries = set(selentries) |
1705 | 1704 |
1706 matched = False | 1705 matched = False |
1707 for section, name, value in ui.walkconfig(untrusted=untrusted): | 1706 for section, name, value in ui.walkconfig(untrusted=untrusted): |
1709 value = pycompat.bytestr(value) | 1708 value = pycompat.bytestr(value) |
1710 if fm.isplain(): | 1709 if fm.isplain(): |
1711 source = source or 'none' | 1710 source = source or 'none' |
1712 value = value.replace('\n', '\\n') | 1711 value = value.replace('\n', '\\n') |
1713 entryname = section + '.' + name | 1712 entryname = section + '.' + name |
1714 if values: | 1713 if values and not (section in selsections or entryname in selentries): |
1715 if section in selsections: | 1714 continue |
1716 fm.startitem() | 1715 fm.startitem() |
1717 fm.condwrite(ui.debugflag, 'source', '%s: ', source) | 1716 fm.condwrite(ui.debugflag, 'source', '%s: ', source) |
1718 fm.write('name value', '%s=%s\n', entryname, value) | 1717 if uniquesel: |
1719 matched = True | 1718 fm.data(name=entryname) |
1720 elif entryname in selentries: | 1719 fm.write('value', '%s\n', value) |
1721 fm.startitem() | |
1722 fm.condwrite(ui.debugflag, 'source', '%s: ', source) | |
1723 fm.write('value', '%s\n', value) | |
1724 fm.data(name=entryname) | |
1725 matched = True | |
1726 else: | 1720 else: |
1727 fm.startitem() | |
1728 fm.condwrite(ui.debugflag, 'source', '%s: ', source) | |
1729 fm.write('name value', '%s=%s\n', entryname, value) | 1721 fm.write('name value', '%s=%s\n', entryname, value) |
1730 matched = True | 1722 matched = True |
1731 fm.end() | 1723 fm.end() |
1732 if matched: | 1724 if matched: |
1733 return 0 | 1725 return 0 |
1734 return 1 | 1726 return 1 |
1735 | 1727 |