2019-10-07 02:47:33 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
def plugin_initialization_guard(&block)
|
|
|
|
begin
|
|
|
|
block.call
|
|
|
|
rescue => error
|
|
|
|
plugins_directory = Rails.root + 'plugins'
|
|
|
|
|
2020-05-23 12:56:13 +08:00
|
|
|
if error.backtrace && error.backtrace_locations
|
|
|
|
plugin_path = error.backtrace_locations.lazy.map do |location|
|
|
|
|
Pathname.new(location.absolute_path)
|
|
|
|
.ascend
|
|
|
|
.lazy
|
|
|
|
.find { |path| path.parent == plugins_directory }
|
|
|
|
end.next
|
|
|
|
|
|
|
|
raise unless plugin_path
|
|
|
|
|
|
|
|
stack_trace = error.backtrace.each_with_index.inject([]) do |messages, (line, index)|
|
|
|
|
if index == 0
|
|
|
|
messages << "#{line}: #{error} (#{error.class})"
|
|
|
|
else
|
|
|
|
messages << "\t#{index}: from #{line}"
|
|
|
|
end
|
|
|
|
end.reverse.join("\n")
|
|
|
|
|
DEV: Correctly tag heredocs (#16061)
This allows text editors to use correct syntax coloring for the heredoc sections.
Heredoc tag names we use:
languages: SQL, JS, RUBY, LUA, HTML, CSS, SCSS, SH, HBS, XML, YAML/YML, MF, ICS
other: MD, TEXT/TXT, RAW, EMAIL
2022-03-01 03:50:55 +08:00
|
|
|
STDERR.puts <<~TEXT
|
2020-05-23 12:56:13 +08:00
|
|
|
#{stack_trace}
|
|
|
|
|
|
|
|
** INCOMPATIBLE PLUGIN **
|
|
|
|
|
|
|
|
You are unable to build Discourse due to errors in the plugin at
|
|
|
|
#{plugin_path}
|
|
|
|
|
|
|
|
Please try removing this plugin and rebuilding again!
|
DEV: Correctly tag heredocs (#16061)
This allows text editors to use correct syntax coloring for the heredoc sections.
Heredoc tag names we use:
languages: SQL, JS, RUBY, LUA, HTML, CSS, SCSS, SH, HBS, XML, YAML/YML, MF, ICS
other: MD, TEXT/TXT, RAW, EMAIL
2022-03-01 03:50:55 +08:00
|
|
|
TEXT
|
2020-05-23 12:56:13 +08:00
|
|
|
else
|
DEV: Correctly tag heredocs (#16061)
This allows text editors to use correct syntax coloring for the heredoc sections.
Heredoc tag names we use:
languages: SQL, JS, RUBY, LUA, HTML, CSS, SCSS, SH, HBS, XML, YAML/YML, MF, ICS
other: MD, TEXT/TXT, RAW, EMAIL
2022-03-01 03:50:55 +08:00
|
|
|
STDERR.puts <<~TEXT
|
2020-05-23 12:56:13 +08:00
|
|
|
** PLUGIN FAILURE **
|
|
|
|
|
|
|
|
You are unable to build Discourse due to this error during plugin
|
|
|
|
initialization:
|
|
|
|
|
|
|
|
#{error}
|
2020-06-09 10:21:40 +08:00
|
|
|
|
|
|
|
#{error.backtrace.join("\n")}
|
DEV: Correctly tag heredocs (#16061)
This allows text editors to use correct syntax coloring for the heredoc sections.
Heredoc tag names we use:
languages: SQL, JS, RUBY, LUA, HTML, CSS, SCSS, SH, HBS, XML, YAML/YML, MF, ICS
other: MD, TEXT/TXT, RAW, EMAIL
2022-03-01 03:50:55 +08:00
|
|
|
TEXT
|
2020-05-23 12:56:13 +08:00
|
|
|
end
|
2019-10-07 02:47:33 +08:00
|
|
|
exit 1
|
|
|
|
end
|
|
|
|
end
|