2021-10-21 20:57:52 -07:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Fail on any error.
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# Directory that holds the cached packages.
|
|
|
|
cache_dir=$1
|
|
|
|
|
|
|
|
# Root directory to untar the cached packages to.
|
|
|
|
# Typically filesystem root '/' but can be changed for testing.
|
|
|
|
cache_restore_root=$2
|
|
|
|
|
|
|
|
# Indicates that the cache was found.
|
|
|
|
cache_hit=$3
|
|
|
|
|
|
|
|
# Indicates that a refresh of the packages in the cache is required.
|
|
|
|
refresh=$4
|
|
|
|
|
|
|
|
# List of the packages to use.
|
|
|
|
packages="${@:5}"
|
|
|
|
|
2021-10-21 21:22:07 -07:00
|
|
|
script_dir=$(dirname $0)
|
|
|
|
|
2021-10-21 21:39:47 -07:00
|
|
|
if [ "$cache_hit" == false ] || [ "$refresh" == true ]; then
|
2021-10-21 21:22:07 -07:00
|
|
|
$script_dir/install_and_cache_pkgs.sh ~/cache-apt-pkgs $packages
|
2021-10-21 20:57:52 -07:00
|
|
|
else
|
2021-10-21 21:22:07 -07:00
|
|
|
$script_dir/restore_pkgs.sh ~/cache-apt-pkgs $cache_restore_root
|
2021-10-21 20:57:52 -07:00
|
|
|
fi
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
echo "Creating package manifest..."
|
|
|
|
manifest=
|
|
|
|
for package in $packages; do
|
|
|
|
item=$package:$(dpkg -s $package | grep Version | awk '{print $2}')
|
|
|
|
echo "- $item"
|
|
|
|
manifest=$manifest$item,
|
|
|
|
done
|
2021-10-21 21:22:07 -07:00
|
|
|
echo "done."
|
2021-10-21 20:57:52 -07:00
|
|
|
|
|
|
|
manifest_filepath="$cache_dir/manifest.log"
|
2021-10-21 21:22:07 -07:00
|
|
|
echo -n "Writing manifest to $manifest_filepath..."
|
|
|
|
# Remove trailing comma.
|
|
|
|
echo ${manifest:0:-1} > $manifest_filepath
|
|
|
|
echo "done."
|