mirror of
https://github.com/rosenpass/rosenpass.git
synced 2026-02-28 14:33:37 -08:00
102 lines
2.0 KiB
Bash
Executable File
102 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
exc() {
|
|
echo >&2 "\$" "$@"
|
|
"$@"
|
|
}
|
|
|
|
run_proverif() {
|
|
local file; file="$1"; shift
|
|
local log; log="$1"; shift # intentionally unused
|
|
|
|
exc rosenpass-marzipan run-proverif "${file}" "${@}"
|
|
}
|
|
|
|
clean_warnings() {
|
|
exc rosenpass-marzipan clean-warnings
|
|
}
|
|
|
|
color_red='red'
|
|
color_green='green'
|
|
color_gray='gray'
|
|
color_clear=''
|
|
|
|
checkmark="✔"
|
|
cross="❌"
|
|
|
|
pretty_output() {
|
|
exc rosenpass-marzipan pretty-output "${@}"
|
|
}
|
|
|
|
metaverif() {
|
|
local file; file="$1"; shift
|
|
local name; name="$(echo "${file}" | grep -Po '[^/]*(?=\.mpv)')"
|
|
|
|
local cpp_prep; cpp_prep="${tmpdir}/${name}.i.pv"
|
|
local awk_prep; awk_prep="${tmpdir}/${name}.o.pv"
|
|
|
|
exc rosenpass-marzipan cpp ${file} ${cpp_prep}
|
|
exc rosenpass-marzipan awk-prep ${cpp_prep} ${awk_prep}
|
|
|
|
local log; log="${tmpdir}/${name}.log"
|
|
{
|
|
run_proverif "${awk_prep}" "$@" \
|
|
| clean_warnings \
|
|
| tee "${log}" \
|
|
| exc rosenpass-marzipan parse-result-line \
|
|
| pretty_output "${cpp_prep}"
|
|
} || {
|
|
echo "TODO: Commented out some debug output"
|
|
#if ! grep -q "^Verification summary" "${log}"; then
|
|
# echo -ne "\033[0\r"
|
|
# cat "${log}"
|
|
#fi
|
|
}
|
|
}
|
|
|
|
analyze() {
|
|
mkdir -p "${tmpdir}"
|
|
|
|
entries=()
|
|
readarray -t -O "${#entries[@]}" entries < <(
|
|
find analysis -iname '*.entry.mpv' | sort)
|
|
|
|
local entry
|
|
local procs; procs=()
|
|
for entry in "${entries[@]}"; do
|
|
echo "call metaverif"
|
|
exc metaverif "${entry}" "$@" >&2 & procs+=("$!")
|
|
done
|
|
|
|
for entry in "${procs[@]}"; do
|
|
exc wait -f "${entry}"
|
|
done
|
|
}
|
|
|
|
err_usage() {
|
|
echo >&1 "USAGE: ${0} analyze PATH"
|
|
echo >&1 "The script will cd into PATH and continue there."
|
|
exit 1
|
|
}
|
|
|
|
main() {
|
|
set -e -o pipefail
|
|
|
|
local cmd="$1"; shift || err_usage
|
|
local dir="$1"; shift || err_usage
|
|
|
|
cd -- "${dir}"
|
|
tmpdir="target/proverif"
|
|
|
|
echo "call main"
|
|
|
|
case "${cmd}" in
|
|
analyze) analyze ;;
|
|
clean_warnings) clean_warnings ;;
|
|
*) err_usage
|
|
esac
|
|
}
|
|
|
|
# Do not execute main if sourced
|
|
(return 0 2>/dev/null) || main "$@"
|