651d5bd238bf7bab399e3723a9335579cb16ad49
[webi-installers/.git] / webi / template.bash
1 #!/bin/bash
2
3 {
4
5 set -e
6 set -u
7
8 #WEBI_PKG=
9 #WEBI_NAME=
10 # TODO should this be BASEURL instead?
11 #WEBI_HOST=
12 #WEBI_RELEASES=
13 #WEBI_CSV=
14 #WEBI_VERSION=
15 #WEBI_MAJOR=
16 #WEBI_MINOR=
17 #WEBI_PATCH=
18 # TODO not sure if BUILD is the best name for this
19 #WEBI_BUILD=
20 #WEBI_LTS=
21 #WEBI_CHANNEL=
22 #WEBI_EXT=
23 #WEBI_PKG_URL=
24 #WEBI_PKG_FILE=
25
26 ##
27 ## Set up tmp, download, and install directories
28 ##
29
30 WEBI_TMP=${WEBI_TMP:-"$(mktemp -d -t webinstall-${WEBI_PKG:-}.XXXXXXXX)"}
31
32 mkdir -p "$HOME/Downloads"
33 mkdir -p "$HOME/.local/bin"
34 mkdir -p "$HOME/.local/opt"
35
36 ##
37 ## Detect http client
38 ##
39 set +e
40 export WEBI_CURL="$(command -v curl)"
41 export WEBI_WGET="$(command -v wget)"
42 set -e
43
44 webi_download() {
45     if [ -n "${1:-}" ]; then
46         my_url="$1"
47     else
48         if [ "error" == "$WEBI_CHANNEL" ]; then
49             echo "Could not find $WEBI_NAME v$WEBI_VERSION"
50             exit 1
51         fi
52         my_url="$WEBI_PKG_URL"
53         echo "Downloading $WEBI_NAME v$WEBI_VERSION"
54     fi
55     if [ -n "${2:-}" ]; then
56         my_dl="$2"
57     else
58         my_dl="$HOME/Downloads/$WEBI_PKG_FILE"
59     fi
60
61     if [ -n "$WEBI_WGET" ]; then
62         # wget has resumable downloads
63         # TODO wget -c --content-disposition "$my_url"
64         wget -q --show-progress -c "$my_url" --user-agent="wget $WEBI_UA" -O "$my_dl"
65     else
66         # BSD curl is non-resumable, hence we don't bother
67         # TODO curl -fsSL --remote-name --remote-header-name --write-out "$my_url"
68         curl -fSL "$my_url" -H "User-Agent: curl $WEBI_UA" -o "$my_dl"
69     fi
70 }
71
72 webi_extract() {
73     pushd "$WEBI_TMP" 2>&1 >/dev/null
74         if [ "tar" == "$WEBI_EXT" ]; then
75             echo "Extracting $HOME/Downloads/$WEBI_PKG_FILE"
76             tar xf "$HOME/Downloads/$WEBI_PKG_FILE"
77         elif [ "zip" == "$WEBI_EXT" ]; then
78             echo "Extracting $HOME/Downloads/$WEBI_PKG_FILE"
79             unzip "$HOME/Downloads/$WEBI_PKG_FILE"
80         else
81             # do nothing
82             echo "Failed to extract $HOME/Downloads/$WEBI_PKG_FILE"
83             exit 1
84         fi
85     popd 2>&1 >/dev/null
86 }
87
88 webi_path_add() {
89     # make sure that we don't recursively install pathman with webi
90     my_path="$PATH"
91     export PATH="$HOME/.local/bin:$PATH"
92     set +e
93     my_pathman=$(command -v pathman)
94     set -e
95     export PATH="$my_path"
96
97     # install pathman if not already installed
98     if [ -z "$my_pathman" ]; then
99         "$HOME/.local/bin/webi" pathman
100         "$HOME/.local/bin/pathman" add "$HOME/.local/bin"
101         export PATH="$HOME/.local/bin:$PATH"
102     fi
103
104     # in case pathman was recently installed and the PATH not updated
105     "$HOME/.local/bin/pathman" add "$1"
106 }
107
108 ##
109 ##
110 ## BEGIN user-submited script
111 ##
112 ##
113
114 {{ installer }}
115
116 ##
117 ##
118 ## END user-submitted script
119 ##
120 ##
121
122 }