Skip to content

Commit 27457b8

Browse files
Add nim script
1 parent 3ef9d31 commit 27457b8

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

dexec-nim.sh

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
dexec_script_name=$(basename ${0}); pushd $(dirname ${0}) >/dev/null
6+
dexec_script_path=$(pwd -P); popd >/dev/null
7+
8+
source "${dexec_script_path}/dexec-common.sh"
9+
10+
dexec_default_build_name="$(dexec_uuid)"
11+
dexec_default_output_flag="-o:"
12+
dexec_default_output_pattern="-o\:(.+)"
13+
14+
dexec_compiler=$(eval echo -e "${1}"); shift
15+
dexec_build_name="${dexec_default_build_name}"
16+
17+
function dexec_validate() {
18+
return 0
19+
}
20+
21+
function dexec_setup() {
22+
pushd ${dexec_build_path} >/dev/null
23+
tmp_dir=/tmp/$(dexec_uuid)
24+
mkdir -p ${tmp_dir}
25+
shopt -s dotglob
26+
cp -r ${dexec_build_path}/* ${tmp_dir}
27+
shopt -u dotglob
28+
pushd ${tmp_dir} >/dev/null
29+
for source in "${dexec_sources[@]}"; do
30+
sed -Ee '/^#!.*dexec/d' "${source}" > "${source}_tmp" && mv "${source}_tmp" "${source}"
31+
done
32+
}
33+
34+
function dexec_build() {
35+
local output_arg="$(dexec_array_first_item_matching "${dexec_default_output_pattern}.+" "${dexec_build_args[@]}")"
36+
if [ ! -z "${output_arg}" ]; then
37+
dexec_build_name="$(sed -Ee s/"${dexec_default_output_pattern}"/\1/ <<<"${output_arg}")"
38+
else
39+
dexec_build_args+=("${dexec_default_output_flag}${dexec_build_name}")
40+
fi
41+
${dexec_compiler} "${dexec_build_args[@]}" "${dexec_sources[@]}"
42+
}
43+
44+
function dexec_run() {
45+
if [ -x ${dexec_build_name} ]; then
46+
./${dexec_build_name} "${dexec_args[@]}"
47+
else
48+
return 1
49+
fi
50+
}
51+
52+
function dexec_cleanup() {
53+
if [ -f "${dexec_build_name}" ]; then
54+
rm "${dexec_build_name}"
55+
fi
56+
if [ -d "nimcache" ]; then
57+
rm -rf "nimcache"
58+
fi
59+
popd >/dev/null
60+
if [ -w "${dexec_build_path}" ]; then
61+
for source in "${dexec_sources[@]}"; do
62+
cp "${source}" "${tmp_dir}"
63+
done
64+
diff -Naur "${dexec_build_path}" ${tmp_dir} | patch >/dev/null
65+
fi
66+
popd >/dev/null
67+
}
68+
69+
dexec_parse_params "${@}"
70+
dexec_validate
71+
dexec_setup
72+
dexec_build
73+
dexec_run
74+
dexec_cleanup

0 commit comments

Comments
 (0)