|
3 | 3 | set -e |
4 | 4 |
|
5 | 5 | SCRIPTNAME=termux-wallpaper |
6 | | - |
7 | 6 | show_usage () { |
8 | 7 | echo "Change wallpaper on your device" |
9 | 8 | echo |
10 | | - echo "Usage: $SCRIPTNAME cmd [args]" |
| 9 | + echo "Usage: $SCRIPTNAME [options]" |
11 | 10 | echo "-h show this help" |
12 | 11 | echo "-f <file> set wallpaper from file" |
13 | 12 | echo "-u <url> set wallpaper from url resource" |
14 | 13 | echo "-l set wallpaper for lockscreen (Nougat and later)" |
15 | 14 | exit 1 |
16 | 15 | } |
17 | 16 |
|
18 | | -call_api() { |
19 | | - /data/data/com.termux/files/usr/libexec/termux-api Wallpaper "$@" |
20 | | -} |
21 | | - |
22 | | -usage_error () { |
23 | | - echo "ERROR: $@" |
24 | | - show_usage |
25 | | -} |
26 | | - |
27 | | -LOCKSCREEN_FLAG=1 |
28 | | -RESOURCE_FLAG=2 |
29 | | - |
30 | | -FLAGS=0 |
31 | | - |
32 | | -set_single () { |
33 | | - if [ $((FLAGS & $1)) -ne 0 ]; then |
34 | | - usage_error "Option already set" |
35 | | - fi |
36 | | - FLAGS=$((FLAGS | $1)) |
37 | | - PARAMS="$PARAMS $2" |
38 | | -} |
39 | | - |
40 | | -set_resource () { |
41 | | - if [ $((FLAGS & $RESOURCE_FLAG)) -ne 0 ]; then |
42 | | - usage_error "More than one image resource specified!" |
43 | | - fi |
44 | | - set_single $RESOURCE_FLAG "$1" |
45 | | -} |
46 | | - |
47 | | -set_file () { |
48 | | - if [ ! -f $1 ]; then |
49 | | - usage_error "'$1' is not a file!" |
50 | | - fi |
51 | | - set_resource "--es file "$(realpath $1)"" |
52 | | -} |
| 17 | +OPT_LS="" |
| 18 | +OPT_FILE="" |
| 19 | +OPT_URL="" |
53 | 20 |
|
54 | 21 | while getopts :h,:l,f:,u: option |
55 | 22 | do |
56 | 23 | case "$option" in |
57 | 24 | h) show_usage ;; |
58 | | - l) set_single $LOCKSCREEN_FLAG "--ez lockscreen true" ;; |
59 | | - f) set_file $OPTARG ;; |
60 | | - u) set_resource "--es url $OPTARG" ;; |
| 25 | + l) OPT_LS="true" ;; |
| 26 | + f) path="$(realpath "$OPTARG")" |
| 27 | + if [[ ! -f "$path" ]]; then |
| 28 | + echo "$SCRIPTNAME: $path is not a file!" |
| 29 | + exit 1 |
| 30 | + fi |
| 31 | + OPT_FILE="$path" ;; |
| 32 | + u) OPT_URL="$OPTARG" ;; |
61 | 33 | ?) echo "$SCRIPTNAME: illegal option -$OPTARG"; exit 1 ;; |
62 | 34 | esac |
63 | 35 | done |
64 | 36 |
|
65 | | -shift $((OPTIND - 1)) |
66 | | - |
67 | | -if [ $((FLAGS & RESOURCE_FLAG)) -eq 0 ]; then |
68 | | - usage_error "No file or url provided!" |
| 37 | +if [[ -z "$OPT_FILE""$OPT_URL" ]]; then |
| 38 | + echo "$SCRIPTNAME: you must specify either -f or -u" |
| 39 | + exit 1 |
| 40 | +elif [[ -n "$OPT_FILE" ]] && [[ -n "$OPT_URL" ]]; then |
| 41 | + echo "$SCRIPTNAME: you must specify either -f or -u, but not both" |
| 42 | + exit 1 |
69 | 43 | fi |
70 | 44 |
|
71 | | -call_api $PARAMS |
| 45 | +shift $((OPTIND - 1)) |
| 46 | +if [ $# != 0 ]; then echo "$SCRIPTNAME: too many arguments"; exit 1; fi |
| 47 | + |
| 48 | +set -- |
| 49 | +[ -n "$OPT_LS" ] && set -- "$@" --ez lockscreen "$OPT_LS" |
| 50 | +[ -n "$OPT_FILE" ] && set -- "$@" --es file "$OPT_FILE" |
| 51 | +[ -n "$OPT_URL" ] && set -- "$@" --es url "$OPT_URL" |
| 52 | +/data/data/com.termux/files/usr/libexec/termux-api Wallpaper "$@" |
0 commit comments