167 lines
3.7 KiB
Bash
Executable File
167 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
BINARY_NAME="objs/srs-sip"
|
|
MAIN_PATH="main/main.go"
|
|
VUE_DIR="html/NextGB"
|
|
CONFIG_FILE="conf/config.yaml"
|
|
|
|
# 检测操作系统类型
|
|
case "$(uname -s)" in
|
|
Darwin*)
|
|
echo "Mac OS X detected"
|
|
;;
|
|
Linux*)
|
|
echo "Linux detected"
|
|
;;
|
|
*)
|
|
echo "Unknown operating system"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
build() {
|
|
echo "Building Go binary..."
|
|
mkdir -p objs
|
|
go build -o ${BINARY_NAME} ${MAIN_PATH}
|
|
|
|
echo "Copying config file..."
|
|
if [ -f "${CONFIG_FILE}" ]; then
|
|
mkdir -p "objs/$(dirname ${CONFIG_FILE})"
|
|
cp -a "${CONFIG_FILE}" "objs/$(dirname ${CONFIG_FILE})/"
|
|
echo "Config file copied to objs/$(dirname ${CONFIG_FILE})/"
|
|
else
|
|
echo "Warning: ${CONFIG_FILE} not found"
|
|
fi
|
|
}
|
|
|
|
clean() {
|
|
echo "Cleaning..."
|
|
rm -rf ${BINARY_NAME}
|
|
rm -rf ${VUE_DIR}/dist
|
|
rm -rf ${VUE_DIR}/node_modules
|
|
rm -rf objs/html
|
|
rm -rf objs/${CONFIG_FILE}
|
|
}
|
|
|
|
run() {
|
|
echo "Running application..."
|
|
go build -o ${BINARY_NAME} ${MAIN_PATH}
|
|
./${BINARY_NAME}
|
|
}
|
|
|
|
vue_install() {
|
|
echo "Installing Vue dependencies..."
|
|
cd ${VUE_DIR}
|
|
npm install
|
|
cd ../..
|
|
}
|
|
|
|
vue_build() {
|
|
echo "Building Vue project..."
|
|
if [ ! -d "${VUE_DIR}" ]; then
|
|
echo "Error: Vue directory not found at ${VUE_DIR}"
|
|
return 1
|
|
fi
|
|
|
|
# Check Node.js version
|
|
if ! command -v node &> /dev/null; then
|
|
echo "Error: Node.js is not installed"
|
|
return 1
|
|
fi
|
|
|
|
NODE_VERSION=$(node -v | cut -d "v" -f 2)
|
|
NODE_MAJOR_VERSION=$(echo $NODE_VERSION | cut -d "." -f 1)
|
|
if [ "$NODE_MAJOR_VERSION" -lt 17 ]; then
|
|
echo "Error: Node.js version 17 or higher is required (current version: $NODE_VERSION)"
|
|
echo "Please upgrade Node.js using your package manager or nvm"
|
|
return 1
|
|
fi
|
|
|
|
pushd ${VUE_DIR} > /dev/null
|
|
echo "Current directory: $(pwd)"
|
|
|
|
if [ ! -f "package.json" ]; then
|
|
echo "Error: package.json not found in ${VUE_DIR}"
|
|
popd > /dev/null
|
|
return 1
|
|
fi
|
|
|
|
# Check if node_modules exists and install dependencies if needed
|
|
if [ ! -d "node_modules" ] || [ ! -f "node_modules/.package-lock.json" ]; then
|
|
echo "Node modules not found or incomplete, installing dependencies..."
|
|
npm install
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: Failed to install dependencies"
|
|
popd > /dev/null
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
echo "Running npm run build..."
|
|
npm run build
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: Vue build failed"
|
|
popd > /dev/null
|
|
return 1
|
|
fi
|
|
popd > /dev/null
|
|
echo "Vue build completed successfully"
|
|
|
|
echo "Copying dist files to objs directory..."
|
|
rm -rf objs/html
|
|
mkdir -p objs
|
|
if [ ! -d "${VUE_DIR}/dist" ]; then
|
|
echo "Error: Vue dist directory not found at ${VUE_DIR}/dist"
|
|
return 1
|
|
fi
|
|
cp -r "${VUE_DIR}/dist" "objs/html"
|
|
if [ $? -eq 0 ]; then
|
|
echo "Vue dist files successfully copied to objs/html"
|
|
else
|
|
echo "Error copying files"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
vue_dev() {
|
|
echo "Starting Vue development server..."
|
|
cd ${VUE_DIR}
|
|
npm run dev
|
|
cd ../..
|
|
}
|
|
|
|
build_all() {
|
|
clean
|
|
build
|
|
vue_build
|
|
}
|
|
|
|
# 根据命令行参数执行相应的功能
|
|
case "$1" in
|
|
"build")
|
|
build
|
|
;;
|
|
"clean")
|
|
clean
|
|
;;
|
|
"run")
|
|
run
|
|
;;
|
|
"vue-install")
|
|
vue_install
|
|
;;
|
|
"vue-build")
|
|
vue_build
|
|
;;
|
|
"vue-dev")
|
|
vue_dev
|
|
;;
|
|
"all"|"")
|
|
build_all
|
|
;;
|
|
*)
|
|
echo "Unknown command: $1"
|
|
echo "Usage: $0 {build|clean|run|vue-install|vue-build|vue-dev|all}"
|
|
exit 1
|
|
;;
|
|
esac |