#!/bin/sh
set -eu

command -v curl >/dev/null 2>&1 || {
  echo "SubmitForBacklinks requires curl." >&2
  exit 1
}
command -v node >/dev/null 2>&1 || {
  echo "SubmitForBacklinks requires Node.js 22 or newer: https://nodejs.org" >&2
  exit 1
}

SFB_INSTALL_DIR="${SFB_INSTALL_DIR:-${HOME}/.local/bin}"
SFB_INSTALL_PATH="${SFB_INSTALL_DIR}/submitforbacklinks"
SFB_DOWNLOAD_PATH="${SFB_INSTALL_PATH}.download"
mkdir -p "$SFB_INSTALL_DIR"
curl -fsSL 'https://submitforbacklinks.com/downloads/submitforbacklinks/1.4.3' -o "$SFB_DOWNLOAD_PATH"
node - "$SFB_DOWNLOAD_PATH" '45ce9bbbbe7851fb8d62b339a183cb4e3084bd12d765e0f6348e231058c4de72' <<'SFB_VERIFY'
const { createHash } = require("node:crypto");
const { readFileSync } = require("node:fs");
const [file, expected] = process.argv.slice(2);
const actual = createHash("sha256").update(readFileSync(file)).digest("hex");
if (actual !== expected) {
  console.error("SubmitForBacklinks checksum verification failed.");
  process.exit(1);
}
SFB_VERIFY
mv "$SFB_DOWNLOAD_PATH" "$SFB_INSTALL_PATH"
chmod 755 "$SFB_INSTALL_PATH"

case ":${PATH}:" in
  *":${SFB_INSTALL_DIR}:"*) ;;
  *)
    case "${SHELL:-}" in
      */zsh) SFB_PROFILE="${HOME}/.zprofile" ;;
      */bash) SFB_PROFILE="${HOME}/.bashrc" ;;
      *) SFB_PROFILE="${HOME}/.profile" ;;
    esac
    SFB_PATH_LINE='export PATH="$HOME/.local/bin:$PATH"'
    if [ "$SFB_INSTALL_DIR" = "${HOME}/.local/bin" ]; then
      if ! grep -F "$SFB_PATH_LINE" "$SFB_PROFILE" >/dev/null 2>&1; then
        printf '\n# SubmitForBacklinks CLI\n%s\n' "$SFB_PATH_LINE" >>"$SFB_PROFILE"
      fi
      echo "Added SubmitForBacklinks to your PATH for new terminal windows."
    else
      echo "Add ${SFB_INSTALL_DIR} to your PATH to run the CLI by name."
    fi
    ;;
esac

if [ -r /dev/tty ]; then
  "$SFB_INSTALL_PATH" start </dev/tty
else
  echo "Installed. Run: $SFB_INSTALL_PATH start"
fi
