~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ignores.py

  • Committer: John Arbash Meinel
  • Date: 2006-07-12 17:24:16 UTC
  • mto: This revision was merged to the branch mainline in revision 1871.
  • Revision ID: john@arbash-meinel.com-20060712172416-161dc0bd567a2682
Adding functions for getting user ignores.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Lists of ignore files, etc."""
18
18
 
 
19
import errno
 
20
 
 
21
from bzrlib import config
 
22
 
19
23
# This was the full ignore list for bzr 0.8
20
24
# please keep these sorted (in C locale order) to aid merging
21
25
OLD_DEFAULTS = [
89
93
    '.#*',
90
94
    '[#]*#',
91
95
]
 
96
 
 
97
 
 
98
def parse_ignore_file(f):
 
99
    """Read in all of the lines in the file and turn it into an ignore list"""
 
100
    ignored = []
 
101
    for line in f.read().decode('utf8').split('\n'):
 
102
        line = line.rstrip('\r\n')
 
103
        if not line or line.startswith('#'):
 
104
            continue
 
105
        ignored.append(line)
 
106
    return ignored
 
107
 
 
108
 
 
109
def _create_user_ignores():
 
110
    """Create ~/.bazaar/ignore, and fill it with the defaults"""
 
111
 
 
112
    # We need to create the file
 
113
    path = config.user_ignore_config_filename()
 
114
    config.ensure_config_dir_exists()
 
115
    try:
 
116
        f = open(path, 'wb')
 
117
    except (IOError, OSError), e:
 
118
        if e.errno not in (errno.EPERM,):
 
119
            raise
 
120
        # if EPERM, we don't have write access to home dir
 
121
        # so we won't save anything
 
122
    else:
 
123
        try:
 
124
            for pattern in USER_DEFAULTS:
 
125
                f.write(pattern.encode('utf8') + '\n')
 
126
        finally:
 
127
            f.close()
 
128
 
 
129
 
 
130
def get_user_ignores():
 
131
    """Get the list of user ignored files, possibly creating it."""
 
132
    path = config.user_ignore_config_filename()
 
133
    patterns = USER_DEFAULTS[:]
 
134
    try:
 
135
        f = open(path, 'rb')
 
136
    except (IOError, OSError), e:
 
137
        if e.errno not in (errno.ENOENT,):
 
138
            raise
 
139
        # Create the ignore file, and just return the default
 
140
        _create_user_ignores()
 
141
        return patterns
 
142
 
 
143
    try:
 
144
        return parse_ignore_file(f)
 
145
    finally:
 
146
        f.close()