#!/bin/sh -e

if [ "$1" = "hmod" ]; then
  shift
  url="$1";shift
  ! [ -z "$url" ]
  hmod="$1";shift
  ! [ -z "$hmod" ] && [ -e "$hmod" ]

  name="$(basename "$hmod")"
  link="$url/${hmod##./}"
  hmod="$(readlink -f "$hmod")"
  fhmod="$hmod"
  dir="$(pwd)/.repo/$name"
#  echo "$name"
  mkdir -p "$dir"

  if [ -d "$hmod" ]; then
    fhmod="$dir/../../.repofiles/$name"
    mkdir -p "$(dirname "$fhmod")"
    (cd "$hmod" && tar -mcz --owner=root --group=root --numeric-owner -f "$fhmod" *)
    link="$url/.repofiles/$name"
    echo "true" > "$dir/extract"
  fi

  echo "$name" >> "$dir/../list"
  echo "$link" > "$dir/link"
  echo "$(md5sum "$fhmod" | awk '{print $1}')" > "$dir/md5"
  echo "$(sha1sum "$fhmod" | awk '{print $1}')" > "$dir/sha1"

  if [ -d "$hmod" ]; then
    cd "$hmod"
  else
    mod="/tmp/ramdisk/__mod/$(whoami)"
    rm -rf "$mod"
    mkdir -p "$mod"
    cd "$mod"
    tar xf "$hmod"
  fi
  find -type f -maxdepth 1 -iname "readme.md" -print0 | xargs -0rn1 -I{} cp "{}" "$dir/readme.md" || \
  find -type f -maxdepth 1 -iname "readme*" -print0 | xargs -0rn1 -I{} cp "{}" "$dir/readme.txt" || true
  exit $?
fi

if ! [ "$1" = "hmod" ]; then
  script="$(readlink -f "$0")"
  dir="$(readlink -f "$1")";shift
  [ -d "$dir" ]
  [ -f "$dir/.repostatic/repourl" ] && url="$(cat "$dir/.repostatic/repourl")" || {
    url="$1";shift
  }
  ! [ -z "$url" ]
  cd "$dir"
  rm -rf "$dir/.repo" 2>/dev/null
  find -type l ! -wholename "*/danger/*" ! -wholename "*/.repo*/*" -name "*.hmod" -print0 | xargs -0rn1 "$script" "hmod" "$url"
  find -type f ! -wholename "*/danger/*" ! -wholename "*/.repo*/*" -name "*.hmod" -print0 | xargs -0rn1 "$script" "hmod" "$url"
  find -type d ! -wholename "*/danger/*" ! -wholename "*/.repo*/*" -name "*.hmod" -print0 | xargs -0rn1 "$script" "hmod" "$url"
  find -type l ! -wholename "*/danger/*" ! -wholename "*/.repo*/*" -name "*.clvg" -print0 | xargs -0rn1 "$script" "hmod" "$url"
  find -type f ! -wholename "*/danger/*" ! -wholename "*/.repo*/*" -name "*.clvg" -print0 | xargs -0rn1 "$script" "hmod" "$url"
  [ -f "$dir/readme.md" ] && cp "readme.md" "$dir/.repo/readme.md" || true
  cd "$dir/.repo"
  find -type f -name "readme*" -print0 | xargs -0rn1 chmod 644 || true
  sort -fu -o list list
  if [ -f "readme.md" ]; then
    tar cz list readme.md --files-from list >"pack.tgz"
  else
    tar cz list --files-from list >"pack.tgz"
  fi
  exit $?
fi
