Add support for file to source-repositories
Adds a file type to source-repositories to allow individual files to make use of source-repositories caching. REPO_DIRECTORY has been rename to REPO_DEST since it is now sometimes a file. This change also fixes the incorrect path to the cache-url in the tar type. Change-Id: Ib79e41969c982a02f0235318d9f254b39c3c6d93
This commit is contained in:
parent
cc681eb830
commit
9e5bc37265
@ -2,14 +2,16 @@
|
|||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
# Gets Repositories listed in the a repository file and places them in
|
# Gets repositories or individual files listed in the a repository file
|
||||||
# the repository directory.
|
# and places them in the specified destination path.
|
||||||
# The format of the repository file is one or more lines matching
|
# The format of the repository file is one or more lines matching
|
||||||
# <name> <type> <destination> <location> [<ref>]
|
# <name> <type> <destination> <location> [<ref>]
|
||||||
function get_repos_for_element(){
|
function get_repos_for_element(){
|
||||||
local REPO_SOURCES=$1
|
local REPO_SOURCES=$1
|
||||||
|
local CACHE_URL=$TMP_HOOKS_PATH/bin/cache-url
|
||||||
|
|
||||||
|
local REGEX="^([^ ]+) (git|tar|file) (/[^ ]+) ([^ ]+) ?([^ ]*)$"
|
||||||
|
|
||||||
local REGEX="^([^ ]+) (git|tar) (/[^ ]+) ([^ ]+) ?([^ ]*)$"
|
|
||||||
while read line ; do
|
while read line ; do
|
||||||
|
|
||||||
# ignore blank lines and lines begining in '#'
|
# ignore blank lines and lines begining in '#'
|
||||||
@ -23,8 +25,8 @@ function get_repos_for_element(){
|
|||||||
local REPO_ORIG_LOCATION=$REPOLOCATION
|
local REPO_ORIG_LOCATION=$REPOLOCATION
|
||||||
local REPOREF=${BASH_REMATCH[5]:-master}
|
local REPOREF=${BASH_REMATCH[5]:-master}
|
||||||
|
|
||||||
local REPO_DIRECTORY=$TMP_MOUNT_PATH$REPOPATH
|
local REPO_DEST=$TMP_MOUNT_PATH$REPOPATH
|
||||||
local REPO_SUB_DIRECTORY=$(dirname $REPO_DIRECTORY)
|
local REPO_SUB_DIRECTORY=$(dirname $REPO_DEST)
|
||||||
|
|
||||||
# REPOTYPE can be overridden with DIB_REPOTYPE_{name}
|
# REPOTYPE can be overridden with DIB_REPOTYPE_{name}
|
||||||
local REPOTYPE_OVERRIDE=DIB_REPOTYPE_${REPONAME//-/_}
|
local REPOTYPE_OVERRIDE=DIB_REPOTYPE_${REPONAME//-/_}
|
||||||
@ -57,11 +59,11 @@ function get_repos_for_element(){
|
|||||||
git --git-dir=$CACHE_PATH/.git fetch
|
git --git-dir=$CACHE_PATH/.git fetch
|
||||||
git --git-dir=$CACHE_PATH/.git --work-tree=$CACHE_PATH reset --hard origin/master
|
git --git-dir=$CACHE_PATH/.git --work-tree=$CACHE_PATH reset --hard origin/master
|
||||||
fi
|
fi
|
||||||
sudo git clone $CACHE_PATH $REPO_DIRECTORY
|
sudo git clone $CACHE_PATH $REPO_DEST
|
||||||
else
|
else
|
||||||
sudo git clone $REPOLOCATION $REPO_DIRECTORY
|
sudo git clone $REPOLOCATION $REPO_DEST
|
||||||
fi
|
fi
|
||||||
pushd $REPO_DIRECTORY
|
pushd $REPO_DEST
|
||||||
sudo git reset --hard $REPOREF
|
sudo git reset --hard $REPOREF
|
||||||
popd
|
popd
|
||||||
;;
|
;;
|
||||||
@ -73,16 +75,27 @@ function get_repos_for_element(){
|
|||||||
local tmpdir=$(mktemp --tmpdir=$TMP_MOUNT_PATH/tmp -d)
|
local tmpdir=$(mktemp --tmpdir=$TMP_MOUNT_PATH/tmp -d)
|
||||||
if [ -n "$CACHE_PATH" ] ; then
|
if [ -n "$CACHE_PATH" ] ; then
|
||||||
if [ ! -f "$CACHE_PATH" -o -z "$DIB_OFFLINE" ] ; then
|
if [ ! -f "$CACHE_PATH" -o -z "$DIB_OFFLINE" ] ; then
|
||||||
$TMP_MOUNT_PATH/usr/local/bin/cache-url $REPOLOCATION $CACHE_PATH
|
$CACHE_URL $REPOLOCATION $CACHE_PATH
|
||||||
fi
|
fi
|
||||||
tar -C $tmpdir -xzf $CACHE_PATH
|
tar -C $tmpdir -xzf $CACHE_PATH
|
||||||
else
|
else
|
||||||
curl $REPOLOCATION | tar -C $tmpdir -xzf -
|
curl $REPOLOCATION | tar -C $tmpdir -xzf -
|
||||||
fi
|
fi
|
||||||
sudo mkdir -p $REPO_DIRECTORY
|
sudo mkdir -p $REPO_DEST
|
||||||
sudo mv $tmpdir/*/* $REPO_DIRECTORY
|
sudo mv $tmpdir/*/* $REPO_DEST
|
||||||
rm -rf $tmpdir
|
rm -rf $tmpdir
|
||||||
;;
|
;;
|
||||||
|
file)
|
||||||
|
sudo mkdir -p $REPO_SUB_DIRECTORY
|
||||||
|
if [ -n "$CACHE_PATH" ] ; then
|
||||||
|
if [ ! -f "$CACHE_PATH" -o -z "$DIB_OFFLINE" ] ; then
|
||||||
|
$CACHE_URL $REPOLOCATION $CACHE_PATH
|
||||||
|
fi
|
||||||
|
sudo cp $CACHE_PATH $REPO_DEST
|
||||||
|
else
|
||||||
|
sudo curl $REPOLOCATION -o $REPO_DEST
|
||||||
|
fi
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unsupported repository type"
|
echo "Unsupported repository type"
|
||||||
return 1
|
return 1
|
||||||
|
Loading…
Reference in New Issue
Block a user