2025-12-26 10:05:00 +03:00

75 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
set -e
# Determine the project root directory based on the script's location
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
GO_YTDLP_SRC_DIR="$PROJECT_ROOT/go-ytdlp"
YTDLP_CLI_DIR="$PROJECT_ROOT/ytops_client/go_ytdlp_cli"
INSTALL_PATH="/usr/local/bin/go-ytdlp"
echo "Building go-ytdlp CLI tool..."
if ! command -v go >/dev/null 2>&1; then
echo "Go is not installed. Please install Go first." >&2
echo "See https://golang.org/doc/install" >&2
exit 1
fi
# First, ensure the go-ytdlp library is built
if [ ! -d "$GO_YTDLP_SRC_DIR" ]; then
echo "go-ytdlp source directory not found at $GO_YTDLP_SRC_DIR" >&2
echo "Please ensure the go-ytdlp source code is present at that location." >&2
exit 1
fi
echo "Found go-ytdlp source at $GO_YTDLP_SRC_DIR"
cd "$GO_YTDLP_SRC_DIR"
echo "Ensuring go-ytdlp dependencies are up to date..."
go mod tidy
echo "Generating Go source files with 'make'..."
if ! command -v make >/dev/null 2>&1; then
echo "'make' is not installed. Please install it to run the code generation step." >&2
exit 1
fi
make
echo "Building go-ytdlp CLI wrapper..."
cd "$YTDLP_CLI_DIR"
go mod tidy
go build -o go-ytdlp .
BUILT_BINARY_PATH="$YTDLP_CLI_DIR/go-ytdlp"
if [ ! -f "$BUILT_BINARY_PATH" ]; then
echo "Failed to build binary at $BUILT_BINARY_PATH" >&2
exit 1
fi
echo "Creating symlink at $INSTALL_PATH..."
# Remove existing symlink or file if it exists
if [ -e "$INSTALL_PATH" ]; then
echo "Removing existing file/symlink at $INSTALL_PATH"
if [ -w "$(dirname "$INSTALL_PATH")" ]; then
rm -f "$INSTALL_PATH"
else
sudo rm -f "$INSTALL_PATH"
fi
fi
# Create the symlink
if [ -w "$(dirname "$INSTALL_PATH")" ]; then
ln -s "$BUILT_BINARY_PATH" "$INSTALL_PATH"
else
echo "Warning: $(dirname "$INSTALL_PATH") is not writable. Attempting with sudo."
sudo ln -s "$BUILT_BINARY_PATH" "$INSTALL_PATH"
fi
echo
echo "go-ytdlp linked successfully."
echo "You can now use the 'go-ytdlp' command."
echo "Binary location: $BUILT_BINARY_PATH"