31 lines
919 B
Python
31 lines
919 B
Python
from os.path import exists as path_exists
|
|
from os.path import join as path_join
|
|
|
|
from click.types import Path
|
|
|
|
class GitRepo(Path):
|
|
name = 'git repository'
|
|
|
|
def convert(self, value, param, ctx):
|
|
path = super().convert(value, param, ctx)
|
|
if not path_exists(path_join(path, '.git')):
|
|
self.fail('No .git directory found in {}'.format(path))
|
|
|
|
return path
|
|
|
|
|
|
class WikiRepo(GitRepo):
|
|
name = 'wiki repository'
|
|
invalid_wiki_error = '{} does not appear to be a wiki repository: missing {}'
|
|
|
|
def convert(self, value, param, ctx):
|
|
path = super().convert(value, param, ctx)
|
|
|
|
for filepath in ('articles', 'header.md', 'footer.md'):
|
|
test_path = path_join('src', filepath)
|
|
if not path_exists(path_join(path, test_path)):
|
|
self.fail(self.invalid_wiki_error.format(
|
|
path, test_path))
|
|
|
|
return path
|