#!/bin/sh ############################################################################# ## ## Logtalk user folder setup script ## Last updated on November 27, 2023 ## ## This file is part of Logtalk ## SPDX-FileCopyrightText: 1998-2023 Paulo Moura ## SPDX-License-Identifier: Apache-2.0 ## ## Licensed under the Apache License, Version 2.0 (the "License"); ## you may not use this file except in compliance with the License. ## You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## ############################################################################# echo echo "This script copies all the Logtalk per-user files and directories to the" echo "user home directory. The location can be set by defining the LOGTALKUSER" echo "environment variable (defaults to \"~/logtalk\" when not defined)." echo if ! [ "$LOGTALKHOME" ]; then echo "The environment variable LOGTALKHOME should be defined first!" echo "Trying default Logtalk installation directories..." if [ -d "/usr/local/share/logtalk" ]; then LOGTALKHOME=/usr/local/share/logtalk echo "Using Logtalk installation at \"/usr/local/share/logtalk\"" elif [ -d "/usr/share/logtalk" ]; then LOGTALKHOME=/usr/share/logtalk echo "Using Logtalk installation at \"/usr/share/logtalk\"" elif [ -d "/opt/local/share/logtalk" ]; then LOGTALKHOME=/opt/local/share/logtalk echo "Using Logtalk installation at \"/opt/local/share/logtalk\"" elif [ -d "/opt/share/logtalk" ]; then LOGTALKHOME=/opt/share/logtalk echo "Using Logtalk installation at \"/opt/share/logtalk\"" elif [ -d "$HOME/share/logtalk" ]; then LOGTALKHOME="$HOME/share/logtalk" echo "... using Logtalk installation found at $HOME/share/logtalk" elif [ -f "$( cd "$( dirname "$0" )" && pwd )/../core/core.pl" ]; then LOGTALKHOME="$( cd "$( dirname "$0" )" && pwd )/.." echo "... using Logtalk installation found at $( cd "$( dirname "$0" )" && pwd )/.." else echo "Unable to locate Logtalk installation directory!" >&2 echo exit 1 fi echo "After the script completion, you must set the environment variable" echo "LOGTALKHOME pointing to \"$LOGTALKHOME\"." echo elif ! [ -d "$LOGTALKHOME" ]; then echo "The environment variable LOGTALKHOME points to a non-existing directory!" >&2 echo "Its current value is: $LOGTALKHOME" >&2 echo "The variable must be set to your Logtalk installation directory!" >&2 echo exit 1 fi if ! [ "$LOGTALKUSER" ] then LOGTALKUSER="$HOME/logtalk" echo "After the script completion, you must set the environment variable" echo "LOGTALKUSER pointing to \"$LOGTALKUSER\"." echo fi if [ "$LOGTALKHOME" = "$LOGTALKUSER" ]; then echo "The environment variables LOGTALKHOME and LOGTALKUSER point" echo "to the same directory! Running this script is not necessary!" exit fi if [ -d "$LOGTALKUSER" ] then date=$(eval date \"+%Y-%m-%d-%H%M%S\") mv "$LOGTALKUSER" "$LOGTALKUSER-backup-$date" echo "Created a backup of the existing \"\$LOGTALKUSER\" directory:" echo echo " $LOGTALKUSER-backup-$date" echo echo "Creating a new \"\$LOGTALKUSER\" directory:" echo echo " $LOGTALKUSER" echo mkdir "$LOGTALKUSER" if [ -f "$LOGTALKUSER-backup-$date"/settings.lgt ] then cp "$LOGTALKUSER-backup-$date"/settings.lgt "$LOGTALKUSER"/ echo "Copied your old \"settings.lgt\" file to the new \"\$LOGTALKUSER\" directory." fi if [ -f "$LOGTALKUSER-backup-$date"/settings.logtalk ] then cp "$LOGTALKUSER-backup-$date"/settings.logtalk "$LOGTALKUSER"/ echo "Copied your old \"settings.logtalk\" file to the new \"\$LOGTALKUSER\" directory." fi echo "If you are upgrading from a previous Logtalk version, check the file" echo "\"\$LOGTALKUSER/settings-sample.lgt\" for updated settings suggestions." echo if [ -d "$LOGTALKUSER-backup-$date"/packs ] then cp -RL "$LOGTALKUSER-backup-$date"/packs "$LOGTALKUSER"/ echo "Copied your packs to the new \"\$LOGTALKUSER\" directory." fi else echo "Creating a new \"\$LOGTALKUSER\" directory:" echo echo " $LOGTALKUSER" echo mkdir "$LOGTALKUSER" fi echo "Copying Logtalk files and directories..." mkdir -p "$LOGTALKUSER"/contributions mkdir -p "$LOGTALKUSER"/docs mkdir -p "$LOGTALKUSER"/examples mkdir -p "$LOGTALKUSER"/library mkdir -p "$LOGTALKUSER"/ports mkdir -p "$LOGTALKUSER"/scratch mkdir -p "$LOGTALKUSER"/tests mkdir -p "$LOGTALKUSER"/tools cp -RL "$LOGTALKHOME"/contributions "$LOGTALKUSER"/ cp -RL "$LOGTALKHOME"/docs "$LOGTALKUSER"/ cp -RL "$LOGTALKHOME"/examples "$LOGTALKUSER"/ cp -RL "$LOGTALKHOME"/library "$LOGTALKUSER"/ cp -RL "$LOGTALKHOME"/ports "$LOGTALKUSER"/ cp -RL "$LOGTALKHOME"/scratch "$LOGTALKUSER"/ cp -RL "$LOGTALKHOME"/tests "$LOGTALKUSER"/ cp -RL "$LOGTALKHOME"/tools "$LOGTALKUSER"/ cp "$LOGTALKHOME"/loader-sample.lgt "$LOGTALKUSER"/loader-sample.lgt cp "$LOGTALKHOME"/settings-sample.lgt "$LOGTALKUSER"/settings-sample.lgt cp "$LOGTALKHOME"/tester-sample.lgt "$LOGTALKUSER"/tester-sample.lgt cp "$LOGTALKHOME"/tests-sample.lgt "$LOGTALKUSER"/tests-sample.lgt cp "$LOGTALKHOME"/VERSION.txt "$LOGTALKUSER"/ chmod -R u+w "$LOGTALKUSER" rm -f "$LOGTALKUSER"/tools/lgtdoc/xml/lgt2* ln -sf "$LOGTALKHOME"/ACKNOWLEDGMENTS.md "$LOGTALKUSER"/ACKNOWLEDGMENTS.md ln -sf "$LOGTALKHOME"/BIBLIOGRAPHY.bib "$LOGTALKUSER"/BIBLIOGRAPHY.bib ln -sf "$LOGTALKHOME"/CONTRIBUTING.md "$LOGTALKUSER"/CONTRIBUTING.md ln -sf "$LOGTALKHOME"/CUSTOMIZE.md "$LOGTALKUSER"/CUSTOMIZE.md ln -sf "$LOGTALKHOME"/INSTALL.md "$LOGTALKUSER"/INSTALL.md ln -sf "$LOGTALKHOME"/LICENSE.txt "$LOGTALKUSER"/LICENSE.txt ln -sf "$LOGTALKHOME"/QUICK_START.md "$LOGTALKUSER"/QUICK_START.md ln -sf "$LOGTALKHOME"/README.md "$LOGTALKUSER"/README.md ln -sf "$LOGTALKHOME"/RELEASE_NOTES.md "$LOGTALKUSER"/RELEASE_NOTES.md ln -sf "$LOGTALKHOME"/UPGRADING.md "$LOGTALKUSER"/UPGRADING.md ln -sf "$LOGTALKHOME"/adapters "$LOGTALKUSER"/adapters ln -sf "$LOGTALKHOME"/coding "$LOGTALKUSER"/coding ln -sf "$LOGTALKHOME"/integration "$LOGTALKUSER"/integration ln -sf "$LOGTALKHOME"/manuals "$LOGTALKUSER"/manuals ln -sf "$LOGTALKHOME"/paths "$LOGTALKUSER"/paths ln -sf "$LOGTALKHOME"/scripts "$LOGTALKUSER"/scripts ln -sf "$LOGTALKHOME"/tools/diagrams/lgt2svg.sh "$LOGTALKUSER"/tools/diagrams/lgt2svg ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/lgt2html.sh "$LOGTALKUSER"/tools/lgtdoc/xml/lgt2html ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/lgt2pdf.sh "$LOGTALKUSER"/tools/lgtdoc/xml/lgt2pdf ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/lgt2xml.sh "$LOGTALKUSER"/tools/lgtdoc/xml/lgt2xml ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/lgt2md.sh "$LOGTALKUSER"/tools/lgtdoc/xml/lgt2md ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/lgt2rst.sh "$LOGTALKUSER"/tools/lgtdoc/xml/lgt2rst ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/lgt2txt.sh "$LOGTALKUSER"/tools/lgtdoc/xml/lgt2txt ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/logtalk_entity.dtd "$LOGTALKUSER"/tools/lgtdoc/xml/logtalk_entity.dtd ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/logtalk_entity.rng "$LOGTALKUSER"/tools/lgtdoc/xml/logtalk_entity.rng ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/logtalk_entity.xsd "$LOGTALKUSER"/tools/lgtdoc/xml/logtalk_entity.xsd ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/logtalk_index.dtd "$LOGTALKUSER"/tools/lgtdoc/xml/logtalk_index.dtd ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/logtalk_index.rng "$LOGTALKUSER"/tools/lgtdoc/xml/logtalk_index.rng ln -sf "$LOGTALKHOME"/tools/lgtdoc/xml/logtalk_index.xsd "$LOGTALKUSER"/tools/lgtdoc/xml/logtalk_index.xsd ln -sf "$LOGTALKHOME"/tools/packs/lgtenv.sh "$LOGTALKUSER"/tools/packs/lgtenv echo "Finished copying Logtalk files and directories." echo echo "You may want to customize the default compiler flags and preload developer" echo "tools by renaming and editing the \"settings-sample.lgt\" file found in the" echo "\"\$LOGTALKUSER\" directory. Consult the \"\$LOGTALKUSER/CUSTOMIZE.md\" file for" echo "more information." echo