You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.2 KiB
Lua
77 lines
2.2 KiB
Lua
-- most code is from https://github.com/ostinelli/gin/blob/master/gin/cli/base_launcher.lua
|
|
local function create_dirs(necessary_dirs)
|
|
for _, dir in pairs(necessary_dirs) do
|
|
os.execute("mkdir -p " .. dir .. " > /dev/null")
|
|
end
|
|
end
|
|
|
|
local function create_nginx_conf(nginx_conf_file_path, nginx_conf_content)
|
|
local fw = io.open(nginx_conf_file_path, "w")
|
|
fw:write(nginx_conf_content)
|
|
fw:close()
|
|
end
|
|
|
|
local function remove_nginx_conf(nginx_conf_file_path)
|
|
os.remove(nginx_conf_file_path)
|
|
end
|
|
|
|
local function nginx_command(env, nginx_conf_file_path, nginx_signal)
|
|
local env_cmd = ""
|
|
|
|
if env ~= nil then env_cmd = "-g \"env LOR_ENV=" .. env .. ";\"" end
|
|
local cmd = "nginx " .. nginx_signal .. " " .. env_cmd .. " -p `pwd`/ -c " .. nginx_conf_file_path
|
|
print("execute: " .. cmd)
|
|
return os.execute(cmd)
|
|
end
|
|
|
|
local function start_nginx(env, nginx_conf_file_path)
|
|
return nginx_command(env, nginx_conf_file_path, '')
|
|
end
|
|
|
|
local function stop_nginx(env, nginx_conf_file_path)
|
|
return nginx_command(env, nginx_conf_file_path, '-s stop')
|
|
end
|
|
|
|
local function reload_nginx(env, nginx_conf_file_path)
|
|
return nginx_command(env, nginx_conf_file_path, '-s reload')
|
|
end
|
|
|
|
|
|
local NginxHandle = {}
|
|
NginxHandle.__index = NginxHandle
|
|
|
|
function NginxHandle.new(necessary_dirs, nginx_conf_content, nginx_conf_file_path)
|
|
local instance = {
|
|
nginx_conf_content = nginx_conf_content,
|
|
nginx_conf_file_path = nginx_conf_file_path,
|
|
necessary_dirs = necessary_dirs
|
|
}
|
|
setmetatable(instance, NginxHandle)
|
|
return instance
|
|
end
|
|
|
|
function NginxHandle:start(env)
|
|
create_dirs(self.necessary_dirs)
|
|
-- create_nginx_conf(self.nginx_conf_file_path, self.nginx_conf_content)
|
|
|
|
return start_nginx(env, self.nginx_conf_file_path)
|
|
end
|
|
|
|
function NginxHandle:stop(env)
|
|
local result = stop_nginx(env, self.nginx_conf_file_path)
|
|
-- remove_nginx_conf(self.nginx_conf_file_path)
|
|
|
|
return result
|
|
end
|
|
|
|
function NginxHandle:reload(env)
|
|
-- remove_nginx_conf(self.nginx_conf_file_path)
|
|
create_dirs(self.necessary_dirs)
|
|
-- create_nginx_conf(self.nginx_conf_file_path, self.nginx_conf_content)
|
|
|
|
return reload_nginx(env, self.nginx_conf_file_path)
|
|
end
|
|
|
|
|
|
return NginxHandle
|