code: def pull(episode):
      tutorials_dir = get_tutorials_dir()
      if not episode:
          episodes = get_all_episodes()
      else:
          episodes = [episode]
          # Validate that the list is valid.
          for episode in episodes:
              validate_episode(episode)
      # Create destination `metaflow-tutorials` dir.
      dst_parent = os.path.join(os.getcwd(), "metaflow-tutorials")
      makedirs(dst_parent)
  
      # Pull specified episodes.
      for episode in episodes:
          dst_dir = os.path.join(dst_parent, episode)
          # Check if episode has already been pulled before.
          if os.path.exists(dst_dir):
              if click.confirm(
                  "Episode "
                  + click.style('"{0}"'.format(episode), fg="red")
                  + " has already been pulled before. Do you wish "
                  "to delete the existing version?"
              ):
                  shutil.rmtree(dst_dir)
              else:
                  continue
          echo("Pulling episode ", nl=False)
          echo('"{0}"'.format(episode), fg="cyan", nl=False)
          # TODO: Is the following redundant?
          echo(" into your current working directory.")
          # Copy from (local) metaflow package dir to current.
          src_dir = os.path.join(tutorials_dir, episode)
          shutil.copytree(src_dir, dst_dir)
  
      echo("\nTo know more about an episode, type:\n", nl=False)
      echo("metaflow tutorials info [EPISODE]", fg="cyan")
  
file_path: metaflow/metaflow/cmd/tutorials_cmd.py
imports: import os
  import shutil
  from metaflow._vendor import click
  from .util import echo_always, makedirs
label_desc: Use image node_id 9 for calling a global function with example usage: pull(episode) without return types