|
1 | | -#!/bin/bash |
2 | | -export FrameworkPathOverride=$(dirname $(which mono))/../lib/mono/4.5/ |
| 1 | +#!/usr/bin/env bash |
3 | 2 |
|
4 | | -if test "$OS" = "Windows_NT" |
| 3 | +set -eu |
| 4 | + |
| 5 | +cd `dirname $0` |
| 6 | + |
| 7 | +PAKET_BOOTSTRAPPER_EXE=.paket/paket.bootstrapper.exe |
| 8 | +PAKET_EXE=.paket/paket.exe |
| 9 | +FAKE_EXE=packages/build/FAKE/tools/FAKE.exe |
| 10 | + |
| 11 | +FSIARGS="" |
| 12 | +FSIARGS2="" |
| 13 | +OS=${OS:-"unknown"} |
| 14 | +if [ "$OS" != "Windows_NT" ] |
5 | 15 | then |
6 | | - # use .Net |
7 | | - .paket/paket.exe restore |
8 | | - exit_code=$? |
9 | | - if [ $exit_code -ne 0 ]; then |
10 | | - exit $exit_code |
11 | | - fi |
12 | | - |
13 | | - [ ! -e build.fsx ] && .paket/paket.exe update |
14 | | - [ ! -e build.fsx ] && packages/build/FAKE/tools/FAKE.exe init.fsx |
15 | | - packages/build/FAKE/tools/FAKE.exe $@ --fsiargs -d:MONO build.fsx |
16 | | -else |
17 | | - # use mono |
18 | | - mono .paket/paket.exe restore |
19 | | - exit_code=$? |
20 | | - if [ $exit_code -ne 0 ]; then |
21 | | - exit $exit_code |
| 16 | + # Can't use FSIARGS="--fsiargs -d:MONO" in zsh, so split it up |
| 17 | + # (Can't use arrays since dash can't handle them) |
| 18 | + FSIARGS="--fsiargs" |
| 19 | + FSIARGS2="-d:MONO" |
| 20 | +fi |
| 21 | + |
| 22 | +run() { |
| 23 | + if [ "$OS" != "Windows_NT" ] |
| 24 | + then |
| 25 | + mono "$@" |
| 26 | + else |
| 27 | + "$@" |
22 | 28 | fi |
| 29 | +} |
23 | 30 |
|
24 | | - [ ! -e build.fsx ] && mono .paket/paket.exe update |
25 | | - [ ! -e build.fsx ] && mono packages/build/FAKE/tools/FAKE.exe init.fsx |
26 | | - mono packages/build/FAKE/tools/FAKE.exe $@ --fsiargs -d:MONO build.fsx |
| 31 | +yesno() { |
| 32 | + # NOTE: Defaults to NO |
| 33 | + read -p "$1 [y/N] " ynresult |
| 34 | + case "$ynresult" in |
| 35 | + [yY]*) true ;; |
| 36 | + *) false ;; |
| 37 | + esac |
| 38 | +} |
| 39 | + |
| 40 | +set +e |
| 41 | +run $PAKET_BOOTSTRAPPER_EXE |
| 42 | +bootstrapper_exitcode=$? |
| 43 | +set -e |
| 44 | + |
| 45 | +if [ "$OS" != "Windows_NT" ] && |
| 46 | + [ $bootstrapper_exitcode -ne 0 ] && |
| 47 | + [ $(certmgr -list -c Trust | grep X.509 | wc -l) -le 1 ] && |
| 48 | + [ $(certmgr -list -c -m Trust | grep X.509 | wc -l) -le 1 ] |
| 49 | +then |
| 50 | + echo "Your Mono installation has no trusted SSL root certificates set up." |
| 51 | + echo "This may result in the Paket bootstrapper failing to download Paket" |
| 52 | + echo "because Github's SSL certificate can't be verified. One way to fix" |
| 53 | + echo "this issue would be to download the list of SSL root certificates" |
| 54 | + echo "from the Mozilla project by running the following command:" |
| 55 | + echo "" |
| 56 | + echo " mozroots --import --sync" |
| 57 | + echo "" |
| 58 | + echo "This will import over 100 SSL root certificates into your Mono" |
| 59 | + echo "certificate repository." |
| 60 | + echo "" |
| 61 | + if yesno "Run 'mozroots --import --sync' now?" |
| 62 | + then |
| 63 | + mozroots --import --sync |
| 64 | + else |
| 65 | + echo "Attempting to continue without running mozroots. This might fail." |
| 66 | + fi |
| 67 | + # Re-run bootstrapper whether or not the user ran mozroots, because maybe |
| 68 | + # they fixed the problem in a separate terminal window. |
| 69 | + run $PAKET_BOOTSTRAPPER_EXE |
27 | 70 | fi |
| 71 | + |
| 72 | +run $PAKET_EXE restore |
| 73 | + |
| 74 | +[ ! -e build.fsx ] && run $PAKET_EXE update |
| 75 | +[ ! -e build.fsx ] && run $FAKE_EXE init.fsx |
| 76 | +run $FAKE_EXE "$@" $FSIARGS $FSIARGS2 build.fsx |
0 commit comments