diff options
Diffstat (limited to 'SCons/Tool/textfile.py')
-rw-r--r-- | SCons/Tool/textfile.py | 14 |
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: |