AkurAI Build
Menu

Public repository / 5113300d6181fcc9ebf43e1c12a8300c4873854b

AkurAI-EC2 / install.sh

Latest change 8fd2ab2c4d35f12420c1578debb442a5883d0f64 - chore: version akurai ec2 cli by Claude Code

#!/usr/bin/env bash
set -euo pipefail

usage() {
  cat <<'EOF'
usage: ./install.sh [--symlink|--copy] [--dry-run]

Install bin/akurai-ec2 to ~/.local/bin/akurai-ec2.

  --symlink  install a symlink (default)
  --copy     install a standalone copy
  --dry-run  print the actions without changing anything
EOF
}

die() {
  printf 'install.sh: %s\n' "$*" >&2
  exit 1
}

run() {
  if [ "$dry_run" -eq 1 ]; then
    printf '+'
    printf ' %q' "$@"
    printf '\n'
  else
    "$@"
  fi
}

mode="symlink"
dry_run=0

while [ $# -gt 0 ]; do
  case "$1" in
    --symlink)
      mode="symlink"
      ;;
    --copy)
      mode="copy"
      ;;
    --dry-run)
      dry_run=1
      ;;
    -h|--help)
      usage
      exit 0
      ;;
    *)
      die "unknown argument: $1"
      ;;
  esac
  shift
done

script_dir="$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
src="$script_dir/bin/akurai-ec2"
target="${AKURAI_EC2_INSTALL_TARGET:-$HOME/.local/bin/akurai-ec2}"
target_dir="$(dirname -- "$target")"

[ -f "$src" ] || die "source script not found: $src"

src_resolved="$(readlink -f -- "$src")"
timestamp="$(date +%Y%m%d%H%M%S)"
backup=""

run mkdir -p -- "$target_dir"
run chmod 755 -- "$src"

if [ "$mode" = "symlink" ] && [ -L "$target" ]; then
  target_resolved="$(readlink -f -- "$target" 2>/dev/null || true)"
  if [ "$target_resolved" = "$src_resolved" ]; then
    printf 'already linked: %s -> %s\n' "$target" "$src"
    exit 0
  fi
fi

if [ "$mode" = "copy" ] && [ -f "$target" ] && [ ! -L "$target" ] && cmp -s -- "$src" "$target"; then
  run chmod 755 -- "$target"
  printf 'already installed: %s\n' "$target"
  exit 0
fi

if [ -e "$target" ] || [ -L "$target" ]; then
  backup="$target.bak.$timestamp"
  run mv -- "$target" "$backup"
  printf 'backed up existing target to %s\n' "$backup"
fi

if [ "$mode" = "copy" ]; then
  run install -m 755 -- "$src" "$target"
  printf 'installed copy: %s\n' "$target"
else
  run ln -s -- "$src" "$target"
  printf 'installed symlink: %s -> %s\n' "$target" "$src"
fi