소스 검색

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 년 전
부모
커밋
2b1f8a88bc
1개의 변경된 파일51개의 추가작업 그리고 15개의 파일을 삭제
  1. 51
    15
      src/freedombone-mirrors

+ 51
- 15
src/freedombone-mirrors 파일 보기

@@ -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