Find refactored and type annotated
"""Functions for finding Cookiecutter templates and other components."""
import logging
import os
+from pathlib import Path
from cookiecutter.exceptions import NonTemplatedInputDirException
logger = logging.getLogger(__name__)
-def find_template(repo_dir):
- """Determine which child directory of `repo_dir` is the project template.
+def find_template(repo_dir: os.PathLike[str]) -> Path:
+ """Determine which child directory of ``repo_dir`` is the project template.
:param repo_dir: Local directory of newly cloned repo.
- :returns project_template: Relative path to project template.
+ :return: Relative path to project template.
"""
logger.debug('Searching %s for the project template.', repo_dir)
- repo_dir_contents = os.listdir(repo_dir)
-
- project_template = None
- for item in repo_dir_contents:
- if 'cookiecutter' in item and '{{' in item and '}}' in item:
- project_template = item
+ for str_path in os.listdir(repo_dir):
+ if 'cookiecutter' in str_path and '{{' in str_path and '}}' in str_path:
+ project_template = Path(repo_dir, str_path)
break
+ else:
+ raise NonTemplatedInputDirException
- if project_template:
- project_template = os.path.join(repo_dir, project_template)
logger.debug('The project template appears to be %s', project_template)
return project_template
- else:
- raise NonTemplatedInputDirException
