# Path: auto_forensicate/errors.py
# class BadConfigOption(Exception):
# class ForensicateError(Exception):
# class RecipeException(Exception):
# class RetryableError(ForensicateError):
# 
# Path: auto_forensicate/recipes/base.py
# class BaseArtifact(object):
# class StringArtifact(BaseArtifact):
# class FileArtifact(BaseArtifact):
# class ProcessOutputArtifact(BaseArtifact):
# class BaseRecipe(object):
#   def __init__(self, name):
#   def _GetStream(self):
#   def CloseStream(self):
#   def OpenStream(self):
#   def size(self):
#   def readable_size(self):
#   def __init__(self, path, string_content):
#   def _GetStream(self):
#   def CloseStream(self):
#   def __init__(self, path):
#   def _GetStream(self):
#   def __init__(self, command, path, ignore_failure=False):
#   def _RunCommand(self):
#   def _GetStream(self):
#   def __init__(self, name, options=None):
#   def __enter__(self):
#   def __exit__(self, exc_type, exc_value, traceback):
#   def GetArtifacts(self):
# 
# Path: auto_forensicate/ux/cli.py
# def AskText(message, mandatory=False):
# def AskDiskList(disk_list):
# def Confirm(text, default='N'):
# 
# Path: auto_forensicate/ux/gui.py
# def AskText(message, mandatory=False):
# def AskDiskList(disk_list):
# def Confirm(text):


import os
import subprocess
from auto_forensicate import errors
from auto_forensicate.recipes import base
from auto_forensicate.ux import cli
from auto_forensicate.ux import gui
    if method not in self._SUPPORTED_METHODS:
      raise errors.RecipeException(
          'Unsupported acquisition method on Darwin: '+method)
    super().__init__(path, method=method, compress=compress)


class DirectoryRecipe(base.BaseRecipe):
  """The DirectoryRecipe class.

  This Recipe acquires a mounted filesystem.
  """

  def GetArtifacts(self):
    """Returns a list of DirectoryArtifacts to acquire.

    Returns:
      list(DirectoryArtifacts): the artifacts to acquire.
    """
    more_to_copy = True
    path_list = []
    while more_to_copy:
      if getattr(self._options, 'no_zenity', False):
        path = cli.AskText(
            'Specify the path to the directory you wish to copy')
        if not os.path.isdir(path):
          print(
              'The following path does not exist or is not a directory:'
              '{0:s}'.format(path))
          continue
        path_list.append(path)

# Path: auto_forensicate/errors.py
# class BadConfigOption(Exception):
# class ForensicateError(Exception):
# class RecipeException(Exception):
# class RetryableError(ForensicateError):
# 
# Path: auto_forensicate/recipes/base.py
# class BaseArtifact(object):
# class StringArtifact(BaseArtifact):
# class FileArtifact(BaseArtifact):
# class ProcessOutputArtifact(BaseArtifact):
# class BaseRecipe(object):
#   def __init__(self, name):
#   def _GetStream(self):
#   def CloseStream(self):
#   def OpenStream(self):
#   def size(self):
#   def readable_size(self):
#   def __init__(self, path, string_content):
#   def _GetStream(self):
#   def CloseStream(self):
#   def __init__(self, path):
#   def _GetStream(self):
#   def __init__(self, command, path, ignore_failure=False):
#   def _RunCommand(self):
#   def _GetStream(self):
#   def __init__(self, name, options=None):
#   def __enter__(self):
#   def __exit__(self, exc_type, exc_value, traceback):
#   def GetArtifacts(self):
# 
# Path: auto_forensicate/ux/cli.py
# def AskText(message, mandatory=False):
# def AskDiskList(disk_list):
# def Confirm(text, default='N'):
# 
# Path: auto_forensicate/ux/gui.py
# def AskText(message, mandatory=False):
# def AskDiskList(disk_list):
# def Confirm(text):


# Path: auto_forensicate/recipes/directory.py
import os
import subprocess
from auto_forensicate import errors
from auto_forensicate.recipes import base
from auto_forensicate.ux import cli
from auto_forensicate.ux import gui

    if method not in self._SUPPORTED_METHODS:
      raise errors.RecipeException(
          'Unsupported acquisition method on Darwin: '+method)
    super().__init__(path, method=method, compress=compress)


class DirectoryRecipe(base.BaseRecipe):
  """The DirectoryRecipe class.

  This Recipe acquires a mounted filesystem.
  """

  def GetArtifacts(self):
    """Returns a list of DirectoryArtifacts to acquire.

    Returns:
      list(DirectoryArtifacts): the artifacts to acquire.
    """
    more_to_copy = True
    path_list = []
    while more_to_copy:
      if getattr(self._options, 'no_zenity', False):
        path = cli.AskText(
            'Specify the path to the directory you wish to copy')
        if not os.path.isdir(path):
          print(
              'The following path does not exist or is not a directory:'
              '{0:s}'.format(path))
          continue
        path_list.append(path)

        more_to_copy = cli.Confirm('Do you wish to copy another folder?')