def _test_resolve(self,
                   func,
                   items,
                   files,
                   recursive = True,
                   limit = None,
                   sort_order = None,
                   sort_reverse = False,
                   match_patterns = None,
                   match_type = None,
                   match_basename = True,
                   match_function = None,
                   match_re = None,
                   ignore_files = None):
   tmp_dir = self.make_temp_dir()
   temp_content.write_items(items, tmp_dir)
   files = [ f.replace('${tmp_dir}', tmp_dir) for f in files ]
   options = file_resolver_options(recursive = recursive,
                                   limit = limit,
                                   sort_order = sort_order,
                                   sort_reverse = sort_reverse,
                                   match_patterns = match_patterns,
                                   match_type = match_type,
                                   match_basename = match_basename,
                                   match_function = match_function,
                                   match_re = match_re,
                                   ignore_files = ignore_files)
   result = func(files, options = options)
   return os.linesep.join([ self._fix_one_resolved_file(f, tmp_dir) for f in result ])
Exemple #2
0
 def _resolve_files(clazz, files, options):
     match_function = lambda filename: clazz._match_function(
         filename, options)
     resolver_options = file_resolver_options(recursive=options.recursive,
                                              match_basename=False,
                                              match_function=match_function)
     return file_resolver.resolve_files(files, options=resolver_options)
Exemple #3
0
    def resolve_text_files(clazz, files):
        'Resolve text files.'

        def _match_text_files(filename):
            if path.islink(filename):
                return False
            if file_util.is_empty(filename):
                return False
            return file_mime.is_text(filename)

        resolver_options = file_resolver_options(
            recursive=True,
            match_function=_match_text_files,
            match_basename=False)
        resolved = file_resolver.resolve_files(files, options=resolver_options)
        return resolved.absolute_files(sort=True)
Exemple #4
0
    def resolve_python_files(clazz, files):
        'Resolve python files.'

        def _match_python_files(filename):
            if not file_mime.is_text(filename):
                return False
            if python.is_python_script(filename):
                return True
            return filename_util.has_extension(filename.lower(), 'py')

        resolver_options = file_resolver_options(
            recursive=True,
            match_function=_match_python_files,
            match_basename=False)
        resolved = file_resolver.resolve_files(files, options=resolver_options)
        return resolved.absolute_files(sort=True)
Exemple #5
0
    def _do_operation(clazz, operation, dirs, src_pattern, dst_pattern,
                      copy_dirs, options):
        assert options
        resolver_options = file_resolver_options(recursive=True,
                                                 sort_order='depth',
                                                 sort_reverse=True)
        resolved_files = file_resolver.resolve_files(dirs,
                                                     options=resolver_options)
        operation_items, affected_dirs = \
          clazz._make_operation_items(operation,
                                      resolved_files,
                                      src_pattern,
                                      dst_pattern,
                                      copy_dirs,
                                      options.word_boundary,
                                      options.word_boundary_chars)

        for next_operation_item in operation_items:
            is_safe = next_operation_item.is_safe(operation)
            if not is_safe.safe:
                if options.unsafe:
                    options.blurber.blurb(f'UNSAFE: {is_safe.reason}')
                else:
                    raise RuntimeError(is_safe.reason)

        new_dirs = algorithm.unique(
            [path.dirname(item.dst) for item in operation_items])
        new_dirs = [d for d in new_dirs if d and not path.exists(d)]
        for next_new_dir in new_dirs:
            file_util.mkdir(next_new_dir)
        for next_operation_item in operation_items:
            next_operation_item.apply_operation(operation, options.try_git)
        if operation != refactor_operation_type.COPY_FILES:
            for d in affected_dirs:
                if path.exists(d) and dir_util.is_empty(d):
                    dir_util.remove(d)
        return operation_items
Exemple #6
0
 def _resolve_files(clazz, files, recursive):
     resolver_options = file_resolver_options(sort_order='depth',
                                              sort_reverse=True,
                                              recursive=recursive)
     return file_resolver.resolve_files(files, options=resolver_options)