Skip to content

Commit 6645633

Browse files
committed
feat: Show list of ignored gems
1 parent 4e37e67 commit 6645633

4 files changed

Lines changed: 27 additions & 4 deletions

File tree

lib/tapioca/cli.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ def gem(*gems)
321321
halt_upon_load_error: options[:halt_upon_load_error],
322322
lsp_addon: options[:lsp_addon],
323323
verbose: options[:verbose],
324+
skipped_gems: [],
324325
}
325326

326327
command = if verify

lib/tapioca/commands/abstract_gem.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class AbstractGem < Command
2020
#| include_doc: bool,
2121
#| include_loc: bool,
2222
#| include_exported_rbis: bool,
23+
#| skipped_gems: Array[String],
2324
#| ?number_of_workers: Integer?,
2425
#| ?auto_strictness: bool,
2526
#| ?dsl_dir: String,
@@ -40,6 +41,7 @@ def initialize(
4041
include_doc:,
4142
include_loc:,
4243
include_exported_rbis:,
44+
skipped_gems:,
4345
number_of_workers: nil,
4446
auto_strictness: true,
4547
dsl_dir: DEFAULT_DSL_DIR,
@@ -71,6 +73,7 @@ def initialize(
7173
@include_doc = include_doc #: bool
7274
@include_loc = include_loc #: bool
7375
@include_exported_rbis = include_exported_rbis
76+
@skipped_gems = skipped_gems
7477
@halt_upon_load_error = halt_upon_load_error
7578
end
7679

lib/tapioca/commands/gem_generate.rb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ def execute
4444
else
4545
say("No operations performed, all RBIs are up-to-date.", [:green, :bold])
4646
end
47+
unless @skipped_gems.empty?
48+
say("\nNote: Tapioca intentionally ignores the following gems:", [:yellow, :bold])
49+
say(@skipped_gems.join(", "), [:yellow, :bold])
50+
end
4751
ensure
4852
GitAttributes.create_generated_attribute_file(@outpath)
4953
end
@@ -56,11 +60,15 @@ def gems_to_generate(gem_names)
5660
gem = @bundle.gem(gem_name)
5761

5862
if gem.nil?
59-
next if @lsp_addon
60-
61-
raise Tapioca::Error, set_color("Error: Cannot find gem '#{gem_name}'", :red)
63+
if @lsp_addon
64+
next
65+
elsif Gemfile::GemSpec::IGNORED_GEMS.include?(gem_name)
66+
@skipped_gems << gem_name
67+
next
68+
else
69+
raise Tapioca::Error, set_color("Error: Cannot find gem '#{gem_name}'", :red)
70+
end
6271
end
63-
6472
gems.concat(gem_dependencies(gem)) if @include_dependencies
6573
gems << gem
6674
end

spec/tapioca/cli/gem_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,17 @@ class Secret; end
877877
assert_success_status(result)
878878
end
879879

880+
it "reports explicitly requested ignored gems" do
881+
result = @project.tapioca("gem sorbet")
882+
883+
assert_stdout_includes(result, "Note: Tapioca intentionally ignores the following gems:")
884+
assert_stdout_includes(result, "sorbet")
885+
refute_includes(result.out, "Compiled sorbet")
886+
887+
assert_empty_stderr(result)
888+
assert_success_status(result)
889+
end
890+
880891
it "fails with error when gem cannot be found" do
881892
result = @project.tapioca("gem non_existent_gem")
882893

0 commit comments

Comments
 (0)