parse_packwerk 0.19.1 → 0.19.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parse_packwerk.rb +26 -11
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ccc04b5202c680f618fb55fa776cd19898dc5e126ec20ae1a0457366637f302
4
- data.tar.gz: 1332bbf45c911be1795602b20d2b6642682b3a2c46adc57d7602da1eea4b2599
3
+ metadata.gz: b486557a328142805a1438ec1ab80fb90a1b3b4a4e12cf73b1cc7ffb3428956a
4
+ data.tar.gz: 63c9abe25dd4c3e5073142dd61f54f89cd4b870b36ff8743d4e1b00ea501e36d
5
5
  SHA512:
6
- metadata.gz: e917cbf8dc1e687eb3478cccfa16818adfed51676a4c64d17552c795518349906fdf93fcd1bf20dd7afc24db11596db6874fb3073c76f5ff23d83d6ad37174e1
7
- data.tar.gz: d4ae625347c3dce180b658c1b2e36dddcd816db1ca7110d5e474145dcf4b936b2755a95b013eb44da06650e1f8660fd7810882419235f147596130d4ae3f97fa
6
+ metadata.gz: b2b2c4175eacf0c19572de1c0c9f59e2eb988dc7f4109bc755626543f0a1248cb495a528c1bfae6a40c8df6e243fef69546784053b85506850528dc8c1f498b5
7
+ data.tar.gz: '0608bf404eaa66deb3193662fee01a461bbea0fe6f74b03698ae689a14bd868d156beb95c67a6d075356cbee9e2e8ac4251ca59cad6281985d910f52995397e6'
@@ -3,6 +3,11 @@
3
3
  require 'sorbet-runtime'
4
4
  require 'yaml'
5
5
  require 'pathname'
6
+
7
+ # fileutils is loaded by a development gem dependency, but requiring here so clients
8
+ # do not get `uninitialized constant ParsePackwerk::FileUtils`
9
+ require 'fileutils'
10
+
6
11
  require 'parse_packwerk/constants'
7
12
  require 'parse_packwerk/violation'
8
13
  require 'parse_packwerk/package_todo'
@@ -67,17 +72,6 @@ module ParsePackwerk
67
72
  merged_config.merge!('enforce_privacy' => package.enforce_privacy)
68
73
  end
69
74
 
70
- # We want checkers of the form `enforce_xyz` to be at the top
71
- merged_config_arr = merged_config.sort_by do |k, v|
72
- if k.include?('enforce')
73
- 0
74
- else
75
- 1
76
- end
77
- end
78
-
79
- merged_config = merged_config_arr.to_h
80
-
81
75
  unless package.public_path == DEFAULT_PUBLIC_PATH
82
76
  merged_config.merge!('public_path' => package.public_path)
83
77
  end
@@ -91,6 +85,10 @@ module ParsePackwerk
91
85
  if package.metadata.any?
92
86
  merged_config.merge!('metadata' => package.metadata)
93
87
  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
+
94
92
  raw_yaml = YAML.dump(merged_config)
95
93
  # Add indentation for dependencies
96
94
  raw_yaml.gsub!(/^- /," - ")
@@ -99,6 +97,23 @@ module ParsePackwerk
99
97
  end
100
98
  end
101
99
 
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
+
102
117
  # We memoize packages_by_name for fast lookup.
103
118
  # Since Graph is an immutable value object, we can create indexes and general caching mechanisms safely.
104
119
  sig { returns(T::Hash[String, Package]) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_packwerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.1
4
+ version: 0.19.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusto Engineers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-01 00:00:00.000000000 Z
11
+ date: 2023-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime