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 <[email protected]>
  • Loading branch information
fukiki committed Jan 20, 2021
1 parent 6ad8def commit c0d7384
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 31 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ 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
sed -i '' -e "s|#!/usr/bin/env lua|#!/usr/bin/env $(LUAJIT_DIR)/bin/luajit|g" ./apisix/cli/apisix.lua
endif


Expand Down
36 changes: 36 additions & 0 deletions apisix/cli/apisix.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/usr/bin/env /usr/local/Cellar/openresty/1.19.3.1_1/luajit/bin/luajit

--
-- 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 [[ "$(pwd)" =~ "/usr/bin" ]]; then
APISIX_LUA=$0/cli/apisix.lua
else
APISIX_LUA=./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
2 changes: 2 additions & 0 deletions utils/install-apisix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ do_install() {

sudo rm -f /usr/bin/apisix
sudo ln -s /usr/local/apisix/deps/bin/apisix /usr/bin/apisix
sudo rm -f /usr/bin/apisix/cli/apisix.lua
sudo ln -s /usr/local/apisix/deps/apisix/cli/apisix.lua /usr/bin/apisix/cli/apisix.lua
}


Expand Down

0 comments on commit c0d7384

Please sign in to comment.