# Path: cli_bdd/core/steps/base.py
# class StepBase(object):
#     type_ = None  # given, when, then
#     sentence = None
#     func_name = None
# 
#     def build_step_func(self):
#         raise NotImplementedError()
# 
#     def get_table(self):
#         raise NotImplementedError()
# 
#     def get_text(self):
#         raise NotImplementedError()
# 
#     def get_scenario_context(self):
#         raise NotImplementedError()


import os
import shutil
from hamcrest import assert_that, equal_to
from cli_bdd.core.steps.base import StepBase
    )

    def step(self, file_or_directory, source, destination):
        if file_or_directory == 'file':
            shutil.copyfile(source, destination)
        else:
            shutil.copytree(source, destination)


class MoveFileOrDirectory(StepBase):
    """Moves a file or directory.

    Examples:

    ```gherkin
    Given I move a file from "/tmp/old.txt" to "/var/new.txt"
    Given I move the file named "hello.txt" to "/var/"
    Given I move a directory from "/tmp/hello/" to "/var/"
    ```
    """
    type_ = 'given'
    sentence = (
        'I move (a|the) (?P<file_or_directory>(file|directory))'
        '( (named|from))? "(?P<source>[^"]*)" to "(?P<destination>[^"]*)"'
    )

    def step(self, file_or_directory, source, destination):
        shutil.move(source, destination)



# Path: cli_bdd/core/steps/base.py
# class StepBase(object):
#     type_ = None  # given, when, then
#     sentence = None
#     func_name = None
# 
#     def build_step_func(self):
#         raise NotImplementedError()
# 
#     def get_table(self):
#         raise NotImplementedError()
# 
#     def get_text(self):
#         raise NotImplementedError()
# 
#     def get_scenario_context(self):
#         raise NotImplementedError()


# Path: cli_bdd/core/steps/file.py
import os
import shutil
from hamcrest import assert_that, equal_to
from cli_bdd.core.steps.base import StepBase

    )

    def step(self, file_or_directory, source, destination):
        if file_or_directory == 'file':
            shutil.copyfile(source, destination)
        else:
            shutil.copytree(source, destination)


class MoveFileOrDirectory(StepBase):
    """Moves a file or directory.

    Examples:

    ```gherkin
    Given I move a file from "/tmp/old.txt" to "/var/new.txt"
    Given I move the file named "hello.txt" to "/var/"
    Given I move a directory from "/tmp/hello/" to "/var/"
    ```
    """
    type_ = 'given'
    sentence = (
        'I move (a|the) (?P<file_or_directory>(file|directory))'
        '( (named|from))? "(?P<source>[^"]*)" to "(?P<destination>[^"]*)"'
    )

    def step(self, file_or_directory, source, destination):
        shutil.move(source, destination)



class CreateDirectory(StepBase):