mirror of
https://github.com/discourse/discourse.git
synced 2025-02-08 04:18:23 +00:00
Previously we would need to launch unicorn separately this achieves the same goal by making 2 modifications: 1. If -u is supplied ember-cli binary will launch and monitor ember cli and unicorn 2. We suppress 200 requests to keep console clean (we may consider moving to development rails logs) Also cleans out output a bit by supplying silent flags to yarn.
78 lines
1.8 KiB
Ruby
Executable File
78 lines
1.8 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
require 'pathname'
|
|
|
|
RAILS_ROOT = File.expand_path("../../", Pathname.new(__FILE__).realpath)
|
|
PORT = ENV["UNICORN_PORT"] ||= "3000"
|
|
|
|
yarn_dir = File.join(RAILS_ROOT, "app/assets/javascripts/discourse")
|
|
|
|
PROXY =
|
|
if ARGV.include?("--try")
|
|
"https://try.discourse.org"
|
|
else
|
|
"http://localhost:#{PORT}"
|
|
end
|
|
|
|
command =
|
|
if ARGV.include?("--test")
|
|
"test"
|
|
else
|
|
"server"
|
|
end
|
|
|
|
class String
|
|
def cyan
|
|
"\e[36m#{self}\e[0m"
|
|
end
|
|
end
|
|
|
|
if ARGV.include?("-h") || ARGV.include?("--help")
|
|
puts "ember-cli OPTIONS"
|
|
puts "#{"--try".cyan} To proxy try.discourse.org"
|
|
puts "#{"--test".cyan} To run the test suite"
|
|
puts "#{"--unicorn, -u".cyan} To run a unicorn server as well"
|
|
puts "The rest of the arguments are passed to ember server per:", ""
|
|
exec "yarn -s --cwd #{yarn_dir} run ember #{command} --help"
|
|
end
|
|
|
|
args = ["-s", "--cwd", yarn_dir, "run", "ember", command] + ARGV.reject do |a|
|
|
["--try", "--test", "--unicorn", "-u"].include?(a)
|
|
end
|
|
|
|
if !args.include?("--proxy")
|
|
args << "--proxy"
|
|
args << PROXY
|
|
end
|
|
|
|
system "yarn -s install --cwd #{yarn_dir}"
|
|
|
|
if (ARGV - ["--unicorn", "-"]).length < 2
|
|
unicorn_pid = spawn(__dir__ + "/unicorn")
|
|
|
|
Thread.new do
|
|
require 'open3'
|
|
Open3.popen2e("yarn", *args.to_a.flatten) do |i, oe, t|
|
|
puts "Ember CLI running on PID: #{t.pid}"
|
|
oe.each do |line|
|
|
if line.include?("\e[32m200\e") || line.include?("\e[36m304\e[0m") || line.include?("POST /message-bus")
|
|
# skip 200s and 304s and message bus
|
|
else
|
|
puts line
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
trap("SIGINT") do
|
|
# we got to swallow sigint to give time for
|
|
# children to handle it
|
|
end
|
|
|
|
Process.wait(unicorn_pid)
|
|
|
|
else
|
|
exec "yarn", *args.to_a.flatten
|
|
end
|