#!/usr/bin/env bash

# Try to hardlink a file into a directory, fallback to copy on failure.
#
# Hardlink-or-copy the source file in the first argument into the
# destination directory in the second argument, using the basename in
# the third argument as basename for the destination file. If the third
# argument is missing, use the basename of the source file as basename
# for the destination file.
#
# In either case, remove the destination prior to doing the
# hardlink-or-copy.
#
# Note that this is NOT an atomic operation.

set -e

main() {
    local src_file="${1}"
    local dst_dir="${2}"
    local dst_file="${3}"

    if [ -n "${dst_file}" ]; then
        dst_file="${dst_dir}/${dst_file}"
    else
        dst_file="${dst_dir}/${src_file##*/}"
    fi

    mkdir -p "${dst_dir}"
    rm -f "${dst_file}"
    ln -f "${src_file}" "${dst_file}" 2>/dev/null \
    || cp -f "${src_file}" "${dst_file}"
}

main "${@}"
