90 lines
3.7 KiB
Bash
Executable File
90 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SKILL_DIR="$(dirname "$SCRIPT_DIR")"
|
|
BIN_DIR="${SKILL_DIR}/bin"
|
|
|
|
echo "╔════════════════════════════════════════╗"
|
|
echo "║ Weeknotes Binary Downloader ║"
|
|
echo "╚════════════════════════════════════════╝"
|
|
echo ""
|
|
|
|
# Create bin directory structure
|
|
mkdir -p "${BIN_DIR}/darwin-arm64"
|
|
mkdir -p "${BIN_DIR}/darwin-amd64"
|
|
mkdir -p "${BIN_DIR}/linux-amd64"
|
|
|
|
# Function to download and extract a GitHub release
|
|
download_tool() {
|
|
local repo=$1
|
|
local tool_name=$2
|
|
local platform=$3
|
|
local arch=$4
|
|
|
|
echo "📦 Downloading ${tool_name} for ${platform}-${arch}..."
|
|
|
|
# Construct the asset name based on the naming convention
|
|
local archive_name="${tool_name}-${platform}-${arch}.tar.gz"
|
|
local asset_url="https://github.com/${repo}/releases/download/latest/${archive_name}"
|
|
local temp_archive="/tmp/${archive_name}"
|
|
local target_dir="${BIN_DIR}/${platform}-${arch}"
|
|
local target_binary="${target_dir}/${tool_name}"
|
|
|
|
# Download the archive
|
|
echo " Downloading from ${asset_url}..."
|
|
if curl -L -f -o "${temp_archive}" "${asset_url}"; then
|
|
echo " ✅ Downloaded archive"
|
|
|
|
# Extract the binary from the archive
|
|
echo " Extracting binary..."
|
|
tar -xzf "${temp_archive}" -C "${target_dir}" "${tool_name}" 2>/dev/null || {
|
|
# If extraction with specific file fails, extract all and find the binary
|
|
tar -xzf "${temp_archive}" -C /tmp/
|
|
find /tmp -name "${tool_name}" -type f -exec mv {} "${target_binary}" \;
|
|
}
|
|
|
|
# Make binary executable
|
|
chmod +x "${target_binary}"
|
|
|
|
# Cleanup
|
|
rm -f "${temp_archive}"
|
|
|
|
# Verify the binary exists
|
|
if [ -f "${target_binary}" ]; then
|
|
echo " ✅ Installed to ${target_binary}"
|
|
else
|
|
echo " ❌ Failed to extract binary"
|
|
return 1
|
|
fi
|
|
else
|
|
echo " ❌ Failed to download from ${asset_url}"
|
|
return 1
|
|
fi
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Download mastodon-to-markdown
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "Mastodon to Markdown"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
download_tool "lmorchard/mastodon-to-markdown" "mastodon-to-markdown" "darwin" "arm64"
|
|
download_tool "lmorchard/mastodon-to-markdown" "mastodon-to-markdown" "darwin" "amd64"
|
|
download_tool "lmorchard/mastodon-to-markdown" "mastodon-to-markdown" "linux" "amd64"
|
|
|
|
# Download linkding-to-markdown
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "Linkding to Markdown"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
download_tool "lmorchard/linkding-to-markdown" "linkding-to-markdown" "darwin" "arm64"
|
|
download_tool "lmorchard/linkding-to-markdown" "linkding-to-markdown" "darwin" "amd64"
|
|
download_tool "lmorchard/linkding-to-markdown" "linkding-to-markdown" "linux" "amd64"
|
|
|
|
echo "╔════════════════════════════════════════╗"
|
|
echo "║ Download Complete! ║"
|
|
echo "╚════════════════════════════════════════╝"
|
|
echo ""
|
|
echo "Binary locations:"
|
|
tree "${BIN_DIR}" || ls -R "${BIN_DIR}"
|