Skip to content

Commit

Permalink
fix: use a shell script to write the CLI
Browse files Browse the repository at this point in the history
Signed-off-by: fukiki <one.fhh@163.com>
  • Loading branch information
fukiki committed Jan 21, 2021
1 parent 6ad8def commit e44bdfc
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 34 deletions.
4 changes: 0 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ INSTALL ?= install
UNAME ?= $(shell uname)
OR_EXEC ?= $(shell which openresty)
LUAROCKS_VER ?= $(shell luarocks --version | grep -E -o "luarocks [0-9]+.")
LUA_VER ?= $(shell lua -v 2>&1 | grep -E -o "Lua [0-9]+.[0-9]+")

SHELL := /bin/bash -o pipefail

Expand Down Expand Up @@ -57,9 +56,6 @@ ifeq ($(LUAROCKS_VER),luarocks 3.)
else
luarocks install rockspec/apisix-master-0.rockspec --tree=deps --only-deps --local
endif
ifneq ($(LUA_VER),Lua 5.1)
sed -i '' -e "s|#!/usr/bin/env lua|#!/usr/bin/env $(LUAJIT_DIR)/bin/luajit|g" ./bin/apisix
endif


### utils: Installation tools
Expand Down
34 changes: 34 additions & 0 deletions apisix/cli/apisix.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
--
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--

local pkg_cpath_org = package.cpath
local pkg_path_org = package.path

local apisix_home = "/usr/local/apisix"
local pkg_cpath = apisix_home .. "/deps/lib64/lua/5.1/?.so;"
.. apisix_home .. "/deps/lib/lua/5.1/?.so;;"
local pkg_path = apisix_home .. "/deps/share/lua/5.1/?.lua;;"

-- modify the load path to load our dependencies
package.cpath = pkg_cpath .. pkg_cpath_org
package.path = pkg_path .. pkg_path_org

-- pass path to construct the final result
local env = require("apisix.cli.env")(apisix_home, pkg_cpath_org, pkg_path_org)
local ops = require("apisix.cli.ops")

ops.execute(env, arg)
65 changes: 35 additions & 30 deletions bin/apisix
Original file line number Diff line number Diff line change
@@ -1,36 +1,41 @@
#!/usr/bin/env lua
#!/bin/bash

--
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

local pkg_cpath_org = package.cpath
local pkg_path_org = package.path
USE_LUA=true
LUA_VERSION=$(lua -v 2>&1 | grep -E -o "Lua [0-9]+.[0-9]+")

local apisix_home = "/usr/local/apisix"
local pkg_cpath = apisix_home .. "/deps/lib64/lua/5.1/?.so;"
.. apisix_home .. "/deps/lib/lua/5.1/?.so;;"
local pkg_path = apisix_home .. "/deps/share/lua/5.1/?.lua;;"
if [ -s './apisix/cli/apisix.lua' ]; then
APISIX_LUA=./apisix/cli/apisix.lua
else
APISIX_LUA=/usr/share/lua/5.1/apisix/cli/apisix.lua
fi

-- modify the load path to load our dependencies
package.cpath = pkg_cpath .. pkg_cpath_org
package.path = pkg_path .. pkg_path_org
if [[ "$LUA_VERSION" =~ "Lua 5.1" && $USE_LUA ]]; then
# use lua of OS
lua $APISIX_LUA $*
else
# find the openresty
OR_EXEC=$(which openresty)

-- pass path to construct the final result
local env = require("apisix.cli.env")(apisix_home, pkg_cpath_org, pkg_path_org)
local ops = require("apisix.cli.ops")
# find the luajit binary of openresty
LUAJIT_BIN=$(${OR_EXEC} -V 2>&1 | grep prefix | grep -Eo 'prefix=(.*)/nginx\s+--' | grep -Eo '/.*/')luajit/bin/luajit

ops.execute(env, arg)
# use the luajit of openresty
$LUAJIT_BIN $APISIX_LUA $*
fi

0 comments on commit e44bdfc

Please sign in to comment.