diff --git a/apisix/cli/apisix.lua b/apisix/cli/apisix.lua new file mode 100755 index 0000000000000..fa73b41db578e --- /dev/null +++ b/apisix/cli/apisix.lua @@ -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) diff --git a/bin/apisix b/bin/apisix index c3962ac112af9..8001f8ddb4060 100755 --- a/bin/apisix +++ b/bin/apisix @@ -1,36 +1,43 @@ -#!/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=false +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 +elif [ -s '/usr/share/lua/5.1/apisix/cli/apisix.lua' ]; then + APISIX_LUA=/usr/share/lua/5.1/apisix/cli/apisix.lua +else + APISIX_LUA=/usr/local/apisix/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