summaryrefslogtreecommitdiff
path: root/SCons/Tool/textfile.py
diff options
context:
space:
mode:
Diffstat (limited to 'SCons/Tool/textfile.py')
-rw-r--r--SCons/Tool/textfile.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/SCons/Tool/textfile.py b/SCons/Tool/textfile.py
index 7fdc8b7be..9d98644c4 100644
--- a/SCons/Tool/textfile.py
+++ b/SCons/Tool/textfile.py
@@ -117,9 +117,12 @@ def _action(target, source, env):
value = str(value)
subs.append((k, value))
+ # Pull file encoding from the environment or default to UTF-8
+ file_encoding = env.get('FILE_ENCODING', 'utf-8')
+
# write the file
try:
- target_file = open(target[0].get_path(), TEXTFILE_FILE_WRITE_MODE, newline='')
+ target_file = open(target[0].get_path(), TEXTFILE_FILE_WRITE_MODE, newline='', encoding=file_encoding)
except (OSError, IOError) as e:
raise SCons.Errors.UserError("Can't write target file %s [%s]" % (target[0],e))
@@ -134,11 +137,11 @@ def _action(target, source, env):
target_file.close()
-def _strfunc(target, source, env):
+def _strfunc(target, source, env) -> str:
return "Creating '%s'" % target[0]
-def _convert_list_R(newlist, sources):
+def _convert_list_R(newlist, sources) -> None:
for elem in sources:
if is_Sequence(elem):
_convert_list_R(newlist, elem)
@@ -178,7 +181,7 @@ _subst_builder = SCons.Builder.Builder(
)
-def generate(env):
+def generate(env) -> None:
env['LINESEPARATOR'] = LINESEP # os.linesep
env['BUILDERS']['Textfile'] = _text_builder
env['TEXTFILEPREFIX'] = ''
@@ -186,9 +189,10 @@ def generate(env):
env['BUILDERS']['Substfile'] = _subst_builder
env['SUBSTFILEPREFIX'] = ''
env['SUBSTFILESUFFIX'] = ''
+ env['FILE_ENCODING'] = env.get('FILE_ENCODING', 'utf-8')
-def exists(env):
+def exists(env) -> int:
return 1
# Local Variables: