blob: 8747ab12abdeef256125b421dc54ac9896cd395c [file] [log] [blame]
#!/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.
set -e
DEFAULT_PROVIDER="pylsp"
DEFAULT_PORT=3000
PROVIDER=""
PORT=""
BASE_DIR=$(dirname "$0")
PYRIGHT_DIR="$BASE_DIR/../pyright-language-server"
while [ $# -gt 0 ]; do
case "$1" in
--server=*|--provider=*)
PROVIDER="${1#*=}"
;;
--port=*)
PORT="${1#*=}"
;;
*)
echo "Unknown argument: $1"
echo "Usage: $0 [--server=<pyright|pylsp>] [--port=<port_number>]"
exit 1
;;
esac
shift
done
PROVIDER="${PROVIDER:-$DEFAULT_PROVIDER}"
PORT="${PORT:-$DEFAULT_PORT}"
# Validate port value
if ! [[ "$PORT" =~ ^[0-9]+$ ]]; then
echo "Invalid port: $PORT. Must be a number."
exit 1
fi
start_pyright() {
echo "Starting Pyright Language Server on port $PORT..."
cd "$PYRIGHT_DIR"
yarn install --silent
yarn start --port="$PORT"
}
start_pylsp() {
echo "Starting Pylsp Language Server on port $PORT..."
if ! command -v pylsp &>/dev/null; then
echo "Error: pylsp is not installed. Install it with 'pip install python-lsp-server'."
exit 1
fi
pylsp --port "$PORT" --ws
}
case $PROVIDER in
pyright)
start_pyright
;;
pylsp)
start_pylsp
;;
*)
echo "Invalid provider: $PROVIDER. Valid options are: pyright, pylsp."
exit 1
;;
esac