80 lines
2.2 KiB
Bash
80 lines
2.2 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
is_docker_running() {
|
||
|
if ! docker info >/dev/null 2>&1; then
|
||
|
return 1 # Docker is not running
|
||
|
else
|
||
|
return 0 # Docker is running
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
mkdir bin output
|
||
|
|
||
|
export GOBIN=$(pwd)/bin
|
||
|
|
||
|
# 1. Check and install Docker if not exists
|
||
|
if ! command -v docker &> /dev/null; then
|
||
|
echo "Docker not found, attempting to install..."
|
||
|
|
||
|
# Install Docker using official installation script
|
||
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
||
|
sudo sh get-docker.sh
|
||
|
rm get-docker.sh
|
||
|
|
||
|
# Verify installation
|
||
|
if ! command -v docker &> /dev/null; then
|
||
|
echo "Failed to install Docker"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Add current user to docker group (may require logout/login)
|
||
|
sudo usermod -aG docker $USER
|
||
|
echo "Docker installed successfully. You may need to logout and login again for changes to take effect."
|
||
|
else
|
||
|
echo "Docker already installed"
|
||
|
fi
|
||
|
|
||
|
# 2. Install latest goctl version
|
||
|
go install ../../..
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo "Failed to install goctl"
|
||
|
exit 1
|
||
|
fi
|
||
|
echo "goctl installed successfully"
|
||
|
|
||
|
# 3. Generate swagger files
|
||
|
echo "Generating swagger files..."
|
||
|
./bin/goctl api swagger --api example.api --dir output
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo "Failed to generate swagger files"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if ! is_docker_running; then
|
||
|
echo "Docker is not running, Pls start Docker first"
|
||
|
fi
|
||
|
|
||
|
# 4. Clean up any existing swagger-ui container
|
||
|
echo "Cleaning up existing swagger-ui containers..."
|
||
|
docker rm -f swagger-ui 2>/dev/null && echo "Removed existing swagger-ui container"
|
||
|
|
||
|
# 5. Run swagger-ui in Docker
|
||
|
echo "Starting swagger-ui in Docker..."
|
||
|
docker run -d --name swagger-ui -p 8080:8080 -e SWAGGER_JSON=/tmp/example.json -v $(pwd)/output/example.json:/tmp/example.json swaggerapi/swagger-ui
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo "Failed to start swagger-ui container"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "Waiting for swagger-ui to initialize..."
|
||
|
sleep 1
|
||
|
SWAGGER_URL="http://localhost:8080"
|
||
|
echo -e "\nSwagger UI is ready at: \033[1;34m${SWAGGER_URL}\033[0m"
|
||
|
echo "Opening in default browser..."
|
||
|
|
||
|
case "$(uname -s)" in
|
||
|
Linux*) xdg-open "$SWAGGER_URL";;
|
||
|
Darwin*) open "$SWAGGER_URL";;
|
||
|
CYGWIN*|MINGW*|MSYS*) start "$SWAGGER_URL";;
|
||
|
*) echo "System not supported";;
|
||
|
esac
|