81 lines
2.2 KiB
Bash
Executable File
81 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Print help and exit
|
|
usage(){
|
|
echo "-- $0 --"
|
|
echo "Freeze package environement in distributions. Create a 'fake' repository with real repodata but symbolic link of rpms"
|
|
echo "$0 OrigDir/repmod.xml BaseRepoDir DestDistributionBasenaemeDir"
|
|
exit
|
|
}
|
|
|
|
# Print the first arguement, execute the rest of the arguements and print the result OK/FAILED
|
|
action(){
|
|
echo -ne "${1} : "
|
|
shift
|
|
$@ &> /tmp/aaa
|
|
[[ $? -eq 0 ]] && echo -e '\033[0;32mOK\033[0m' || echo -e '\033[0;31mFAILED\033[0m'
|
|
}
|
|
|
|
# Create tree structure of the repository in the destination directory
|
|
CreateEnv(){
|
|
CptErr=0
|
|
[[ ! -d ${DirDest} ]] && mkdir -p ${DirDest} || true
|
|
CptErr=$((CptErr + $?))
|
|
for Dir in $(find -L $OrigBaseRepo -type d| sed "s#${OrigBaseRepo}##g")
|
|
do
|
|
[[ ! -d ${DirDest}/${Dir} ]] && mkdir -p ${DirDest}/${Dir} || true
|
|
CptErr=$((CptErr + $?))
|
|
done
|
|
|
|
CptErr=$((CptErr + $?))
|
|
return $CptErr
|
|
}
|
|
|
|
# for each rpm in the (get)Package directory, create a symbolic link in the destination directory
|
|
RpmLink(){
|
|
CptErr=0
|
|
for Rpm in $(find -L $OrigBaseRepo -type f -name "*.rpm" | sed "s#${OrigBaseRepo}##g")
|
|
do
|
|
[[ ! -L ${DirDest}/${Rpm} ]] && ln -s ${OrigBaseRepo}${Rpm} ${DirDest}/${Rpm} || true
|
|
CptErr=$((CptErr + $?))
|
|
done
|
|
return $CptErr
|
|
}
|
|
|
|
# Copy repodata files in the destination directory
|
|
RepoModCopy(){
|
|
cp -vf $(dirname ${RepModFile})/* $(dirname $(echo ${RepModFile}| sed "s#${BaseDirDestRepo}#${DestDir}#g"))/.
|
|
CptErr=$((CptErr + $?))
|
|
return $?
|
|
}
|
|
|
|
# Check all arguments and create variable environement for readability
|
|
CheckArg(){
|
|
[[ ! -f ${1} ]] && usage
|
|
RepModFile=${1}
|
|
[[ ! -d ${2} ]] && usage
|
|
BaseDirDestRepo=${2}
|
|
DestDir=${3}/distributions/
|
|
DirDest=$(echo $(dirname $(dirname ${RepModFile})) | sed "s#${BaseDirDestRepo}#${DestDir}#g")
|
|
OrigBaseRepo=$(echo $(dirname $(dirname ${RepModFile})))
|
|
}
|
|
|
|
|
|
# Main
|
|
|
|
CheckArg ${1} ${2} ${3}
|
|
echo "
|
|
###############################################
|
|
RepModFile = ${1}
|
|
BaseDirDestRepo = ${2}
|
|
DestDir = ${3}
|
|
###############################################"
|
|
|
|
# Execute
|
|
|
|
action "Create dest environement" CreateEnv ${RepModFile} ${BaseDirDestRepo} ${DestDir}
|
|
action "Link Rpm" RpmLink ${RepModFile} ${BaseDirDestRepo} ${DestDir}
|
|
action "Copy repo data" RepoModCopy ${RepModFile} ${BaseDirDestRepo} ${DestDir}
|
|
|
|
|