# Path: simiki/config.py
# def parse_config(config_file):
#     if not os.path.exists(config_file):
#         raise ConfigFileNotFound("{0} not exists".format(config_file))
# 
#     default_config = _set_default_config()
# 
#     with io.open(config_file, "rt", encoding="utf-8") as fd:
#         config = yaml.load(fd, Loader=yaml.FullLoader)
# 
#     default_config.update(config)
#     config = _post_process(default_config)
# 
#     return config
# 
# Path: simiki/utils.py
# def copytree(src, dst, symlinks=False, ignore=None):
#     """Copy from source directory to destination"""
# 
#     if not os.path.exists(dst):
#         os.makedirs(dst)
#     for item in os.listdir(src):
#         s = os.path.join(src, item)
#         d = os.path.join(dst, item)
#         if os.path.isdir(s):
#             copytree(s, d, symlinks, ignore)
#         else:
#             shutil.copy2(s, d)
# 
# def mkdir_p(path):
#     """Make parent directories as needed, like `mkdir -p`"""
#     try:
#         os.makedirs(path)
#     except OSError as exc:  # Python >2.5
#         # if dir exists, not error
#         if exc.errno == errno.EEXIST and os.path.isdir(path):
#             pass
#         else:
#             raise
# 
# def listdir_nohidden(path):
#     """List not hidden files or directories under path"""
#     for f in os.listdir(path):
#         if isinstance(f, str):
#             f = unicode(f)
#         if not f.startswith('.'):
#             yield f
# 
# Path: simiki/compat.py



import os
import os.path
import shutil
import logging
from simiki.config import parse_config
from simiki.utils import (copytree, mkdir_p, listdir_nohidden)
from simiki.compat import raw_input
        if not os.path.exists(dst_directory):
            mkdir_p(dst_directory)
            logging.info("Creating directory: {0}".format(dst_directory))

        shutil.copyfile(src, dst)
        logging.info("Creating file: {0}".format(dst))

    def get_config_file(self):
        dst_config_file = os.path.join(self.target_path, self.config_fn)
        self.get_file(self.config_file, dst_config_file)

    def get_fabfile(self):
        src_fabfile = os.path.join(
            self.source_path,
            self.conf_template_dn,
            self.fabfile_fn
        )
        dst_fabfile = os.path.join(self.target_path, self.fabfile_fn)
        self.get_file(src_fabfile, dst_fabfile)

    def get_dockerfile(self):
        src_dockerfile = os.path.join(
            self.source_path,
            self.conf_template_dn,
            self.dockerfile_fn
        )
        dst_dockerfile = os.path.join(self.target_path, self.dockerfile_fn)
        self.get_file(src_dockerfile, dst_dockerfile)

    def get_demo_page(self):

# Path: simiki/config.py
# def parse_config(config_file):
#     if not os.path.exists(config_file):
#         raise ConfigFileNotFound("{0} not exists".format(config_file))
# 
#     default_config = _set_default_config()
# 
#     with io.open(config_file, "rt", encoding="utf-8") as fd:
#         config = yaml.load(fd, Loader=yaml.FullLoader)
# 
#     default_config.update(config)
#     config = _post_process(default_config)
# 
#     return config
# 
# Path: simiki/utils.py
# def copytree(src, dst, symlinks=False, ignore=None):
#     """Copy from source directory to destination"""
# 
#     if not os.path.exists(dst):
#         os.makedirs(dst)
#     for item in os.listdir(src):
#         s = os.path.join(src, item)
#         d = os.path.join(dst, item)
#         if os.path.isdir(s):
#             copytree(s, d, symlinks, ignore)
#         else:
#             shutil.copy2(s, d)
# 
# def mkdir_p(path):
#     """Make parent directories as needed, like `mkdir -p`"""
#     try:
#         os.makedirs(path)
#     except OSError as exc:  # Python >2.5
#         # if dir exists, not error
#         if exc.errno == errno.EEXIST and os.path.isdir(path):
#             pass
#         else:
#             raise
# 
# def listdir_nohidden(path):
#     """List not hidden files or directories under path"""
#     for f in os.listdir(path):
#         if isinstance(f, str):
#             f = unicode(f)
#         if not f.startswith('.'):
#             yield f
# 
# Path: simiki/compat.py



# Path: simiki/initiator.py
import os
import os.path
import shutil
import logging
from simiki.config import parse_config
from simiki.utils import (copytree, mkdir_p, listdir_nohidden)
from simiki.compat import raw_input

        if not os.path.exists(dst_directory):
            mkdir_p(dst_directory)
            logging.info("Creating directory: {0}".format(dst_directory))

        shutil.copyfile(src, dst)
        logging.info("Creating file: {0}".format(dst))

    def get_config_file(self):
        dst_config_file = os.path.join(self.target_path, self.config_fn)
        self.get_file(self.config_file, dst_config_file)

    def get_fabfile(self):
        src_fabfile = os.path.join(
            self.source_path,
            self.conf_template_dn,
            self.fabfile_fn
        )
        dst_fabfile = os.path.join(self.target_path, self.fabfile_fn)
        self.get_file(src_fabfile, dst_fabfile)

    def get_dockerfile(self):
        src_dockerfile = os.path.join(
            self.source_path,
            self.conf_template_dn,
            self.dockerfile_fn
        )
        dst_dockerfile = os.path.join(self.target_path, self.dockerfile_fn)
        self.get_file(src_dockerfile, dst_dockerfile)

    def get_demo_page(self):

        nohidden_dir = listdir_nohidden(