Skip to content

Commit cf8b045

Browse files
committed
Fix build-script --dump-config
The Version object used __slots__ instead of __dict__, so it was not serializable. Update JSONDumper to stringify objects if vars() won’t work. This change does not update any tests because build-script does not currently have a way to write full-script integration tests.
1 parent 171e12f commit cf8b045

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

utils/build-script

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ from build_swift.build_swift import driver_arguments
2424
from build_swift.build_swift import migration
2525
from build_swift.build_swift import presets
2626

27+
import six
28+
2729
from swift_build_support.swift_build_support import (
2830
debug,
2931
diagnostics,
@@ -59,11 +61,14 @@ def exit_rejecting_arguments(message, parser=None):
5961

6062
class JSONDumper(json.JSONEncoder):
6163
def __init__(self, *args, **kwargs):
62-
json.JSONEncoder.__init__(self, indent=2, separators=(',', ': '),
63-
*args, **kwargs)
64+
json.JSONEncoder.__init__(
65+
self, indent=2, separators=(',', ': '), sort_keys=True,
66+
*args, **kwargs)
6467

6568
def default(self, o):
66-
return vars(o)
69+
if hasattr(o, '__dict__'):
70+
return vars(o)
71+
return six.text_type(o)
6772

6873

6974
class BuildScriptInvocation(object):

0 commit comments

Comments
 (0)