43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
"""
|
||
|
cookiecutter.find
|
||
|
-----------------
|
||
|
|
||
|
Functions for finding Cookiecutter templates and other components.
|
||
|
"""
|
||
|
|
||
|
import logging
|
||
|
import os
|
||
|
|
||
|
from .exceptions import NonTemplatedInputDirException
|
||
|
|
||
|
|
||
|
def find_template(repo_dir):
|
||
|
"""
|
||
|
Determines 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.
|
||
|
"""
|
||
|
|
||
|
logging.debug('Searching {0} for the project template.'.format(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
|
||
|
break
|
||
|
|
||
|
if project_template:
|
||
|
project_template = os.path.join(repo_dir, project_template)
|
||
|
logging.debug(
|
||
|
'The project template appears to be {0}'.format(project_template)
|
||
|
)
|
||
|
return project_template
|
||
|
else:
|
||
|
raise NonTemplatedInputDirException
|