Example #1
0
    def iterfiles(self,
                  include_pattern=None,
                  abspath=False,
                  force_refresh=False):
        """ 
        Generator for all the files matching pattern and not already excluded.

        Uses cached file list if available.

        Args:
            pattern (str): Unix style (glob like/gitignore like) pattern
            abspath (bool): Whether to use absolute or relative (default) paths. 
            force_refresh (bool): Whether to refresh from disk or use the cache.
        """
        self.populate_dir(force_refresh)

        if include_pattern is not None:
            globster = Globster([include_pattern])

        for f in self._files_cache:
            if include_pattern is None or globster.match(f):
                if abspath:
                    yield os.path.join(self.path, f)
                else:
                    yield f
Example #2
0
 def __init__(self):
     excludes = ['.git/', '.hg/', '.svn/', 'node_modules']
     self.directory = os.path.basename(self.getRootPath())
     self.path = os.path.abspath(self.getRootPath())
     self.parent = os.path.dirname(self.path)
     self.exclude_file = self.load_ignore()
     self.patterns = excludes
     if self.exclude_file is not None:
         self.patterns.extend(self.load_patterns(self.exclude_file))
     self.globster = Globster(self.patterns)
Example #3
0
 def __init__(self, directory=".", exclude_file=".exclude",
              excludes=['.git/', '.hg/', '.svn/']):
     if not os.path.isdir(directory):
         raise TypeError("Directory must be a directory.")
     self.directory = os.path.basename(directory)
     self.path = os.path.abspath(directory)
     self.parent = os.path.dirname(self.path)
     self.exclude_file = os.path.join(self.path, exclude_file)
     self.patterns = excludes
     if os.path.isfile(self.exclude_file):
         self.patterns.extend(load_patterns(self.exclude_file))
     self.globster = Globster(self.patterns)
Example #4
0
 def __init__(self, directory=".", exclude_file=".exclude",
              excludes=('.git/', '.hg/', '.svn/'),
              directory_filter=lambda root, dirs, files: True):
     if not os.path.isdir(directory):
         raise TypeError("Directory must be a directory.")
     self.directory = os.path.basename(directory)
     self.path = os.path.abspath(directory)
     self.parent = os.path.dirname(self.path)
     self.exclude_file = os.path.join(self.path, exclude_file)
     self.patterns = list(excludes)
     if os.path.isfile(self.exclude_file):
         self.patterns.extend(load_patterns(self.exclude_file))
     self.globster = Globster(self.patterns)
     self.directory_filter=directory_filter
Example #5
0
    def itersubdirs(self, pattern=None, abspath=False):
        """ Generator for all subdirs (except excluded).

        :type pattern: str
        :param pattern: Unix style (glob like/gitignore like) pattern

        """
        if pattern is not None:
            globster = Globster([pattern])
        for root, dirs, files in self.walk():
            for d in dirs:
                if pattern is None or (pattern is not None and globster.match(d)):
                    if abspath:
                        yield os.path.join(root, d)
                    else:
                        yield self.relpath(os.path.join(root, d))
Example #6
0
    def iterfiles(self, pattern=None, abspath=False):
        """ Generator for all the files not excluded recursively.

        Return relative path.

        :type pattern: str
        :param pattern: Unix style (glob like/gitignore like) pattern

        """
        if pattern is not None:
            globster = Globster([pattern])
        for root, dirs, files in self.walk():
            for f in files:
                if pattern is None or (pattern is not None and globster.match(f)):
                    if abspath:
                        yield os.path.join(root, f)
                    else:
                        yield self.relpath(os.path.join(root, f))
Example #7
0
    def __init__(self,
                 directory=".",
                 exclude_file=None,
                 excludes=['.git/', '.hg/', '.svn/']):

        if not os.path.isdir(directory):
            raise TypeError("Directory must be a directory.")
        self.directory = os.path.basename(directory)
        self.path = os.path.abspath(directory)
        self.parent = os.path.dirname(self.path)
        self.patterns = excludes
        self._files_cache = []
        self._sub_dirs_cache = []
        self._is_populated = False

        if exclude_file:
            self.exclude_file = os.path.join(self.path, exclude_file)
            if os.path.isfile(self.exclude_file):
                file_patt = filter(None, open(exclude_file).read().split("\n"))
                self.patterns.extend(file_patt)

        self.globster = Globster(self.patterns)
Example #8
0
    def itersubdirs(self, pattern=None, abspath=False, force_refresh=False):
        """
        Generator for all subdirs matching pattern and not excluded.

        Uses cached dir list if available.

        Args:
            pattern (str): Unix style (glob like/gitignore like) pattern
            abspath (bool): whether to use absolute or relative (default) paths.
            force_refresh (bool): Whether to refresh from disk or use the cache.
        """
        self.populate_dir(force_refresh)

        if pattern is not None:
            globster = Globster([pattern])

        for d in self._sub_dirs_cache:
            if pattern is None or globster.match(d):
                if abspath:
                    yield os.path.join(self.directory, d)
                else:
                    yield d