~tardypad/dotfiles

ref: 00c0c349a1b8960152233f11caa9ea1a40e395a3 dotfiles/files/scripts/shell/url -rwxr-xr-x 904 bytes
00c0c349 — Damien Tardy-Panis Add presentation mode to mako to hide notifications 4 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/sh

init_variables() {
  COMMAND=${0##*/}

  ACTION=
}

parse_command_line() {
  ACTION="$1"
}

validate_command_line() {
  if [ -z "${ACTION}" ]; then
    exit_error "missing action"
  fi

  if [ "${ACTION}" != 'encode' ] \
     && [ "${ACTION}" != 'decode' ]; then
    exit_error "invalid action '${ACTION}'"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

url_encode() {
  OLD_IFS="${IFS}"

  IFS="
"
  while read -r URL; do
    echo "${URL}" \
      | sed 's/./&\n/g' \
      | sed '$d' \
      | while read -r c; do
          case "$c" in
            [a-zA-Z0-9.~_-]) printf '%s' "$c" ;;
            *) printf '%%%02X' "'$c" ;;
          esac
        done
    printf '\n'
  done

  IFS="${OLD_IFS}"
}

url_decode() {
  # shellcheck disable=SC2059
  printf "$( sed 's/%/\\x/g' )\n"
}

init_variables
parse_command_line "$@"
validate_command_line

"url_${ACTION}"