diff --git a/dbt/clients/system.py b/dbt/clients/system.py index 2ea6d582a80..3ee2eee36e0 100644 --- a/dbt/clients/system.py +++ b/dbt/clients/system.py @@ -1,5 +1,6 @@ import errno import fnmatch +import json import os import os.path import shutil @@ -119,9 +120,7 @@ def write_file(path, contents=''): def write_json(path, data): - make_directory(os.path.dirname(path)) - dbt.compat.write_json(path, data, cls=dbt.utils.JSONEncoder) - return True + return write_file(path, json.dumps(data, cls=dbt.utils.JSONEncoder)) def _windows_rmdir_readonly(func, path, exc): diff --git a/dbt/compat.py b/dbt/compat.py index e5a8d5daa34..0e450552326 100644 --- a/dbt/compat.py +++ b/dbt/compat.py @@ -44,18 +44,10 @@ def to_string(s): return str(s) -def _open(path, mode): +def write_file(path, s): if WHICH_PYTHON == 2: - return codecs.open(path, mode, encoding='utf-8') + with codecs.open(path, 'w', encoding='utf-8') as f: + return f.write(to_string(s)) else: - return open(path, 'w') - - -def write_file(path, s): - with _open(path, 'w') as fp: - return fp.write(to_string(s)) - - -def write_json(path, data, **kwargs): - with _open(path, 'w') as fp: - json.dump(data, fp, **kwargs) + with open(path, 'w') as f: + return f.write(to_string(s))