Bladeren bron

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
Bob Mottram 8 jaren geleden
bovenliggende
commit
2b1f8a88bc
1 gewijzigde bestanden met toevoegingen van 51 en 15 verwijderingen
  1. 51
    15
      src/freedombone-mirrors

+ 51
- 15
src/freedombone-mirrors Bestand weergeven

@@ -40,7 +40,8 @@ CONFIGURATION_FILE="$HOME/${PROJECT_NAME}.cfg"
40 40
 
41 41
 # if this is blank then just use the default repos
42 42
 FRIENDS_MIRRORS_SERVER=
43
-REPOS=
43
+UTILS_REPOS=
44
+INSTALLED_APPS_REPOS=
44 45
 MY_MIRRORS_PASSWORD=
45 46
 FRIENDS_MIRRORS_PASSWORD=
46 47
 NEW_MIRRORS='no'
@@ -51,12 +52,13 @@ if [ ! -f $MAIN_COMMAND ]; then
51 52
     MAIN_COMMAND=/usr/bin/${PROJECT_NAME}
52 53
 fi
53 54
 
54
-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'))
55
+# local repos for utils
56
+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'))
55 57
 
56 58
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
57 59
 for f in $UTILS_FILES
58 60
 do
59
-  source $f
61
+    source $f
60 62
 done
61 63
 
62 64
 # obtain the mirrors password if it exists
@@ -116,29 +118,57 @@ function enable_mirrors_via_onion {
116 118
     fi
117 119
 }
118 120
 
119
-function update_repos_from_friend {
120
-    if [ ! $FRIENDS_MIRRORS_SERVER ]; then
121
-       return
122
-    fi
123
-    if [ ${#FRIENDS_MIRRORS_SERVER} -lt 2 ]; then
124
-        return
125
-    fi
121
+function update_installed_apps_repos {
122
+    INSTALLED_APPS_REPOS=()
123
+    FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
126 124
 
125
+    function_check app_is_installed
126
+
127
+    # for all the app scripts
128
+    for filename in $FILES
129
+    do
130
+        app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
131
+        if [[ "$(app_is_installed ${app_name})" == "1" ]]; then
132
+            APP_REPOS=($(cat ${MAIN_COMMAND} $filename | grep "_REPO=\"" | grep -v "(cat " | uniq -u | sed 's|${PROJECT_NAME}|'"${PROJECT_NAME}"'|g'))
133
+            for line in "${APP_REPOS[@]}"
134
+            do
135
+                INSTALLED_APPS_REPOS+=("${line}")
136
+            done
137
+        fi
138
+    done
139
+}
140
+
141
+function update_repos_from_friend_base {
142
+    syncrepos=${1}
127 143
     new_repos=()
128
-    for line in "${REPOS[@]}"
144
+    for line in $syncrepos
129 145
     do
130 146
         repo_name=$(echo "$line" | awk -F '=' '{print $1}')
131 147
         mirrors_name=$(echo "$repo_name" | sed "s|_REPO||g" | awk '{print tolower($0)}')
132
-        #repo_url=$(echo "$line" | awk -F '=' '{print $2}'  | awk -F '"' '{print $2}')
133 148
         friends_repo_url="ssh://mirrors@${FRIENDS_MIRRORS_SERVER}:${FRIENDS_MIRRORS_SSH_PORT}/home/mirrors/${mirrors_name}"
134 149
         new_line="${repo_name}=\"${friends_repo_url}\""
135 150
         new_repos+=($new_line)
136 151
     done
137
-    REPOS=("${new_repos[@]}")
138 152
 }
139 153
 
140
-function sync_mirrors_repos {
141
-    for line in "${REPOS[@]}"
154
+function update_repos_from_friend {
155
+    if [ ! $FRIENDS_MIRRORS_SERVER ]; then
156
+       return
157
+    fi
158
+    if [ ${#FRIENDS_MIRRORS_SERVER} -lt 2 ]; then
159
+        return
160
+    fi
161
+
162
+    update_repos_from_friend_base "${UTILS_REPOS[@]}"
163
+    UTILS_REPOS=("${new_repos[@]}")
164
+
165
+    update_repos_from_friend_base "${INSTALLED_APPS_REPOS[@]}"
166
+    INSTALLED_APPS_REPOS=("${new_repos[@]}")
167
+}
168
+
169
+function sync_mirrors_base {
170
+    syncrepos=${1}
171
+    for line in $syncrepos
142 172
     do
143 173
         repo_name=$(echo "$line" | awk -F '=' '{print $1}')
144 174
         repo_url=$(echo "$line" | awk -F '=' '{print $2}'  | awk -F '"' '{print $2}')
@@ -172,6 +202,11 @@ function sync_mirrors_repos {
172 202
     chown -R mirrors:mirrors /home/mirrors
173 203
 }
174 204
 
205
+function sync_mirrors_repos {
206
+    sync_mirrors_base "${UTILS_REPOS[@]}"
207
+    sync_mirrors_base "${INSTALLED_APPS_REPOS[@]}"
208
+}
209
+
175 210
 while [[ $# > 1 ]]
176 211
 do
177 212
 key="$1"
@@ -212,6 +247,7 @@ done
212 247
 
213 248
 create_mirrors_user
214 249
 enable_mirrors_via_onion
250
+update_installed_apps_repos
215 251
 update_repos_from_friend
216 252
 sync_mirrors_repos
217 253