Skip to content

Commit 863b40d

Browse files
authored
Merge pull request #6121 from theotherjimmy/mbedignore-append
Avoid blowing away .mbedignore files in exporters
2 parents 636ced8 + 8d7311d commit 863b40d

File tree

5 files changed

+36
-5
lines changed

5 files changed

+36
-5
lines changed

tools/export/e2studio/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,5 @@ def generate(self):
3737
self.gen_file('e2studio/launch.tmpl', jinja_ctx, '%s OpenOCD.launch' % self.project_name, trim_blocks=True, lstrip_blocks=True)
3838

3939
self.gen_file('gnuarmeclipse/.project.tmpl', jinja_ctx, '.project', trim_blocks=True, lstrip_blocks=True)
40-
self.gen_file('gnuarmeclipse/mbedignore.tmpl', jinja_ctx, '.mbedignore')
40+
self.gen_file_nonoverwrite('gnuarmeclipse/mbedignore.tmpl', jinja_ctx, '.mbedignore')
4141
self.gen_file('gnuarmeclipse/makefile.targets.tmpl', jinja_ctx, 'makefile.targets', trim_blocks=True, lstrip_blocks=True)

tools/export/exporters.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import os
33
from abc import abstractmethod, ABCMeta
44
import logging
5-
from os.path import join, dirname, relpath, basename, realpath, normpath
5+
from os.path import join, dirname, relpath, basename, realpath, normpath, exists
66
from itertools import groupby
77
from jinja2 import FileSystemLoader, StrictUndefined
88
from jinja2.environment import Environment
@@ -130,7 +130,34 @@ def get_source_paths(self):
130130
source_files.extend(getattr(self.resources, key))
131131
return list(set([os.path.dirname(src) for src in source_files]))
132132

133+
def gen_file_dest(self, target_file):
134+
"""Generate the project file location in an exported project"""
135+
return join(self.export_dir, target_file)
136+
133137
def gen_file(self, template_file, data, target_file, **kwargs):
138+
"""Generates a project file from a template using jinja"""
139+
target_text = self._gen_file_inner(template_file, data, target_file, **kwargs)
140+
target_path = self.gen_file_dest(target_file)
141+
logging.debug("Generating: %s", target_path)
142+
open(target_path, "w").write(target_text)
143+
self.generated_files += [target_path]
144+
145+
def gen_file_nonoverwrite(self, template_file, data, target_file, **kwargs):
146+
"""Generates a project file from a template using jinja"""
147+
target_text = self._gen_file_inner(template_file, data, target_file, **kwargs)
148+
target_path = self.gen_file_dest(target_file)
149+
if exists(target_path):
150+
with open(target_path) as fdin:
151+
old_text = fdin.read()
152+
if target_text not in old_text:
153+
with open(target_path, "a") as fdout:
154+
fdout.write(target_text)
155+
else:
156+
logging.debug("Generating: %s", target_path)
157+
open(target_path, "w").write(target_text)
158+
self.generated_files += [target_path]
159+
160+
def _gen_file_inner(self, template_file, data, target_file, **kwargs):
134161
"""Generates a project file from a template using jinja"""
135162
jinja_loader = FileSystemLoader(
136163
os.path.dirname(os.path.abspath(__file__)))
@@ -139,6 +166,7 @@ def gen_file(self, template_file, data, target_file, **kwargs):
139166

140167
template = jinja_environment.get_template(template_file)
141168
target_text = template.render(data)
169+
return target_text
142170

143171
target_path = join(self.export_dir, target_file)
144172
logging.debug("Generating: %s", target_path)

tools/export/gnuarmeclipse/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,8 @@ def generate(self):
293293
'.cproject', trim_blocks=True, lstrip_blocks=True)
294294
self.gen_file('gnuarmeclipse/makefile.targets.tmpl', jinja_ctx,
295295
'makefile.targets', trim_blocks=True, lstrip_blocks=True)
296-
self.gen_file('gnuarmeclipse/mbedignore.tmpl', jinja_ctx, '.mbedignore')
296+
self.gen_file_nonoverwrite('gnuarmeclipse/mbedignore.tmpl', jinja_ctx,
297+
'.mbedignore')
297298

298299
print
299300
print 'Done. Import the \'{0}\' project in Eclipse.'.format(self.project_name)

tools/export/mcuxpresso/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,8 @@ def generate(self):
224224
'.cproject', trim_blocks=True, lstrip_blocks=True)
225225
self.gen_file('mcuxpresso/makefile.targets.tmpl', jinja_ctx,
226226
'makefile.targets', trim_blocks=True, lstrip_blocks=True)
227-
self.gen_file('mcuxpresso/mbedignore.tmpl', jinja_ctx, '.mbedignore')
227+
self.gen_file_nonoverwrite('mcuxpresso/mbedignore.tmpl', jinja_ctx,
228+
'.mbedignore')
228229

229230
print
230231
print 'Done. Import the \'{0}\' project in Eclipse.'.format(self.project_name)

tools/export/nb/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,8 @@ def generate(self):
268268

269269
self.gen_file('nb/configurations.tmpl', jinja_ctx, 'nbproject/configurations.xml')
270270
self.gen_file('nb/project.tmpl', jinja_ctx, 'nbproject/project.xml')
271-
self.gen_file('nb/mbedignore.tmpl', jinja_ctx, '.mbedignore')
271+
self.gen_file_nonoverwrite('nb/mbedignore.tmpl', jinja_ctx,
272+
'.mbedignore')
272273
self.gen_file('nb/Makefile.tmpl', jinja_ctx, 'Makefile')
273274

274275
print

0 commit comments

Comments
 (0)