75 lines
2.0 KiB
Bash
Executable File
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"
|