/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/rules.py

  • Committer: Martin von Gagern
  • Date: 2010-04-20 08:47:38 UTC
  • mfrom: (5167 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5195.
  • Revision ID: martin.vgagern@gmx.net-20100420084738-ygymnqmdllzrhpfn
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""Rule-based definition of preferences for selected files in selected branches.
18
18
 
21
21
 
22
22
from bzrlib import (
23
23
    config,
 
24
    cmdline,
24
25
    errors,
25
26
    globbing,
26
27
    osutils,
35
36
FILE_PREFS_PREFIX = 'name '
36
37
FILE_PREFS_PREFIX_LEN = len(FILE_PREFS_PREFIX)
37
38
 
 
39
# The object providing default rules
 
40
_per_user_searcher = None
 
41
 
38
42
 
39
43
class _RulesSearcher(object):
40
44
    """An object that provides rule-based preferences."""
73
77
        options = {'encoding': 'utf-8'}
74
78
        self._cfg = configobj.ConfigObj(inifile, options=options)
75
79
        sections = self._cfg.keys()
76
 
        patterns = [s[FILE_PREFS_PREFIX_LEN:] for s in sections
77
 
            if s.startswith(FILE_PREFS_PREFIX)]
 
80
        patterns = []
 
81
        self.pattern_to_section = {}
 
82
        for s in sections:
 
83
            if s.startswith(FILE_PREFS_PREFIX):
 
84
                file_patterns = cmdline.split(s[FILE_PREFS_PREFIX_LEN:])
 
85
                patterns.extend(file_patterns)
 
86
                for fp in file_patterns:
 
87
                    self.pattern_to_section[fp] = s
78
88
        if len(patterns) < len(sections):
79
89
            unknowns = [s for s in sections
80
90
                if not s.startswith(FILE_PREFS_PREFIX)]
92
102
        if pat is None:
93
103
            return ()
94
104
        else:
95
 
            all = self._cfg[FILE_PREFS_PREFIX + pat]
 
105
            all = self._cfg[self.pattern_to_section[pat]]
96
106
            return tuple(all.items())
97
107
 
98
108
    def get_selected_items(self, path, names):
103
113
        if pat is None:
104
114
            return ()
105
115
        else:
106
 
            all = self._cfg[FILE_PREFS_PREFIX + pat]
 
116
            all = self._cfg[self.pattern_to_section[pat]]
107
117
            return tuple((k, all.get(k)) for k in names)
108
118
 
109
119
 
138
148
    return osutils.pathjoin(config.config_dir(), 'rules')
139
149
 
140
150
 
141
 
# The object providing default rules
142
 
_per_user_searcher = _IniBasedRulesSearcher(rules_filename())
 
151
def reset_rules():
 
152
    global _per_user_searcher
 
153
    _per_user_searcher = _IniBasedRulesSearcher(rules_filename())
 
154
 
 
155
reset_rules()