Skip to content

Commit f933b81

Browse files
Tom Firthbegriffs
Tom Firth
authored andcommitted
Fixing install.sh so that the BASIC_ONLY option does not always skip the haskell installation. (#248)
1 parent 4f76d17 commit f933b81

File tree

3 files changed

+34
-27
lines changed

3 files changed

+34
-27
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ env:
3434
- XDG_CONFIG_HOME=$HOME/.config
3535

3636
script:
37-
- bash install.sh --no-hoogle
37+
- bash install.sh --no-hoogle --dry-run
3838

3939
# Caching so the next build will be fast too.
4040
cache:

install.sh

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
PROGNAME=$(basename $0)
44
DEFAULT_REPO="https://github.com/begriffs/haskell-vim-now.git"
5-
DEFAULT_GENERATE_HOOGLE_DB="y"
5+
DEFAULT_GENERATE_HOOGLE_DB=true
6+
DEFAULT_HVN_FULL_INSTALL=true
7+
DEFAULT_DRY_RUN=false
68

79
if which tput >/dev/null 2>&1; then
810
ncolors=$(tput colors)
@@ -104,8 +106,9 @@ install() {
104106

105107
do_setup() {
106108
local HVN_DEST=$1
107-
local BASIC_ONLY=$2
109+
local FULL_INSTALL=$2
108110
local GENERATE_HOOGLE_DB=$3
111+
local DRY_RUN=$4
109112
local setup_path=${HVN_DEST}/scripts/setup.sh
110113

111114
. $setup_path || { \
@@ -117,23 +120,24 @@ do_setup() {
117120
setup_tools
118121
setup_vim $HVN_DEST
119122

120-
if test -z "$BASIC_ONLY"
123+
if [ "$FULL_INSTALL" == true ]
121124
then
122-
setup_haskell $HVN_DEST $GENERATE_HOOGLE_DB
125+
setup_haskell $HVN_DEST $GENERATE_HOOGLE_DB $DRY_RUN
123126
fi
124127

125128
setup_done $HVN_DEST
126129
}
127130

128131
main() {
129132
local REPO_PATH=$1
130-
local BASIC_ONLY=$2
133+
local FULL_INSTALL=$2
131134
local GENERATE_HOOGLE_DB=$3
135+
local DRY_RUN=$4
132136
local HVN_DEST="$(config_home)/haskell-vim-now"
133137
local HVN_DEPENDENCIES_DEST="$(config_home)/haskell-vim-now"
134138

135139
install $REPO_PATH $HVN_DEST
136-
do_setup $HVN_DEST $BASIC_ONLY $GENERATE_HOOGLE_DB
140+
do_setup $HVN_DEST $FULL_INSTALL $GENERATE_HOOGLE_DB $DRY_RUN
137141
}
138142

139143
function usage() {
@@ -146,36 +150,27 @@ function usage() {
146150
echo " Git repository to install from. The default is $DEFAULT_REPO."
147151
echo " --no-hoogle"
148152
echo " Disable Hoogle database generation. The default is $DEFAULT_GENERATE_HOOGLE_DB."
153+
echo " --dry-run"
154+
echo " Perform a dry run for the stack installs. Primarily intended for testing."
149155
exit 1
150156
}
151157

152-
# $1: envvar
153-
check_boolean_var() {
154-
local var=$(eval "echo \$$1")
155-
if test -n "$var" -a "$var" != y
156-
then
157-
>&2 echo "Error: Boolean envvar [$1] can only be empty or 'y'"
158-
exit 1
159-
fi
160-
echo "ENV: [$1=$var]"
161-
}
162-
163158
# command line args override env vars
164159
HVN_REPO=${HVN_REPO:=$DEFAULT_REPO}
165160
HVN_GENERATE_HOOGLE_DB=${HVN_GENERATE_HOOGLE_DB:=$DEFAULT_GENERATE_HOOGLE_DB}
166-
167-
check_boolean_var HVN_INSTALL_BASIC
168-
check_boolean_var HVN_GENERATE_HOOGLE_DB
161+
HVN_FULL_INSTALL=${HVN_FULL_INSTALL:=$DEFAULT_HVN_FULL_INSTALL}
162+
HVN_DRY_RUN=${$HVN_DRY_RUN:=$DEFAULT_DRY_RUN}
169163

170164
while test -n "$1"
171165
do
172166
case $1 in
173-
--basic) shift; HVN_INSTALL_BASIC=y; continue;;
167+
--basic) shift; HVN_FULL_INSTALL=false; continue;;
174168
--repo) shift; HVN_REPO=$1; shift; continue;;
175-
--no-hoogle) shift; HVN_GENERATE_HOOGLE_DB=; continue;;
169+
--no-hoogle) shift; HVN_GENERATE_HOOGLE_DB=false; continue;;
170+
--dry-run) shift; DRY_RUN=true; continue;;
176171
*) usage;;
177172
esac
178173
done
179174

180175
test -n "$HVN_REPO" || usage
181-
main $HVN_REPO $HVN_INSTALL_BASIC $HVN_GENERATE_HOOGLE_DB
176+
main $HVN_REPO $HVN_FULL_INSTALL $HVN_GENERATE_HOOGLE_DB $HVN_DRY_RUN

scripts/setup.sh

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ stack_resolver() {
2020
setup_haskell() {
2121
local HVN_DEST=$1
2222
local GENERATE_HOOGLE_DB=$2
23+
local DRY_RUN=$3
2324
local RETCODE
2425

2526
if ! check_exist stack >/dev/null ; then
@@ -64,7 +65,12 @@ setup_haskell() {
6465
[ ${RETCODE} -ne 0 ] && exit_err "Installing ghc-mod/cabal-install failed with error ${RETCODE}."
6566

6667
# Install hindent via pinned LTS to ensure we have version 5.
67-
stack --resolver lts-8.6 install hindent --install-ghc --verbosity warning ; RETCODE=$?
68+
if [ "$DRY_RUN" == false ]
69+
then
70+
stack --resolver lts-8.6 install hindent --install-ghc --verbosity warning ; RETCODE=$?
71+
else
72+
stack --resolver lts-8.6 install hindent --install-ghc --verbosity warning --dry-run ; RETCODE=$?
73+
fi
6874
[ ${RETCODE} -ne 0 ] && exit_err "Installing hindent failed with error ${RETCODE}."
6975

7076
# Create a temporary directory for helper binary dependency solving.
@@ -85,9 +91,15 @@ setup_haskell() {
8591
# Install all solved dependency versions for the helper binaries, while skipping local dependencies package and GHC.
8692
# Also skipping bogus 'invalid-cabal-flag-settings' dependency from base: https://github.com/commercialhaskell/stack/issues/2969
8793
local HELPER_BINARIES_DEPENDENCY_LIST=$(stack list-dependencies --separator - | grep -vE "^dependencies-|^ghc-[0-9]\.[0-9]\.[0-9]$|^invalid-cabal-flag-settings-|^rts-")
94+
8895
for dep in $HELPER_BINARIES_DEPENDENCY_LIST
8996
do
90-
stack install $dep ; RETCODE=$?
97+
if [ "$DRY_RUN" == false ]
98+
then
99+
stack install $dep ; RETCODE=$?
100+
else
101+
stack install $dep --dry-run ; RETCODE=$?
102+
fi
91103
[ ${RETCODE} -ne 0 ] && exit_err "Installing helper binary dependency $dep failed with error ${RETCODE}."
92104
done
93105

@@ -98,7 +110,7 @@ setup_haskell() {
98110
msg "Installing git-hscope..."
99111
cp ${HVN_DEST}/git-hscope ${STACK_BIN_PATH}
100112

101-
if test -n "$GENERATE_HOOGLE_DB"
113+
if [ "$GENERATE_HOOGLE_DB" == true ]
102114
then
103115
msg "Building Hoogle database..."
104116
${STACK_BIN_PATH}/hoogle generate

0 commit comments

Comments
 (0)