浏览代码

Don't reinstall apps which have been removed during updates

Bob Mottram 8 年前
父节点
当前提交
e6fbcf7db0
共有 2 个文件被更改,包括 53 次插入3 次删除
  1. 1
    0
      src/freedombone-app-gnusocial
  2. 52
    3
      src/freedombone-utils-selector

+ 1
- 0
src/freedombone-app-gnusocial 查看文件

@@ -360,6 +360,7 @@ function remove_gnusocial {
360 360
     remove_onion_service microblog ${MICROBLOG_ONION_PORT}
361 361
     sed -i '/install_gnusocial/d' $COMPLETION_FILE
362 362
     sed -i '/GNU Social /d' $COMPLETION_FILE
363
+    remove_app gnusocial
363 364
 }
364 365
 
365 366
 function install_gnusocial_main {

+ 52
- 3
src/freedombone-utils-selector 查看文件

@@ -40,6 +40,9 @@ APPS_CHOSEN=()
40 40
 # A list of the names of installed apps
41 41
 APPS_INSTALLED_NAMES=()
42 42
 
43
+# file containing a list of removed apps
44
+REMOVED_APPS_FILE=/root/removed
45
+
43 46
 function app_variants {
44 47
     filename=$1
45 48
     variants_line=$(cat ${filename} | grep "VARIANTS=")
@@ -57,6 +60,40 @@ function item_in_array {
57 60
     return 1
58 61
 }
59 62
 
63
+function remove_app {
64
+    app_name=$1
65
+    if [ ! -f $REMOVED_APPS_FILE ]; then
66
+        touch $REMOVED_APPS_FILE
67
+    fi
68
+    if ! grep -Fxq "$app_name" $REMOVED_APPS_FILE; then
69
+        echo "$app_name" >> $REMOVED_APPS_FILE
70
+    fi
71
+}
72
+
73
+function app_is_removed {
74
+    app_name="$1"
75
+    if [ ! -f $REMOVED_APPS_FILE ]; then
76
+        echo "0"
77
+        return
78
+    fi
79
+
80
+    if ! grep -Fxq "$app_name" $REMOVED_APPS_FILE; then
81
+        echo "0"
82
+    else
83
+        echo "1"
84
+    fi
85
+}
86
+
87
+function reinstall_app {
88
+    app_name=$1
89
+    if [ ! -f $REMOVED_APPS_FILE ]; then
90
+        return
91
+    fi
92
+    if [[ $(app_is_removed $app_name) == "1" ]]; then
93
+        sed -i "/${app_name}/d" $REMOVED_APPS_FILE
94
+    fi
95
+}
96
+
60 97
 function app_is_installed {
61 98
     app_name="$1"
62 99
 
@@ -213,6 +250,7 @@ function remove_apps {
213 250
         if [[ ${APPS_INSTALLED[$app_index]} == "1" ]]; then
214 251
             if [[ ${APPS_CHOSEN[$app_index]} == "0" ]]; then
215 252
                 echo $"Removing application: ${a}"
253
+                remove_app ${a}
216 254
                 remove_${a}
217 255
                 echo $"${a} was removed"
218 256
             fi
@@ -246,9 +284,20 @@ function install_apps {
246 284
     do
247 285
         if [[ ${APPS_INSTALLED[$app_index]} == "0" ]]; then
248 286
             if [[ ${APPS_CHOSEN[$app_index]} == "1" ]]; then
249
-                echo $"Installing application: ${a}"
250
-                install_${a}
251
-                echo $"${a} was installed"
287
+                if [ ${is_interactive} ]; then
288
+                    reinstall_app ${a}
289
+                    echo $"Installing application: ${a}"
290
+                    install_${a}
291
+                    echo $"${a} was installed"
292
+                else
293
+                    if [[ $(app_is_removed ${a}) == "0" ]]; then
294
+                        echo $"Installing application: ${a}"
295
+                        install_${a}
296
+                        echo $"${a} was installed"
297
+                    else
298
+                        echo $"${a} has been removed and so will not be reinstalled"
299
+                    fi
300
+                fi
252 301
             fi
253 302
         fi
254 303
         app_index=$[app_index+1]