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

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