don't proceed like normal if brandable_css cmd fails
fixes: CNVS-23632 it turns out, the way I was doing this ruby would create a sh subprocess and brandable_css would be it's subprocess. so $? would be the sh process (which would always exit successfully). test plan: * in theme editor, try to preview a theme * but before you do, do something to make it so brandable_css will fail (like uninstall node or rm -rf node_modules or use activity monitor to view active processes and kill brandable_css when it appears) * it should say "something went wrong generating..." instead of continuing like everything worked Change-Id: I3c80c18381bb52c71d4b79d5b151988d6cf5cc3b Reviewed-on: https://gerrit.instructure.com/63948 Reviewed-by: Jacob Fugal <jacob@instructure.com> Reviewed-by: Mike Nomitch <mnomitch@instructure.com> Tested-by: Jenkins QA-Review: August Thornton <august@instructure.com> Product-Review: Ryan Shaw <ryan@instructure.com>
This commit is contained in:
parent
dcae1b8d58
commit
079c9e272c
|
@ -1,5 +1,6 @@
|
||||||
require 'pathname'
|
require 'pathname'
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
|
require 'open3'
|
||||||
|
|
||||||
module BrandableCSS
|
module BrandableCSS
|
||||||
APP_ROOT = defined?(Rails) && Rails.root || Pathname.pwd
|
APP_ROOT = defined?(Rails) && Rails.root || Pathname.pwd
|
||||||
|
@ -97,25 +98,27 @@ module BrandableCSS
|
||||||
# so their scss files can be picked up and compiled with everything else
|
# so their scss files can be picked up and compiled with everything else
|
||||||
require 'config/initializers/plugin_symlinks'
|
require 'config/initializers/plugin_symlinks'
|
||||||
|
|
||||||
command = [cli].push(*args).shelljoin + ' 2>&1'
|
command = [cli].push(*args).shelljoin
|
||||||
msg = "running BrandableCSS CLI: #{command}"
|
msg = "running BrandableCSS CLI: #{command}"
|
||||||
Rails.logger.try(:debug, msg) if defined?(Rails)
|
Rails.logger.try(:debug, msg) if defined?(Rails)
|
||||||
|
|
||||||
percent_complete = 0
|
percent_complete = 0
|
||||||
IO.popen(command).each do |line|
|
Open3.popen2e(command) do |_stdin, stdout_and_stderr, wait_thr|
|
||||||
puts line.chomp!
|
stdout_and_stderr.each do |line|
|
||||||
|
puts line.chomp!
|
||||||
|
|
||||||
# This is a good-enough-for-now approximation to show the progress
|
# This is a good-enough-for-now approximation to show the progress
|
||||||
# bar in the UI. Since we don't know exactly how many files there are,
|
# bar in the UI. Since we don't know exactly how many files there are,
|
||||||
# it will progress towards 100% but never quite hit it until it is complete.
|
# it will progress towards 100% but never quite hit it until it is complete.
|
||||||
# Each tick it will cut 4% of the remaining percentage. Meaning it will look like
|
# Each tick it will cut 4% of the remaining percentage. Meaning it will look like
|
||||||
# it goes fast at first but then slows down, but will always keep moving.
|
# it goes fast at first but then slows down, but will always keep moving.
|
||||||
if opts && opts[:on_progress] && line.starts_with?('compiled ')
|
if opts && opts[:on_progress] && line.starts_with?('compiled ')
|
||||||
percent_complete = percent_complete + ((100.0 - percent_complete) * 0.04)
|
percent_complete += (100.0 - percent_complete) * 0.04
|
||||||
opts[:on_progress].call(percent_complete)
|
opts[:on_progress].call(percent_complete)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
raise("Error #{msg}") unless wait_thr.value.success?
|
||||||
end
|
end
|
||||||
raise("Error #{msg}") unless $?.success?
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue