diff options
author | Juergen Bocklage-Ryannel <juergen@ryannel.org> | 2018-05-03 10:33:53 +0200 |
---|---|---|
committer | Juergen Bocklage-Ryannel <juergen@ryannel.org> | 2018-05-03 10:34:34 +0200 |
commit | 4259be34223d1e19eac2ebb40a1311553f913478 (patch) | |
tree | c2b3994824f272f840ff8770380b8422919eea03 | |
parent | 70fed7a8f8aa58f4910168947037ef68f611c562 (diff) | |
download | qtivi-qface-4259be34223d1e19eac2ebb40a1311553f913478.tar.gz |
added force option to generator. Force will force overwriting
files (so ignoring preserved).
-rw-r--r-- | qface/generator.py | 10 |
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, |