docs: def run(
      paths,
      output=_I_STILL_HATE_EVERYTHING,
      recurse=core.flat,
      sort_by=None,
      ls=core.ls,
      stdout=stdout,
  ):
      """
      Project-oriented directory and file information lister.
  
      """
  
      if output is _I_STILL_HATE_EVERYTHING:
          output = core.columnized if stdout.isatty() else core.one_per_line
      if sort_by is None:
          if output == core.as_tree:
              def sort_by(thing):
                  return (
                      thing.parent(),
                      thing.basename().lstrip(string.punctuation).lower(),
                  )
          else:
              def sort_by(thing):
                  return thing
  
      def _sort_by(thing):
          return not getattr(thing, "_always_sorts_first", False), sort_by(thing)
  
      contents = [
          path_and_children
          for path in paths or (project.from_path(FilePath(".")),)
          for path_and_children in recurse(path=path, ls=ls)
      ]
      for line in output(contents, sort_by=_sort_by):
          stdout.write(line)
          stdout.write("\n")