@@ -72,17 +72,6 @@ def self.write_package_yml!(package)
7272 merged_config . merge! ( 'enforce_privacy' => package . enforce_privacy )
7373 end
7474
75- # We want checkers of the form `enforce_xyz` to be at the top
76- merged_config_arr = merged_config . sort_by do |k , v |
77- if k . include? ( 'enforce' )
78- 0
79- else
80- 1
81- end
82- end
83-
84- merged_config = merged_config_arr . to_h
85-
8675 unless package . public_path == DEFAULT_PUBLIC_PATH
8776 merged_config . merge! ( 'public_path' => package . public_path )
8877 end
@@ -96,6 +85,10 @@ def self.write_package_yml!(package)
9685 if package . metadata . any?
9786 merged_config . merge! ( 'metadata' => package . metadata )
9887 end
88+
89+ sorted_keys = key_sort_order
90+ merged_config = merged_config . to_a . sort_by { |key , value | T . unsafe ( sorted_keys ) . index ( key ) || 1000 } . to_h
91+
9992 raw_yaml = YAML . dump ( merged_config )
10093 # Add indentation for dependencies
10194 raw_yaml . gsub! ( /^- / , " - " )
@@ -104,6 +97,23 @@ def self.write_package_yml!(package)
10497 end
10598 end
10699
100+ sig { returns ( T ::Array [ String ] ) }
101+ def self . key_sort_order
102+ %w(
103+ enforce_dependencies
104+ enforce_privacy
105+ enforce_visibility
106+ enforce_architecture
107+ public_path
108+ owner
109+ layer
110+ dependencies
111+ ignored_dependencies
112+ visible_to
113+ metadata
114+ )
115+ end
116+
107117 # We memoize packages_by_name for fast lookup.
108118 # Since Graph is an immutable value object, we can create indexes and general caching mechanisms safely.
109119 sig { returns ( T ::Hash [ String , Package ] ) }
0 commit comments