diff --git a/bin/gencode b/bin/gencode index b598ea8973..434417a396 100755 --- a/bin/gencode +++ b/bin/gencode @@ -16,7 +16,9 @@ if [[ -n $check ]]; then bin/gencode_docs_examples check fi -venv/bin/pip3 freeze > $tmpfile +venv_pip3=$(bin/which_venv_pip3) + +$venv_pip3 freeze > $tmpfile if ! diff etc/requirements.txt $tmpfile; then echo etc/requirements.txt differences found echo please run bin/setup_base diff --git a/bin/presubmit b/bin/presubmit new file mode 100755 index 0000000000..e8315b6a00 --- /dev/null +++ b/bin/presubmit @@ -0,0 +1,77 @@ +#!/bin/bash -e + +function banner() { + echo + echo + echo =========================== + echo "$*" + echo =========================== +} + +function needs_covg_update() { + local project="$1" + local output=$(find "${project}/src" -name "*.java" -newer "${project}/build/reports/jacoco/test/jacocoTestReport.xml") + test -n "${output}" # 0=needs, 1=does not need +} + +function needs_gencode_update() { + bin/gencode check +} + +function needs_gencode_seq_update() { + return 0 # needs +} + +function reset_needs() { + needs="0" +} + +function add_needs() { + needs=$["${needs}"+1] +} + +function genscript() { + echo running: "$@" + local rc="$?" + "$@" + echo exit status: $rc + return $rc +} + +# +# Main +# + +ROOT_DIR=$(realpath $(dirname $0)/..) +cd $ROOT_DIR + +# Generate code coverage +banner "Code Coverage" +reset_needs +for project in pubber validator; do + needs_covg_update "${project}" && add_needs +done + +if [[ ${needs} -gt 0 ]]; then + genscript $ROOT_DIR/bin/gencovg +fi + +# Generate code from schemas +banner "Gencode from schemas" +reset_needs +needs_gencode_update && add_needs + +if [[ ${needs} -gt 0 ]]; then + genscript $ROOT_DIR/bin/gencode +fi + +# Generate code for sequencer.md +banner "Gencode for sequencer.md" +reset_needs +needs_gencode_seq_update && add_needs + +if [[ ${needs} -gt 0 ]]; then + genscript $ROOT_DIR/bin/gencode_seq +fi + +# Done diff --git a/bin/setup_base b/bin/setup_base index a89ad3fa3c..acb50f8f79 100755 --- a/bin/setup_base +++ b/bin/setup_base @@ -5,4 +5,5 @@ sudo apt-get install -y hxtools moreutils expect mosquitto mosquitto-clients python3 --version python3 -m venv venv -venv/bin/pip3 install -r etc/requirements.txt +venv_pip3=$($(dirname $0)/which_venv_pip3) +${venv_pip3} install -r etc/requirements.txt diff --git a/bin/which_venv_pip3 b/bin/which_venv_pip3 new file mode 100755 index 0000000000..3a37691350 --- /dev/null +++ b/bin/which_venv_pip3 @@ -0,0 +1,10 @@ +#!/bin/bash -e +for f in venv/bin/pip3 $HOME/venv/bin/pip3; do + if [[ -x "$f" ]]; then + echo "$f" + exit 0 + fi +done + +>&2 echo Cannot find venv +false