|
6 | 6 |
|
7 | 7 | # Set a dedicated .home directory for a selected AppImage |
8 | 8 | _home() { |
9 | | - cd "$APPSPATH" || return |
10 | | - if ! test -d ./"$arg"; then |
11 | | - echo " ERROR: \"$arg\" is not installed" |
| 9 | + if [ ! -d "$APPSPATH"/"$arg" ]; then |
| 10 | + echo " ERROR: \"$arg\" is not installed" || return |
| 11 | + elif [ -d "$APPSPATH/$arg/$arg.home" ]; then |
| 12 | + echo " ERROR: \"$arg\" already contains a home dir" |
| 13 | + elif ! strings -d "$APPSPATH/$arg/$arg" | grep -- '--appimage-extract' 1>/dev/null; then |
| 14 | + echo " ERROR: \"$arg\" is NOT an AppImage" |
12 | 15 | else |
13 | | - case "$arg" in |
14 | | - *) |
15 | | - if [ -z "$(strings -d "./$arg/$arg" 2>/dev/null | grep -F "if you run it with the --appimage-extract option")" ] 2>/dev/null; then |
16 | | - echo " ERROR: \"$arg\" is NOT an AppImage" |
17 | | - else |
18 | | - cd ./"$arg" || return |
19 | | - mkdir -p ./"$arg.home" |
20 | | - echo ' Setting $HOME to '"$APPSPATH/$arg/$arg"'.home for this AppImage' |
21 | | - fi |
22 | | - esac |
| 16 | + mkdir "$APPSPATH/$arg/$arg.home" || return |
| 17 | + echo ' $HOME set to '"$APPSPATH/$arg/$arg.home for $arg"'' |
| 18 | + fi |
| 19 | +} |
| 20 | + |
| 21 | +_config() { |
| 22 | + if [ ! -d "$APPSPATH"/"$arg" ]; then |
| 23 | + echo " ERROR: \"$arg\" is not installed" || return |
| 24 | + elif [ -d "$APPSPATH/$arg/$arg.config" ]; then |
| 25 | + echo " ERROR: \"$arg\" already contains a config dir" |
| 26 | + elif ! strings -d "$APPSPATH/$arg/$arg" | grep -- '--appimage-extract' 1>/dev/null; then |
| 27 | + echo " ERROR: \"$arg\" is NOT an AppImage" |
| 28 | + else |
| 29 | + mkdir "$APPSPATH/$arg/$arg.config" || return |
| 30 | + echo ' $XDG_CONFIG_HOME set to '"$APPSPATH/$arg/$arg.config for $arg"'' |
23 | 31 | fi |
24 | 32 | } |
25 | 33 |
|
|
33 | 41 | case "$1" in |
34 | 42 | '--sandbox') |
35 | 43 |
|
36 | | - case $2 in |
37 | | - '') |
38 | | - echo " USAGE: $AMCLI $1 [ARGUMENT]"; exit;; |
39 | | - esac |
40 | | - |
41 | 44 | # This script makes it easy to sandbox AppImages installed with AppMan or AM |
42 | 45 | # The default location for the sandboxed homes is at $HOME/.local/am-sandboxes |
43 | 46 | # But that location can be changed by setting the $SANDBOXDIR env variable |
44 | 47 | # aisap: https://github.com/mgord9518/aisap |
45 | 48 |
|
| 49 | + [ -z "$2" ] && echo " USAGE: $AMCLI $1 [ARGUMENT]" && exit 1 |
46 | 50 | while [ -n "$1" ]; do |
47 | 51 | # Safety checks |
48 | 52 | if ! test -f "$APPSPATH/$2/remove"; then |
@@ -270,21 +274,34 @@ case "$1" in |
270 | 274 | ;; |
271 | 275 |
|
272 | 276 | '-H'|'--home') |
273 | | - case $2 in |
274 | | - '') echo " USAGE: $AMCLI $1 [ARGUMENT]"; exit;; |
275 | | - esac |
276 | | - |
| 277 | + [ -z "$2" ] && echo " USAGE: $AMCLI $1 [ARGUMENT]" && exit 1 |
277 | 278 | while [ -n "$1" ]; do |
278 | 279 | rm -f "$AMCACHEDIR/home-args" |
279 | 280 | echo "$@" | tr ' ' '\n' >> "$AMCACHEDIR/home-args" && echo STOP >> "$AMCACHEDIR/home-args" |
280 | 281 | ARGS=$(tail -n +2 "$AMCACHEDIR"/home-args) |
281 | 282 | for arg in $ARGS; do |
282 | 283 | if [ "$arg" = STOP ]; then |
283 | | - exit |
| 284 | + exit 0 |
284 | 285 | else |
285 | 286 | _home |
286 | 287 | fi |
287 | 288 | done |
288 | 289 | done |
289 | 290 | ;; |
| 291 | + |
| 292 | + '-C'|'--config') |
| 293 | + [ -z "$2" ] && echo " USAGE: $AMCLI $1 [ARGUMENT]" && exit 1 |
| 294 | + while [ -n "$1" ]; do |
| 295 | + rm -f "$AMCACHEDIR/config-args" |
| 296 | + echo "$@" | tr ' ' '\n' >> "$AMCACHEDIR/config-args" && echo STOP >> "$AMCACHEDIR/config-args" |
| 297 | + ARGS=$(tail -n +2 "$AMCACHEDIR"/config-args) |
| 298 | + for arg in $ARGS; do |
| 299 | + if [ "$arg" = STOP ]; then |
| 300 | + exit 0 |
| 301 | + else |
| 302 | + _config |
| 303 | + fi |
| 304 | + done |
| 305 | + done |
| 306 | + ;; |
290 | 307 | esac |
0 commit comments