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