-
Notifications
You must be signed in to change notification settings - Fork 0
/
wake-up.sh
executable file
·76 lines (59 loc) · 1.41 KB
/
wake-up.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/sh
#
# Create a directory and generate template files for a given day. Ex:
#
# ./wake-up.sh 01 "Chronal Calibration"
set -e
ROOT=$(dirname "$0")
if [ $# -ne 2 -a $# -ne 3 ]; then
echo "usage $(basename "$0") DAY NAME" > /dev/stderr
exit 1
fi
DAY=$1
NAME=$2
DAYDIRNAME="Day ${DAY} - ${NAME}"
DAYDIRPATH="${ROOT}/${DAYDIRNAME}"
MAINFILENAME="Main.hs"
MAINFILEPATH="${DAYDIRPATH}/${MAINFILENAME}"
CABALFILEPATH="${ROOT}/adventofcode2018.cabal"
DOCTESTFILEPATH="${ROOT}/doctest.hs"
mkdir -p "$DAYDIRPATH"
# input.txt
: > "${DAYDIRPATH}/input.txt"
# README.md
: > "${DAYDIRPATH}/README.md"
# README.part2.md
: > "${DAYDIRPATH}/README.part2.md"
# answer.md
cat <<EOF > "${DAYDIRPATH}/answer.md"
Your puzzle answer was \`?\`.
EOF
# answer.part2.md
cat <<EOF > "${DAYDIRPATH}/answer.part2.md"
Your puzzle answer was \`?\`.
EOF
# Main file
cat <<EOF > "$MAINFILEPATH"
module Main (main) where
import Text.ParserCombinators.Parsec
import Text.Printf (printf)
-- | TODO
main :: IO ()
main = do
input <- getContents
printf "%s" input
EOF
# adventofcode2018.cabal
cat <<EOF >> "$CABALFILEPATH"
executable Day${DAY}
hs-source-dirs: "${DAYDIRNAME}"
main-is: ${MAINFILENAME}
build-depends: base,
parsec
default-language: Haskell2010
ghc-options: -Wall
EOF
# doctest.hs
cat <<EOF >> "$DOCTESTFILEPATH"
doctest ["${DAYDIRNAME}/${MAINFILENAME}"]
EOF