docs: def dump_executable(executable, destination_directory, omit_resources=False, describe_output={}):
      """
      Reconstitutes an app, applet, or a workflow into a directory that would
      create a functionally identical executable if "dx build" were run on it.
      destination_directory will be the root source directory for the
      executable.
  
      :param executable: executable, i.e. app, applet, or workflow, to be dumped
      :type executable: DXExecutable (either of: DXApp, DXApplet, DXWorkflow, DXGlobalWorkflow)
      :param destination_directory: an existing, empty, and writable directory
      :type destination_directory: str
      :param omit_resources: if True, executable's resources will not be downloaded
      :type omit_resources: boolean
      :param describe_output: output of a describe API call on the executable
      :type describe_output: dictionary
      """
      try:
          old_cwd = os.getcwd()
          os.chdir(destination_directory)
          if isinstance(executable, dxpy.DXWorkflow):
              _dump_workflow(executable, describe_output)
          elif isinstance(executable, dxpy.DXGlobalWorkflow):
              # Add inputs, outputs, stages. These fields contain region-specific values
              # e.g. files or applets, that's why:
              # * if the workflow is global, we will unpack the underlying workflow
              #   from the region of the current project context
              # * if this is a regular, project-based workflow, we will just use
              #   its description (the describe_output that we already have)
              # Underlying workflows are workflows stored in resource containers
              # of the global workflow (one per each region the global workflow is
              # enabled in). #TODO: add a link to documentation.
              current_project = dxpy.WORKSPACE_ID
              if not current_project:
                  raise DXError(
                      'A project needs to be selected to "dx get" a global workflow. You can use "dx select" to select a project')
              region = dxpy.api.project_describe(current_project,
                                                 input_params={"fields": {"region": True}})["region"]
              describe_output = executable.append_underlying_workflow_desc(describe_output, region)
              _dump_workflow(executable, describe_output)
          else:
              _dump_app_or_applet(executable, omit_resources, describe_output)
      except:
          err_exit()
      finally:
          os.chdir(old_cwd)