--- a/lib/Tools/components Thu Jan 21 18:18:19 2021 +0100
+++ b/lib/Tools/components Sun Jan 24 19:34:37 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