summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <juergen@ryannel.org>2018-05-03 10:33:53 +0200
committerJuergen Bocklage-Ryannel <juergen@ryannel.org>2018-05-03 10:34:34 +0200
commit4259be34223d1e19eac2ebb40a1311553f913478 (patch)
treec2b3994824f272f840ff8770380b8422919eea03
parent70fed7a8f8aa58f4910168947037ef68f611c562 (diff)
downloadqtivi-qface-4259be34223d1e19eac2ebb40a1311553f913478.tar.gz
added force option to generator. Force will force overwriting
files (so ignoring preserved).
-rw-r--r--qface/generator.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/qface/generator.py b/qface/generator.py
index 91049ba..e65ad15 100644
--- a/qface/generator.py
+++ b/qface/generator.py
@@ -73,7 +73,7 @@ class Generator(object):
strict = False
""" enables strict code generation """
- def __init__(self, search_path, context={}):
+ def __init__(self, search_path, context={}, force=False):
loader = ChoiceLoader([
FileSystemLoader(search_path),
PackageLoader('qface')
@@ -88,6 +88,7 @@ class Generator(object):
self._destination = Path()
self._source = ''
self.context = context
+ self.force = force
@property
def destination(self):
@@ -165,12 +166,13 @@ class Generator(object):
sys.exit(1)
def _write(self, file_path: Path, template: str, context: dict, preserve: bool = False, force: bool = False):
+ force = self.force or force
path = self.destination / Path(self.apply(file_path, context))
path.parent.makedirs_p()
logger.info('write {0}'.format(path))
data = self.render(template, context)
if self._has_different_content(data, path) or force:
- if path.exists() and preserve:
+ if path.exists() and preserve and not force:
click.secho('preserve: {0}'.format(path), fg='blue')
else:
click.secho('create: {0}'.format(path), fg='blue')
@@ -190,8 +192,8 @@ class Generator(object):
class RuleGenerator(Generator):
"""Generates documents based on a rule YAML document"""
- def __init__(self, search_path: str, destination:Path, context:dict={}, features:set=set()):
- super().__init__(search_path, context)
+ def __init__(self, search_path: str, destination:Path, context:dict={}, features:set=set(), force=False):
+ super().__init__(search_path, context, force)
self.context.update({
'dst': destination,
'project': Path(destination).name,