diff -r b95844134b92 -r fc828f64da5b lib/Tools/components --- a/lib/Tools/components Wed Jan 20 23:31:23 2021 +0100 +++ b/lib/Tools/components Thu Jan 21 16:10:43 2021 +0100 @@ -19,11 +19,15 @@ echo " -R URL component repository (default \$ISABELLE_COMPONENT_REPOSITORY)" echo " -a resolve all missing components" echo " -l list status" + echo " -u DIR update \$ISABELLE_HOME_USER/components: add directory" + echo " -x DIR update \$ISABELLE_HOME_USER/components: remove directory" echo - echo " Resolve Isabelle components via download and installation." - echo " COMPONENTS are identified via base name." + echo " Resolve Isabelle components via download and installation: given COMPONENTS" + echo " are identified via base name. Further operations manage etc/settings and" + echo " etc/components in \$ISABELLE_HOME_USER." echo echo " ISABELLE_COMPONENT_REPOSITORY=\"$ISABELLE_COMPONENT_REPOSITORY\"" + echo " ISABELLE_HOME_USER=\"$ISABELLE_HOME_USER\"" echo exit 1 } @@ -43,8 +47,9 @@ COMPONENT_REPOSITORY="$ISABELLE_COMPONENT_REPOSITORY" ALL_MISSING="" LIST_ONLY="" +declare -a UPDATE_COMPONENTS=() -while getopts "IR:al" OPT +while getopts "IR:alu:x:" OPT do case "$OPT" in I) @@ -59,6 +64,12 @@ l) LIST_ONLY="true" ;; + u) + UPDATE_COMPONENTS["${#UPDATE_COMPONENTS[@]}"]="+$OPTARG" + ;; + x) + UPDATE_COMPONENTS["${#UPDATE_COMPONENTS[@]}"]="-$OPTARG" + ;; \?) usage ;; @@ -70,7 +81,7 @@ # args -[ "$#" -eq 0 -a -z "$INIT_SETTINGS" -a -z "$ALL_MISSING" -a -z "$LIST_ONLY" ] && usage +[ "$#" -eq 0 -a -z "$INIT_SETTINGS" -a -z "$ALL_MISSING" -a -z "$LIST_ONLY" -a "${#UPDATE_COMPONENTS[@]}" -eq 0 ] && usage if [ -z "$ALL_MISSING" ]; then splitarray ":" "$@" @@ -112,6 +123,9 @@ echo echo "Missing components:" for NAME in "${MISSING_COMPONENTS[@]}"; do echo " $NAME"; done +elif [ "${#UPDATE_COMPONENTS[@]}" -ne 0 ]; then + isabelle_admin_build jars || exit $? + exec isabelle java isabelle.Components "${UPDATE_COMPONENTS[@]}" else for NAME in "${SELECTED_COMPONENTS[@]}" do