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.
102 lines
2.7 KiB
Lua
102 lines
2.7 KiB
Lua
local sgmatch = string.gmatch
|
|
local ogetenv = os.getenv
|
|
|
|
local ngx_handle = require 'bin.scaffold.nginx.handle'
|
|
local ngx_config = require 'bin.scaffold.nginx.config'
|
|
local ngx_conf_template = require 'bin.scaffold.nginx.conf_template'
|
|
|
|
|
|
local Lor = {}
|
|
|
|
function Lor.nginx_conf_content()
|
|
-- read nginx.conf file
|
|
local nginx_conf_template = ngx_conf_template.get_ngx_conf_template()
|
|
|
|
-- append notice
|
|
nginx_conf_template = [[
|
|
#generated by `lor framework`
|
|
]] .. nginx_conf_template
|
|
|
|
local match = {}
|
|
local tmp = 1
|
|
for v in sgmatch(nginx_conf_template , '{{(.-)}}') do
|
|
match[tmp] = v
|
|
tmp = tmp + 1
|
|
end
|
|
|
|
for _, directive in ipairs(match) do
|
|
if ngx_config[directive] ~= nil then
|
|
nginx_conf_template = string.gsub(nginx_conf_template, '{{' .. directive .. '}}', ngx_config[directive])
|
|
else
|
|
nginx_conf_template = string.gsub(nginx_conf_template, '{{' .. directive .. '}}', '#' .. directive)
|
|
end
|
|
end
|
|
|
|
return nginx_conf_template
|
|
end
|
|
|
|
function new_handler()
|
|
local necessary_dirs ={ -- runtime nginx conf/pid/logs dir
|
|
tmp = 'tmp',
|
|
logs = 'logs'
|
|
}
|
|
local env = ogetenv("LOR_ENV") or 'dev'
|
|
return ngx_handle.new(
|
|
necessary_dirs,
|
|
Lor.nginx_conf_content(),
|
|
"conf/nginx-" .. env .. ".conf"
|
|
)
|
|
end
|
|
|
|
function Lor.start()
|
|
local env = ogetenv("LOR_ENV") or 'dev'
|
|
|
|
local ok, handler = pcall(function() return new_handler() end)
|
|
if ok == false then
|
|
print("ERROR:Cannot initialize handler: " .. handler)
|
|
return
|
|
end
|
|
|
|
local result = handler:start(env)
|
|
if result == 0 or result == true or result == "true" then
|
|
if env ~= 'test' then
|
|
print("app in " .. env .. " was succesfully started on port " .. ngx_config.PORT)
|
|
end
|
|
else
|
|
print("ERROR: Could not start app on port " .. ngx_config.PORT)
|
|
end
|
|
end
|
|
|
|
|
|
function Lor.stop()
|
|
local env = ogetenv("LOR_ENV") or 'dev'
|
|
|
|
local handler = new_handler()
|
|
local result = handler:stop(env)
|
|
|
|
if env ~= 'test' then
|
|
if result == 0 or result == true or result == "true" then
|
|
print("app in " .. env .. " was succesfully stopped.")
|
|
else
|
|
print("ERROR: Could not stop app (are you sure it is running?).")
|
|
end
|
|
end
|
|
end
|
|
|
|
function Lor.reload()
|
|
local env = ogetenv("LOR_ENV") or 'dev'
|
|
|
|
local handler = new_handler()
|
|
local result = handler:reload(env)
|
|
|
|
if env ~= 'test' then
|
|
if result == 0 or result == true or result == "true" then
|
|
print("app in " .. env .. " was succesfully reloaded.")
|
|
else
|
|
print("ERROR: Could not reloaded app.")
|
|
end
|
|
end
|
|
end
|
|
|
|
return Lor
|