code: def ProcessSources(self):
      
      scan_context = self.ScanSource(self._source_path)
      self._source_type = scan_context.source_type
  
      self._output_writer.Write('Export started.\n')
  
      if not os.path.isdir(self._destination_path):
        os.makedirs(self._destination_path)
  
      if self._artifact_filters or self._filter_file:
        self._ExtractWithFilter(
            self._source_path_specs, self._destination_path, self._output_writer,
            self._artifact_filters, self._filter_file,
            self._artifact_definitions_path, self._custom_artifacts_path,
            skip_duplicates=self._skip_duplicates)
      else:
        self._Extract(
            self._source_path_specs, self._destination_path, self._output_writer,
            skip_duplicates=self._skip_duplicates)
  
      self._output_writer.Write('Export completed.\n')
      self._output_writer.Write('\n')
docs: Processes the sources.
  
      Raises:
        SourceScannerError: if the source scanner could not find a supported
            file system.
        UserAbort: if the user initiated an abort.