tapioca 0.4.23 → 0.4.27
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tapioca/compilers/symbol_table/symbol_generator.rb +1 -1
- data/lib/tapioca/compilers/symbol_table_compiler.rb +1 -1
- data/lib/tapioca/gemfile.rb +25 -16
- data/lib/tapioca/generator.rb +3 -3
- data/lib/tapioca/internal.rb +0 -1
- data/lib/tapioca/loader.rb +3 -17
- data/lib/tapioca/rbi/rewriters/sort_nodes.rb +16 -12
- data/lib/tapioca/version.rb +1 -1
- data/lib/tapioca.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91440af4ff5a8cd586284d4d5a2cc35600ec803b825bdcd57492a3eb94b65bf3
|
4
|
+
data.tar.gz: d6db15fe94c5cd0e8100f8bf1fd8fb9a760123891cee3b079470011719dc55e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 536bcacea8d4b5848dc8075fc94f50d34d80c23f00b9ea331862f911be6eb58c3a62b30d529663ddfd60441f632aab62e6250d8dc1c7a1a8f32dbfc0d510ae18
|
7
|
+
data.tar.gz: 57942419606b3d054fb392b6c3c026bff5aa7f63cb3cfc58defb8dbc81e49e72902eb26a8ebb9713561f21d4822a644fd6b9a36c7f2c0a135461b3b4e1d9c267
|
data/lib/tapioca/gemfile.rb
CHANGED
@@ -20,7 +20,7 @@ module Tapioca
|
|
20
20
|
sig { returns(Bundler::Definition) }
|
21
21
|
attr_reader(:definition)
|
22
22
|
|
23
|
-
sig { returns(T::Array[
|
23
|
+
sig { returns(T::Array[GemSpec]) }
|
24
24
|
attr_reader(:dependencies)
|
25
25
|
|
26
26
|
sig { returns(T::Array[String]) }
|
@@ -32,18 +32,18 @@ module Tapioca
|
|
32
32
|
@lockfile = T.let(File.new(Bundler.default_lockfile), File)
|
33
33
|
@definition = T.let(Bundler::Dsl.evaluate(gemfile, lockfile, {}), Bundler::Definition)
|
34
34
|
dependencies, missing_specs = load_dependencies
|
35
|
-
@dependencies = T.let(dependencies, T::Array[
|
35
|
+
@dependencies = T.let(dependencies, T::Array[GemSpec])
|
36
36
|
@missing_specs = T.let(missing_specs, T::Array[String])
|
37
37
|
end
|
38
38
|
|
39
|
-
sig { params(gem_name: String).returns(T.nilable(
|
39
|
+
sig { params(gem_name: String).returns(T.nilable(GemSpec)) }
|
40
40
|
def gem(gem_name)
|
41
41
|
dependencies.detect { |dep| dep.name == gem_name }
|
42
42
|
end
|
43
43
|
|
44
44
|
sig { void }
|
45
|
-
def
|
46
|
-
T.unsafe(runtime).
|
45
|
+
def require_bundle
|
46
|
+
T.unsafe(runtime).require(*groups)
|
47
47
|
end
|
48
48
|
|
49
49
|
private
|
@@ -51,23 +51,32 @@ module Tapioca
|
|
51
51
|
sig { returns(File) }
|
52
52
|
attr_reader(:gemfile, :lockfile)
|
53
53
|
|
54
|
-
sig { returns([T::Array[
|
54
|
+
sig { returns([T::Array[GemSpec], T::Array[String]]) }
|
55
55
|
def load_dependencies
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
dependencies = definition
|
61
|
-
.resolve
|
62
|
-
.materialize(deps, missing_specs)
|
63
|
-
.map { |spec| Gem.new(spec) }
|
56
|
+
materialized_dependencies, missing_specs = materialize_deps
|
57
|
+
dependencies = materialized_dependencies
|
58
|
+
.map { |spec| GemSpec.new(spec) }
|
64
59
|
.reject { |gem| gem.ignore?(dir) }
|
65
60
|
.uniq(&:rbi_file_name)
|
66
61
|
.sort_by(&:rbi_file_name)
|
67
|
-
|
68
62
|
[dependencies, missing_specs]
|
69
63
|
end
|
70
64
|
|
65
|
+
sig { returns([T::Array[::Gem::Specification], T::Array[String]]) }
|
66
|
+
def materialize_deps
|
67
|
+
deps = definition.locked_gems.dependencies.values
|
68
|
+
missing_specs = T::Array[String].new
|
69
|
+
materialized_dependencies = if definition.resolve.method(:materialize).arity == 1 # Support bundler >= v2.2.25
|
70
|
+
md = definition.resolve.materialize(deps)
|
71
|
+
missing_spec_names = md.missing_specs.map(&:name)
|
72
|
+
missing_specs = T.cast(md.missing_specs.map { |spec| "#{spec.name} (#{spec.version})" }, T::Array[String])
|
73
|
+
md.to_a.reject { |spec| missing_spec_names.include?(spec.name) }
|
74
|
+
else
|
75
|
+
definition.resolve.materialize(deps, missing_specs)
|
76
|
+
end
|
77
|
+
[materialized_dependencies, missing_specs]
|
78
|
+
end
|
79
|
+
|
71
80
|
sig { returns(Bundler::Runtime) }
|
72
81
|
def runtime
|
73
82
|
Bundler::Runtime.new(File.dirname(gemfile.path), definition)
|
@@ -83,7 +92,7 @@ module Tapioca
|
|
83
92
|
File.expand_path(gemfile.path + "/..")
|
84
93
|
end
|
85
94
|
|
86
|
-
class
|
95
|
+
class GemSpec
|
87
96
|
extend(T::Sig)
|
88
97
|
|
89
98
|
IGNORED_GEMS = T.let(%w{
|
data/lib/tapioca/generator.rb
CHANGED
@@ -260,7 +260,7 @@ module Tapioca
|
|
260
260
|
def load_application(eager_load:)
|
261
261
|
say("Loading Rails application... ")
|
262
262
|
|
263
|
-
loader.
|
263
|
+
loader.load_rails_application(
|
264
264
|
environment_load: true,
|
265
265
|
eager_load: eager_load
|
266
266
|
)
|
@@ -456,7 +456,7 @@ module Tapioca
|
|
456
456
|
|
457
457
|
sig do
|
458
458
|
params(gem_names: T::Array[String])
|
459
|
-
.returns(T::Array[Gemfile::
|
459
|
+
.returns(T::Array[Gemfile::GemSpec])
|
460
460
|
end
|
461
461
|
def gems_to_generate(gem_names)
|
462
462
|
return bundle.dependencies if gem_names.empty?
|
@@ -486,7 +486,7 @@ module Tapioca
|
|
486
486
|
[statement, sigil].compact.join("\n").strip.concat("\n\n")
|
487
487
|
end
|
488
488
|
|
489
|
-
sig { params(gem: Gemfile::
|
489
|
+
sig { params(gem: Gemfile::GemSpec).void }
|
490
490
|
def compile_gem_rbi(gem)
|
491
491
|
compiler = Compilers::SymbolTableCompiler.new
|
492
492
|
gem_name = set_color(gem.name, :yellow, :bold)
|
data/lib/tapioca/internal.rb
CHANGED
data/lib/tapioca/loader.rb
CHANGED
@@ -14,10 +14,9 @@ module Tapioca
|
|
14
14
|
def load_bundle(initialize_file, require_file)
|
15
15
|
require_helper(initialize_file)
|
16
16
|
|
17
|
-
|
18
|
-
load_rake
|
17
|
+
load_rails_application
|
19
18
|
|
20
|
-
require_bundle
|
19
|
+
gemfile.require_bundle
|
21
20
|
|
22
21
|
require_helper(require_file)
|
23
22
|
|
@@ -25,14 +24,11 @@ module Tapioca
|
|
25
24
|
end
|
26
25
|
|
27
26
|
sig { params(environment_load: T::Boolean, eager_load: T::Boolean).void }
|
28
|
-
def
|
27
|
+
def load_rails_application(environment_load: false, eager_load: false)
|
29
28
|
return unless File.exist?("config/application.rb")
|
30
29
|
|
31
|
-
safe_require("rails")
|
32
|
-
|
33
30
|
silence_deprecations
|
34
31
|
|
35
|
-
safe_require("rails/generators/test_case")
|
36
32
|
if environment_load
|
37
33
|
safe_require("./config/environment")
|
38
34
|
else
|
@@ -56,11 +52,6 @@ module Tapioca
|
|
56
52
|
require(file)
|
57
53
|
end
|
58
54
|
|
59
|
-
sig { void }
|
60
|
-
def require_bundle
|
61
|
-
gemfile.require
|
62
|
-
end
|
63
|
-
|
64
55
|
sig { returns(T::Array[T.untyped]) }
|
65
56
|
def rails_engines
|
66
57
|
engines = []
|
@@ -84,11 +75,6 @@ module Tapioca
|
|
84
75
|
nil
|
85
76
|
end
|
86
77
|
|
87
|
-
sig { void }
|
88
|
-
def load_rake
|
89
|
-
safe_require("rake")
|
90
|
-
end
|
91
|
-
|
92
78
|
sig { void }
|
93
79
|
def silence_deprecations
|
94
80
|
# Stop any ActiveSupport Deprecations from being reported
|
@@ -11,9 +11,11 @@ module Tapioca
|
|
11
11
|
def visit(node)
|
12
12
|
return unless node.is_a?(Tree)
|
13
13
|
visit_all(node.nodes)
|
14
|
+
original_order = node.nodes.map.with_index.to_h
|
14
15
|
node.nodes.sort! do |a, b|
|
15
16
|
res = node_rank(a) <=> node_rank(b)
|
16
17
|
res = node_name(a) <=> node_name(b) if res == 0
|
18
|
+
res = (original_order[a] || 0) <=> (original_order[b] || 0) if res == 0
|
17
19
|
res || 0
|
18
20
|
end
|
19
21
|
end
|
@@ -23,27 +25,29 @@ module Tapioca
|
|
23
25
|
sig { params(node: Node).returns(Integer) }
|
24
26
|
def node_rank(node)
|
25
27
|
case node
|
26
|
-
when Group then
|
27
|
-
when Include, Extend then
|
28
|
-
when Helper then
|
29
|
-
when TypeMember then
|
30
|
-
when MixesInClassMethods then
|
31
|
-
when TStructField then
|
32
|
-
when TEnumBlock then
|
28
|
+
when Group then group_rank(node.kind)
|
29
|
+
when Include, Extend then 10
|
30
|
+
when Helper then 20
|
31
|
+
when TypeMember then 30
|
32
|
+
when MixesInClassMethods then 40
|
33
|
+
when TStructField then 50
|
34
|
+
when TEnumBlock then 60
|
33
35
|
when Method
|
34
36
|
if node.name == "initialize"
|
35
|
-
|
37
|
+
71
|
38
|
+
elsif !node.is_singleton
|
39
|
+
72
|
36
40
|
else
|
37
|
-
|
41
|
+
73
|
38
42
|
end
|
39
|
-
when Scope, Const then
|
43
|
+
when Scope, Const then 80
|
40
44
|
else
|
41
|
-
|
45
|
+
100
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
45
49
|
sig { params(kind: Group::Kind).returns(Integer) }
|
46
|
-
def
|
50
|
+
def group_rank(kind)
|
47
51
|
case kind
|
48
52
|
when Group::Kind::Mixins then 0
|
49
53
|
when Group::Kind::Helpers then 1
|
data/lib/tapioca/version.rb
CHANGED
data/lib/tapioca.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tapioca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.27
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ufuk Kayserilioglu
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-
|
14
|
+
date: 2021-09-16 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -192,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
192
|
- !ruby/object:Gem::Version
|
193
193
|
version: '0'
|
194
194
|
requirements: []
|
195
|
-
rubygems_version: 3.2.
|
195
|
+
rubygems_version: 3.2.20
|
196
196
|
signing_key:
|
197
197
|
specification_version: 4
|
198
198
|
summary: A Ruby Interface file generator for gems, core types and the Ruby standard
|