Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/configure.sh
3500 views
1
#!/usr/bin/env bash
2
set -ex
3
source configuration
4
5
# Defaults are set in configuration file, but can be overridden here.
6
# We can't put these overrides in the configuration file because it is parsed
7
# very naively on windows.
8
export DENO=${DENO_VERSION=$DENO}
9
export DENO_DOM=${DENO_DOM_VERSION=$DENO_DOM}
10
export PANDOC=${PANDOC_VERSION=$PANDOC}
11
export DARTSASS=${DART_SASS_VERSION=$DARTSASS}
12
export ESBUILD=${ESBUILD_VERSION=$ESBUILD}
13
export TYPST=${TYPST_VERSION=$TYPST}
14
15
source package/scripts/common/utils.sh
16
source package/src/set_package_paths.sh
17
18
# Selects curl or wget based on availability and https support.
19
function download() {
20
url=$1
21
destination=$2
22
23
if curl --version | grep -qF ' https '; then
24
curl --fail -L -o "$destination" "$url"
25
else
26
wget -q -O "$destination" "$url"
27
fi
28
}
29
30
QUARTO_VENDOR_BINARIES=${QUARTO_VENDOR_BINARIES=true}
31
32
DENO_BIN=${QUARTO_DENO=$QUARTO_BIN_PATH/tools/$DENO_ARCH_DIR/deno}
33
34
if [[ "${QUARTO_VENDOR_BINARIES}" = "true" ]]; then
35
DENO_VERSION_NO_V=$(echo "$DENO" | sed 's/v//')
36
if [[ (! -f "$DENO_BIN") || $("$DENO_BIN" --version | grep "$DENO_VERSION_NO_V") == "" ]]; then
37
# Ensure directory is there for Deno
38
echo "Bootstrapping Deno..."
39
40
rm -rf "$QUARTO_DIST_PATH"
41
42
## Binary Directory
43
mkdir -p "$QUARTO_BIN_PATH/tools"
44
pushd "$QUARTO_BIN_PATH/tools"
45
46
# Download Deno
47
for DENOFILE in $DENOFILES; do
48
download "$DENOURL/$DENO/$DENOFILE" "$DENOFILE"
49
unzip -o "$DENOFILE"
50
mkdir -p "$DENO_ARCH_DIR"
51
mv deno "$DENO_ARCH_DIR"
52
rm "$DENOFILE"
53
done
54
55
# we create a symlink here so that we need only one quarto-cli.code-workspace file
56
ln -s $DENO_ARCH_DIR/deno deno
57
58
# If a canary commit is provided, upgrade to that
59
if [ -n "$DENO_CANARY_COMMIT" ]; then
60
echo [Upgrading Deno to Canary]
61
./deno upgrade --canary --version "$DENO_CANARY_COMMIT"
62
fi
63
64
# write deno version file for later use
65
mkdir -p "$QUARTO_BIN_PATH/../config"
66
echo "$DENO" > "$QUARTO_BIN_PATH/../config/deno-version"
67
68
popd
69
fi
70
export DENO_BIN_PATH=$QUARTO_BIN_PATH/tools/$DENO_ARCH_DIR/deno
71
else
72
if [ -z "$DENO_BIN_PATH" ]; then
73
echo "DENO_BIN_PATH is not set. You either need to allow QUARTO_VENDOR_BINARIES or set DENO_BIN_PATH to the path of a deno binary."
74
exit 1
75
fi
76
fi
77
78
if [ "$QUARTO_DENO_DIR" == "" ]; then
79
export DENO_DIR=$QUARTO_BIN_PATH/deno_cache
80
else
81
export DENO_DIR=$QUARTO_DENO_DIR
82
fi
83
84
echo "Downloading Deno Stdlib"
85
"${QUARTO_PACKAGE_PATH}/scripts/deno_std/download.sh"
86
87
pushd "$QUARTO_PACKAGE_PATH/src/"
88
89
# Run the configure command to bootstrap installation
90
./quarto-bld configure --log-level info
91
92
popd
93
94
# download typescript dependencies
95
source package/scripts/vendoring/vendor.sh
96
97
# Run the quarto command with 'reload', which will force the import_map dependencies
98
# to be reloaded
99
if ! quarto_loc="$(type -p quarto)" || [[ -z $quarto_loc ]]; then
100
echo "Quarto symlink doesn't appear to be configured."
101
else
102
export QUARTO_DENO_EXTRA_OPTIONS="--reload"
103
quarto --version
104
fi
105
106