docs: def collect_scripts_from_sources(script_paths, files_deployment,  project_path='.', is_package=False, logger=None):
      """
      Collects postgres scripts from source files
      :param script_paths: list of strings or a string with a relative path to the directory containing files with scripts
      :param files_deployment: list of files that need to be harvested. Scripts from there will only be taken
      if the path to the file is in script_paths
      :param project_path: path to the project source code
      :param is_package: are files packaged with pip egg
      :param logger: pass the logger object if needed
      :return:
      """
      logger = logger or logging.getLogger(__name__)
      scripts_dict = {}
      if script_paths:
          if not isinstance(script_paths, list):  # can be list of paths or a string, anyways converted to list
              script_paths = [script_paths]
          if is_package:
              for script_path in script_paths:
                  for file_info in pkg_resources.resource_listdir('pgpm', script_path):
                      file_content = pkg_resources.resource_string('pgpm', '{0}/{1}'.format(script_path, file_info))\
                          .decode('utf-8')
                      if file_content:
                          scripts_dict[file_info] = file_content
                          logger.debug('File {0}/{1} collected.'.format(script_path, file_info))
                      else:
                          logger.debug('File {0}/{1} not collected as it\'s empty.'.format(script_path, file_info))
          else:
              if files_deployment:  # if specific script to be deployed, only find them
                  for list_file_name in files_deployment:
                      list_file_full_path = os.path.join(project_path, list_file_name)
                      if os.path.isfile(list_file_full_path):
                          for i in range(len(script_paths)):
                              if script_paths[i] in list_file_full_path:
                                  file_content = io.open(list_file_full_path, 'r', -1, 'utf-8-sig', 'ignore').read()
                                  if file_content:
                                      scripts_dict[list_file_name] = file_content
                                      logger.debug('File {0} collected.'.format(list_file_full_path))
                                  else:
                                      logger.debug('File {0} not collected as it\'s empty.'.format(list_file_full_path))
                      else:
                          logger.debug('File {0} is not found in any of {1} folders, please specify a correct path'
                                         .format(list_file_full_path, script_paths))
              else:
                  for script_path in script_paths:
                      for subdir, dirs, files in os.walk(script_path):
                          files = sorted(files)
                          for file_info in files:
                              if file_info != settings.CONFIG_FILE_NAME and file_info[0] != '.':
                                  file_content = io.open(os.path.join(subdir, file_info),
                                                         'r', -1, 'utf-8-sig', 'ignore').read()
                                  if file_content:
                                      scripts_dict[file_info] = file_content
                                      logger.debug('File {0} collected'.format(os.path.join(subdir, file_info)))
                                  else:
                                      logger.debug('File {0} not collected as it\'s empty.'
                                                   .format(os.path.join(subdir, file_info)))
      return scripts_dict