parse_packwerk 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54e72896efeae11785e34d5c4445255a7418499095d6f8f10443047437e49ad4
4
- data.tar.gz: e722da109f4ef007f2b017d2fdbc4aba4cc6b09d94d8efb031cb7f4f7a1dae40
3
+ metadata.gz: 7665b37cbab9d74a91785449408830963feeef02bd1816827c54c39f3504228c
4
+ data.tar.gz: e80b45a3f6c801aa5c17e7951030bbb8f976632a8c9e4f799cbde23e1ed34988
5
5
  SHA512:
6
- metadata.gz: 993a09365ac56439efba8c66c0892275a184969be156e9b33cd7e8d218ab00222f55f7488d888348bb73805b91b7b3a223d46e58236695c567628a175fbe4508
7
- data.tar.gz: 7d7b919458f16a8c53038405a3e777552a92e1660a23312a288d4b0653ba59648314fd861be63b4c27f89b50975cb4bf24756538e40cadfbe803e5160c72f5d2
6
+ metadata.gz: 6e2ee542e063f014e7e278f089742f9318b4569208e88acd8b3eed9b7358f1000de57e4a812ec8d52c75e11ab8bf5af961ae58f2b4ccf6b09cf28f6a6dbae248
7
+ data.tar.gz: 1bf86e70a1ad52ef21ddde492788ab72d90c479baca3dec887c774c45c14971a4b12fe07e58b383fd229a16ab941a9f8a2c68ddebcdfde811c634c6ce193b502
@@ -12,12 +12,12 @@ module ParsePackwerk
12
12
  sig { returns(Configuration) }
13
13
  def self.fetch
14
14
  packwerk_yml_filename = Pathname.new(PACKWERK_YML_NAME)
15
- if !File.exist?(packwerk_yml_filename)
16
- raw_packwerk_config = {}
17
- else
15
+ if File.exist?(packwerk_yml_filename)
18
16
  # when the YML file is empty or only contains comment, it gets parsed
19
17
  # as the boolean `false` for some reason. this handles that case
20
18
  raw_packwerk_config = YAML.load_file(packwerk_yml_filename) || {}
19
+ else
20
+ raw_packwerk_config = {}
21
21
  end
22
22
 
23
23
  Configuration.new(
@@ -32,22 +32,22 @@ module ParsePackwerk
32
32
  def self.excludes(config_hash)
33
33
  specified_exclude = config_hash['exclude']
34
34
  excludes = if specified_exclude.nil?
35
- DEFAULT_EXCLUDE_GLOBS.dup
36
- else
37
- Array(specified_exclude)
38
- end
35
+ DEFAULT_EXCLUDE_GLOBS.dup
36
+ else
37
+ Array(specified_exclude)
38
+ end
39
39
 
40
- excludes.push Bundler.bundle_path.join("**").to_s
40
+ excludes.push Bundler.bundle_path.join('**').to_s
41
41
  end
42
42
 
43
43
  sig { params(config_hash: T::Hash[T.untyped, T.untyped]).returns(T::Array[String]) }
44
44
  def self.package_paths(config_hash)
45
45
  specified_package_paths = config_hash['package_paths']
46
46
  package_paths = if specified_package_paths.nil?
47
- DEFAULT_PACKAGE_PATHS.dup
48
- else
49
- Array(specified_package_paths)
50
- end
47
+ DEFAULT_PACKAGE_PATHS.dup
48
+ else
49
+ Array(specified_package_paths)
50
+ end
51
51
 
52
52
  # We add the root package path always
53
53
  package_paths.push '.'
@@ -19,7 +19,7 @@ module ParsePackwerk
19
19
  T::Hash[T.untyped, T.untyped]
20
20
  end
21
21
 
22
- DEFAULT_EXCLUDE_GLOBS = T.let(["{bin,node_modules,script,tmp,vendor}/**/*"], T::Array[String])
22
+ DEFAULT_EXCLUDE_GLOBS = T.let(['{bin,node_modules,script,tmp,vendor}/**/*'], T::Array[String])
23
23
  DEFAULT_PACKAGE_PATHS = T.let(['**/'], T::Array[String])
24
24
  DEFAULT_PUBLIC_PATH = T.let('app/public', String)
25
25
  end
@@ -5,20 +5,20 @@ module ParsePackwerk
5
5
  extend T::Sig
6
6
 
7
7
  const :name, String
8
- const :enforce_dependencies, T.any(T::Boolean, String)
8
+ const :enforce_dependencies, T.nilable(T.any(T::Boolean, String))
9
9
  const :enforce_privacy, T.any(T::Boolean, String), default: false
10
10
  const :public_path, String, default: DEFAULT_PUBLIC_PATH
11
11
  const :metadata, MetadataYmlType
12
12
  const :dependencies, T::Array[String]
13
13
  const :config, T::Hash[T.untyped, T.untyped]
14
- const :violations, T.nilable(T::Array[Violation])
14
+ const :violations, T::Array[Violation]
15
15
 
16
16
  sig { params(pathname: Pathname).returns(Package) }
17
17
  def self.from(pathname)
18
18
  package_loaded_yml = YAML.load_file(pathname)
19
19
  if package_loaded_yml.nil? || package_loaded_yml == false
20
20
  message = "Failed to parse `#{pathname}`. Please fix any issues with this package.yml OR add its containing folder to packwerk.yml `exclude`"
21
- raise PackageParseError.new(message)
21
+ raise PackageParseError, message
22
22
  end
23
23
  package_name = pathname.dirname.cleanpath.to_s
24
24
 
@@ -46,7 +46,7 @@ module ParsePackwerk
46
46
 
47
47
  sig { returns(Pathname) }
48
48
  def directory
49
- self.class.directory(self.name)
49
+ self.class.directory(name)
50
50
  end
51
51
 
52
52
  sig { returns(Pathname) }
@@ -54,7 +54,7 @@ module ParsePackwerk
54
54
  directory.join(public_path).cleanpath
55
55
  end
56
56
 
57
- sig { returns(T.any(T::Boolean, String)) }
57
+ sig { returns(T.nilable(T.any(T::Boolean, String))) }
58
58
  def enforces_dependencies?
59
59
  enforce_dependencies
60
60
  end
@@ -1,7 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- require "pathname"
4
+ require 'pathname'
5
5
  require 'bundler'
6
6
 
7
7
  module ParsePackwerk
@@ -9,17 +9,12 @@ module ParsePackwerk
9
9
 
10
10
  sig { params(package: Package).returns(PackageTodo) }
11
11
  def self.for(package)
12
- PackageTodo.from(self.yml(package.directory))
12
+ PackageTodo.from(yml(package.directory))
13
13
  end
14
14
 
15
15
  sig { params(pathname: Pathname).returns(PackageTodo) }
16
16
  def self.from(pathname)
17
- if !pathname.exist?
18
- new(
19
- pathname: pathname.cleanpath,
20
- violations: []
21
- )
22
- else
17
+ if pathname.exist?
23
18
  package_todo_loaded_yml = YAML.load_file(pathname)
24
19
 
25
20
  all_violations = []
@@ -39,9 +34,14 @@ module ParsePackwerk
39
34
  pathname: pathname.cleanpath,
40
35
  violations: all_violations
41
36
  )
37
+ else
38
+ new(
39
+ pathname: pathname.cleanpath,
40
+ violations: []
41
+ )
42
42
  end
43
43
  end
44
-
44
+
45
45
  sig { params(dirname: Pathname).returns(Pathname) }
46
46
  def self.yml(dirname)
47
47
  dirname.join(PACKAGE_TODO_YML_NAME).cleanpath
@@ -62,11 +62,11 @@ module ParsePackwerk
62
62
  sig { params(package: ParsePackwerk::Package).void }
63
63
  def self.write_package_yml!(package)
64
64
  FileUtils.mkdir_p(package.directory)
65
-
65
+
66
66
  File.open(package.yml, 'w') do |file|
67
67
  merged_config = package.config
68
68
 
69
- merged_config.merge!('enforce_dependencies' => package.enforce_dependencies,)
69
+ merged_config.merge!('enforce_dependencies' => package.enforce_dependencies)
70
70
 
71
71
  if Extensions.privacy_extension_installed?
72
72
  merged_config.merge!('enforce_privacy' => package.enforce_privacy)
@@ -87,11 +87,11 @@ module ParsePackwerk
87
87
  end
88
88
 
89
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
90
+ merged_config = merged_config.to_a.sort_by { |key, _value| T.unsafe(sorted_keys).index(key) || 1000 }.to_h
91
91
 
92
92
  raw_yaml = YAML.dump(merged_config)
93
93
  # Add indentation for dependencies
94
- raw_yaml.gsub!(/^- /," - ")
94
+ raw_yaml.gsub!(/^- /, ' - ')
95
95
  stylized_yaml = raw_yaml.gsub("---\n", '')
96
96
  file.write(stylized_yaml)
97
97
  end
@@ -99,7 +99,7 @@ module ParsePackwerk
99
99
 
100
100
  sig { returns(T::Array[String]) }
101
101
  def self.key_sort_order
102
- %w(
102
+ %w[
103
103
  enforce_dependencies
104
104
  enforce_privacy
105
105
  enforce_visibility
@@ -111,7 +111,7 @@ module ParsePackwerk
111
111
  ignored_dependencies
112
112
  visible_to
113
113
  metadata
114
- )
114
+ ]
115
115
  end
116
116
 
117
117
  # We memoize packages_by_name for fast lookup.
@@ -124,7 +124,7 @@ module ParsePackwerk
124
124
  # We want to match more specific paths first
125
125
  # Packwerk does this too and is necessary for package_from_path to work correctly.
126
126
  sorted_packages = all_packages.sort_by { |package| -package.name.length }
127
- sorted_packages.map{|p| [p.name, p]}.to_h
127
+ sorted_packages.to_h { |p| [p.name, p] }
128
128
  end
129
129
  end
130
130
 
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.20.0
4
+ version: 0.21.0
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-08-16 00:00:00.000000000 Z
11
+ date: 2023-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: awesome_print
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +53,7 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '2.2'
41
55
  - !ruby/object:Gem::Dependency
42
- name: pry
56
+ name: hashdiff
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
@@ -53,7 +67,7 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: rake
70
+ name: pry
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
@@ -67,35 +81,35 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: rspec
84
+ name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '3.0'
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '3.0'
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: sorbet
98
+ name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ">="
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: '3.0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ">="
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: '3.0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: tapioca
112
+ name: rubocop
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -109,7 +123,7 @@ dependencies:
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
- name: hashdiff
126
+ name: sorbet
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - ">="
@@ -123,7 +137,7 @@ dependencies:
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
- name: awesome_print
140
+ name: tapioca
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - ">="