#!/bin/bash
#
# Copyright 2013 Hewlett-Packard Development Company, L.P.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

set -eux
set -o pipefail

backup="/var/lib/use-ephemeral"
paths="${backup}/stateful-paths"
state="/mnt/state"

[ -e "${paths}" ] || exit 0

done="$(mktemp)"
while read -r line; do
    path="${line%;*}"
    dst="${state}${path}"
    dst_dir=$(dirname "${dst}")

    # stateful_paths may contain duplicates, don't copy any path twice
    src="${backup}${path}"
    [ -L "${src}" ] || src="$(readlink -f "${src}")"
    grep -qFx "${src}" "${done}" && continue
    echo "${src}" >> "${done}"

    mkdir -p "${dst_dir}"
    if [ -e "${src}" ]; then
        # If src is a symlink and we append /, it gets read-through
        [ -d "${src}" -a ! -L "${src}" ] && src="${src}/"
        rsync -av "${src}" "${dst}"
    fi
done < "${paths}"
rm -f "${done}"
