use new bootstrap + webinstall approach
[webi-installers/.git] / webi / bootstrap.bash
1 #!/bin/bash
2
3 {
4
5 #WEBI_PKG=
6 #WEBI_HOST=https://webinstall.dev
7
8 mkdir -p "$HOME/.local/bin"
9
10 cat << EOF > "$HOME/.local/bin/webi"
11 #!/bin/bash
12
13 set -e
14 set -u
15
16 my_package="\${1:-}"
17 if [ -z "\$my_package" ]; then
18         echo "Usage: webi <package>@<version>"
19         echo "Example: webi node@latest"
20         exit 1
21 fi
22
23 ##
24 ## Detect acceptable package formats
25 ##
26
27 my_ext=""
28 set +e
29 if [ -n "\$(command -v git)" ]; then
30         my_ext="git,\$my_ext"
31 fi
32 if [ -n "\$(command -v tar)" ]; then
33         my_ext="tar,\$my_ext"
34 fi
35 if [ -n "\$(command -v unzip)" ]; then
36         my_ext="zip,\$my_ext"
37 fi
38 if [ -n "\$(command -v pkgutil)" ]; then
39         my_ext="pkg,\$my_ext"
40 fi
41 if [ -n "\$(command -v diskutil)" ]; then
42         # note: could also detect via hdiutil
43         my_ext="dmg,\$my_ext"
44 fi
45 my_ext="\$(echo "\$my_ext" | sed 's/,$//')" # nix trailing comma
46 set -e
47
48 ##
49 ## Detect http client
50 ##
51 set +e
52 export WEBI_CURL="\$(command -v curl)"
53 export WEBI_WGET="\$(command -v wget)"
54 set -e
55
56 export WEBI_BOOT="\$(mktemp -d -t "\$my_package-bootstrap.XXXXXXXX")"
57 export WEBI_HOST="\${WEBI_HOST:-https://webinstall.dev}"
58 export WEBI_UA="\$(uname -a)"
59
60 my_installer_url="\$WEBI_HOST/api/installers/\$my_package.bash?formats=\$my_ext"
61 if [ -n "\$WEBI_CURL" ]; then
62         curl -fsSL "\$my_installer_url" -H "User-Agent: curl \$WEBI_UA" \\
63                 -o "\$WEBI_BOOT/\$my_package-bootstrap.sh"
64 else
65         wget -q "\$my_installer_url" --user-agent="wget \$WEBI_UA" \\
66                 -O "\$WEBI_BOOT/\$my_package-bootstrap.sh"
67 fi
68
69 pushd "\$WEBI_BOOT" 2>&1 > /dev/null
70         bash "\$my_package-bootstrap.sh"
71 popd 2>&1 > /dev/null
72
73 rm -rf "\$WEBI_BOOT"
74 EOF
75
76 chmod a+x "$HOME/.local/bin/webi"
77
78 if [ -n "${WEBI_PKG:-}" ]; then
79     "$HOME/.local/bin/webi" "${WEBI_PKG}"
80 fi
81
82 }