mirror of
https://github.com/discourse/discourse.git
synced 2025-03-24 03:55:32 +08:00

It should now properly work with 18.x, so we should start moving into direction of it being the default.
82 lines
2.0 KiB
Ruby
Executable File
82 lines
2.0 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"
|
|
HOSTNAME = ENV["DISCOURSE_HOSTNAME"] ||= "127.0.0.1"
|
|
yarn_dir = File.join(RAILS_ROOT, "app/assets/javascripts/discourse")
|
|
|
|
PROXY =
|
|
if ARGV.include?("--try")
|
|
"https://try.discourse.org"
|
|
else
|
|
"http://#{HOSTNAME}:#{PORT}"
|
|
end
|
|
|
|
command =
|
|
if ARGV.include?("--test")
|
|
"test"
|
|
else
|
|
"server"
|
|
end
|
|
|
|
class String
|
|
def cyan
|
|
"\e[36m#{self}\e[0m"
|
|
end
|
|
|
|
def red
|
|
"\033[31m#{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?("test") && !args.include?("--proxy")
|
|
args << "--proxy"
|
|
args << PROXY
|
|
end
|
|
|
|
exit 1 if !system "yarn -s install --cwd #{yarn_dir}"
|
|
|
|
if ARGV.include?("-u") || ARGV.include?("--unicorn")
|
|
unicorn_env = { "DISCOURSE_PORT" => ENV["DISCOURSE_PORT"] || "4200" }
|
|
unicorn_pid = spawn(unicorn_env, __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
|