mirror of
https://github.com/discourse/discourse.git
synced 2025-02-09 05:51:01 +08:00
![Jarek Radosz](/assets/img/avatar_default.png)
13 and 15 are no longer supported by node, and issues with discourse dependencies prevent us from using 17. (for now)
78 lines
1.9 KiB
Ruby
Executable File
78 lines
1.9 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
|
|
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
|