lib/tapioca/commands/dsl.rb in tapioca-0.9.3 vs lib/tapioca/commands/dsl.rb in tapioca-0.9.4
- old
+ new
@@ -189,18 +189,19 @@
rescue NameError
[name, nil]
end
unprocessable_constants = constant_map.select { |_, v| v.nil? }
+
unless unprocessable_constants.empty?
unprocessable_constants.each do |name, _|
say("Error: Cannot find constant '#{name}'", :red)
filename = dsl_rbi_filename(name)
remove_file(filename) if File.file?(filename)
end
- exit(1)
+ raise Thor::Error, ""
end
constant_map.values
end
@@ -209,16 +210,17 @@
compiler_map = compiler_names.to_h do |name|
[name, resolve(name)]
end
unprocessable_compilers = compiler_map.select { |_, v| v.nil? }
+
unless unprocessable_compilers.empty?
- unprocessable_compilers.each do |name, _|
- say("Error: Cannot find compiler '#{name}'", :red)
- end
+ message = unprocessable_compilers.map do |name, _|
+ set_color("Error: Cannot find compiler '#{name}'", :red)
+ end.join("\n")
- exit(1)
+ raise Thor::Error, message
end
T.cast(compiler_map.values, T::Array[T.class_of(Tapioca::Dsl::Compiler)])
end
@@ -330,21 +332,21 @@
sig { params(diff: T::Hash[String, Symbol], command: Symbol).void }
def report_diff_and_exit_if_out_of_date(diff, command)
if diff.empty?
say("Nothing to do, all RBIs are up-to-date.")
else
- say("RBI files are out-of-date. In your development environment, please run:", :green)
- say(" `#{default_command(command)}`", [:green, :bold])
- say("Once it is complete, be sure to commit and push any changes", :green)
+ reasons = diff.group_by(&:last).sort.map do |cause, diff_for_cause|
+ build_error_for_files(cause, diff_for_cause.map(&:first))
+ end.join("\n")
- say("")
+ raise Thor::Error, <<~ERROR
+ #{set_color("RBI files are out-of-date. In your development environment, please run:", :green)}
+ #{set_color("`#{default_command(command)}`", [:green, :bold])}
+ #{set_color("Once it is complete, be sure to commit and push any changes", :green)}
- say("Reason:", [:red])
- diff.group_by(&:last).sort.each do |cause, diff_for_cause|
- say(build_error_for_files(cause, diff_for_cause.map(&:first)))
- end
-
- exit(1)
+ #{set_color("Reason:", :red)}
+ #{reasons}
+ ERROR
end
end
sig { params(path: Pathname).returns(T::Array[Pathname]) }
def rbi_files_in(path)