Skip to content
Snippets Groups Projects
Commit 2b1f8a88 authored by Bob Mottram's avatar Bob Mottram
Browse files

Only mirror apps which are installed

Potentially the number of installable apps could get large so mirroring them all could become very slow, especially on low power hardware
parent 348abc63
No related branches found
No related tags found
No related merge requests found
......@@ -40,7 +40,8 @@ CONFIGURATION_FILE="$HOME/${PROJECT_NAME}.cfg"
# if this is blank then just use the default repos
FRIENDS_MIRRORS_SERVER=
REPOS=
UTILS_REPOS=
INSTALLED_APPS_REPOS=
MY_MIRRORS_PASSWORD=
FRIENDS_MIRRORS_PASSWORD=
NEW_MIRRORS='no'
......@@ -51,12 +52,13 @@ if [ ! -f $MAIN_COMMAND ]; then
MAIN_COMMAND=/usr/bin/${PROJECT_NAME}
fi
REPOS=($(cat ${MAIN_COMMAND} /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-* /usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* | grep "_REPO=\"" | grep -v "(cat " | uniq -u | sed 's|${PROJECT_NAME}|'"${PROJECT_NAME}"'|g'))
# local repos for utils
UTILS_REPOS=($(cat ${MAIN_COMMAND} /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-* /usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* | grep "_REPO=\"" | grep -v "(cat " | uniq -u | sed 's|${PROJECT_NAME}|'"${PROJECT_NAME}"'|g'))
UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
for f in $UTILS_FILES
do
source $f
source $f
done
# obtain the mirrors password if it exists
......@@ -116,29 +118,57 @@ function enable_mirrors_via_onion {
fi
}
function update_repos_from_friend {
if [ ! $FRIENDS_MIRRORS_SERVER ]; then
return
fi
if [ ${#FRIENDS_MIRRORS_SERVER} -lt 2 ]; then
return
fi
function update_installed_apps_repos {
INSTALLED_APPS_REPOS=()
FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
function_check app_is_installed
# for all the app scripts
for filename in $FILES
do
app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
if [[ "$(app_is_installed ${app_name})" == "1" ]]; then
APP_REPOS=($(cat ${MAIN_COMMAND} $filename | grep "_REPO=\"" | grep -v "(cat " | uniq -u | sed 's|${PROJECT_NAME}|'"${PROJECT_NAME}"'|g'))
for line in "${APP_REPOS[@]}"
do
INSTALLED_APPS_REPOS+=("${line}")
done
fi
done
}
function update_repos_from_friend_base {
syncrepos=${1}
new_repos=()
for line in "${REPOS[@]}"
for line in $syncrepos
do
repo_name=$(echo "$line" | awk -F '=' '{print $1}')
mirrors_name=$(echo "$repo_name" | sed "s|_REPO||g" | awk '{print tolower($0)}')
#repo_url=$(echo "$line" | awk -F '=' '{print $2}' | awk -F '"' '{print $2}')
friends_repo_url="ssh://mirrors@${FRIENDS_MIRRORS_SERVER}:${FRIENDS_MIRRORS_SSH_PORT}/home/mirrors/${mirrors_name}"
new_line="${repo_name}=\"${friends_repo_url}\""
new_repos+=($new_line)
done
REPOS=("${new_repos[@]}")
}
function sync_mirrors_repos {
for line in "${REPOS[@]}"
function update_repos_from_friend {
if [ ! $FRIENDS_MIRRORS_SERVER ]; then
return
fi
if [ ${#FRIENDS_MIRRORS_SERVER} -lt 2 ]; then
return
fi
update_repos_from_friend_base "${UTILS_REPOS[@]}"
UTILS_REPOS=("${new_repos[@]}")
update_repos_from_friend_base "${INSTALLED_APPS_REPOS[@]}"
INSTALLED_APPS_REPOS=("${new_repos[@]}")
}
function sync_mirrors_base {
syncrepos=${1}
for line in $syncrepos
do
repo_name=$(echo "$line" | awk -F '=' '{print $1}')
repo_url=$(echo "$line" | awk -F '=' '{print $2}' | awk -F '"' '{print $2}')
......@@ -172,6 +202,11 @@ function sync_mirrors_repos {
chown -R mirrors:mirrors /home/mirrors
}
function sync_mirrors_repos {
sync_mirrors_base "${UTILS_REPOS[@]}"
sync_mirrors_base "${INSTALLED_APPS_REPOS[@]}"
}
while [[ $# > 1 ]]
do
key="$1"
......@@ -212,6 +247,7 @@ done
create_mirrors_user
enable_mirrors_via_onion
update_installed_apps_repos
update_repos_from_friend
sync_mirrors_repos
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment