#!/bin/bash

set -e
set -o pipefail


#
# Esy utility functions
#

esyStrLength() {
  # run in a subprocess to override $LANG variable
  LANG=C /bin/bash -c 'echo "${#0}"' "$1"
}

esyRepeatCharacter() {
  chToRepeat=$1
  times=$2
  printf "%0.s$chToRepeat" $(seq 1 $times)
}

esyGetStorePathFromPrefix() {
  ESY_EJECT__PREFIX="$1"
  # Remove trailing slash if any.
  ESY_EJECT__PREFIX="${ESY_EJECT__PREFIX%/}"
  ESY_STORE_VERSION="3"

  prefixLength=$(esyStrLength "$ESY_EJECT__PREFIX/$ESY_STORE_VERSION")
  paddingLength=$(expr 86 - $prefixLength)

  # Discover how much of the reserved relocation padding must be consumed.
  if [ "$paddingLength" -lt "0" ]; then
    echo "$ESY_EJECT__PREFIX is too deep inside filesystem, Esy won't be able to relocate binaries"
    exit 1;
  fi

  padding=$(esyRepeatCharacter '_' "$paddingLength")
  echo "$ESY_EJECT__PREFIX/$ESY_STORE_VERSION$padding"
}


esyGetStorePathFromPrefix "$1"