commit ab24f83a2d734a7f7db9eb10ea9134ad0f5341a1
parent 0a29fb548350c165611106b3a4a4e0f3a4672627
Author: Eli Barzilay <eli@barzilay.org>
Date: Tue, 25 May 2010 09:58:01 -0400
Deal with a "~/" prefix.
A few additional improvements to the script.
original commit: 49949a8421dc65007d600f9f8acb3969453920f8
Diffstat:
1 file changed, 38 insertions(+), 39 deletions(-)
diff --git a/collects/meta/build/unix-installer/plt-installer-header b/collects/meta/build/unix-installer/plt-installer-header
@@ -61,7 +61,7 @@ lookfor dirname
_POSIX2_VERSION=199209
export _POSIX2_VERSION
-origpwd="`pwd`"
+origwd="`pwd`"
echo "This program will extract and install $DISTNAME."
echo ""
@@ -88,10 +88,10 @@ while test "$unixstyle" = "x"; do
echon "Enter yes/no (default: no) > "
read unixstyle
case "$unixstyle" in
- [yY]* ) unixstyle="yes" ;;
- [nN]* ) unixstyle="no" ;;
- "" ) unixstyle="no" ;;
- * ) unixstyle="x" ;;
+ [yY]* ) unixstyle="Y" ;;
+ [nN]* ) unixstyle="N" ;;
+ "" ) unixstyle="N" ;;
+ * ) unixstyle="x" ;;
esac
done
@@ -99,7 +99,7 @@ done
## Where do you want it?
echo ""
-if test "$unixstyle" = "yes"; then
+if test "$unixstyle" = "Y"; then
echo "Where do you want to base your installation of $DISTNAME?"
echo " (Use an existing directory. If you've done such an installation in"
echo " the past, either use the same place, or manually run"
@@ -111,9 +111,9 @@ else
fi
echo " 1 - /usr/$TARGET1 [default]"
echo " 2 - /usr/local/$TARGET1"
-echo " 3 - \$HOME/$TARGET1 ($HOME/$TARGET1)"
+echo " 3 - ~/$TARGET1 ($HOME/$TARGET1)"
echo " 4 - ./$TARGET1 (here)"
-if test "$unixstyle" = "yes"; then
+if test "$unixstyle" = "Y"; then
echo " Or enter a different directory prefix to install in."
else
echo " Or enter a different \"racket\" directory to install in."
@@ -121,27 +121,26 @@ fi
echon "> "
read where
case "$where" in
- "" | "1" ) where="/usr" ;;
- "2" ) where="/usr/local" ;;
- "3" ) where="$HOME" ;;
- "4" | "." ) where="`pwd`" ;;
- "/"* )
- if test "$unixstyle" = "no"; then
- TARGET="`\"$basename\" \"$where\"`"
- where="`\"$dirname\" \"$where\"`"
- fi
- ;;
- * )
- if test "$unixstyle" = "no"; then
- TARGET="`\"$basename\" \"$where\"`"
- where="`\"$dirname\" \"$where\"`"
- fi
- if test -d "$where"; then cd "$where"; where="`pwd`"; cd "$origpwd"
- else where="`pwd`/$where"; fi
- ;;
+ "~/"* ) where="$HOME/${where#\~/}" ;;
+ "~"* ) failwith "cannot use '~user' paths" ;;
+esac
+case "$unixstyle$where" in
+ ? | ?1 ) where="/usr" ;;
+ ?2 ) where="/usr/local" ;;
+ ?3 ) where="$HOME" ;;
+ ?4 | ?. ) where="`pwd`" ;;
+ N/* ) TARGET="`\"$basename\" \"$where\"`"
+ where="`\"$dirname\" \"$where\"`" ;;
+ Y/* ) ;;
+ N* ) TARGET="`\"$basename\" \"$where\"`"
+ where="`\"$dirname\" \"$where\"`"
+ if test -d "$where"; then cd "$where"; where="`pwd`"; cd "$origwd"
+ else where="`pwd`/$where"; fi ;;
+ Y* ) if test -d "$where"; then cd "$where"; where="`pwd`"; cd "$origwd"
+ else where="`pwd`/$where"; fi ;;
esac
-if test "$unixstyle" = "no"; then
+if test "$unixstyle" = "N"; then
# can happen when choosing the root
if test "$TARGET" = "/"; then
failwith "refusing to remove your root"
@@ -195,11 +194,11 @@ dir_createable() {
}
show_dir_var() {
- if test -f "$2"; then dir_status="(error: not a directory!)"; err="yes"
+ if test -f "$2"; then dir_status="(error: not a directory!)"; err="Y"
elif test ! -d "$2"; then
if dir_createable "$2"; then dir_status="(will be created)"
- else dir_status="(error: not writable!)"; err="yes"; fi
- elif test ! -w "$2"; then dir_status="(error: not writable!)"; err="yes"
+ else dir_status="(error: not writable!)"; err="Y"; fi
+ elif test ! -w "$2"; then dir_status="(error: not writable!)"; err="Y"
else dir_status="(exists)"
fi
echo " $1 $2 $dir_status"
@@ -213,14 +212,14 @@ read_dir() {
esac
}
-if test "$unixstyle" = "yes"; then
+if test "$unixstyle" = "Y"; then
set_prefix "$where"
# loop for possible changes
- done="no"
- while test ! "$done" = "yes"; do
+ done="N"
+ while test ! "$done" = "Y"; do
echo ""
echo "Target Directories:"
- err="no"
+ err="N"
show_dir_var "[e] Executables " "$bindir"
show_dir_var "[s] Scheme Code " "$collectsdir"
show_dir_var "[d] Core Docs " "$docdir"
@@ -232,7 +231,7 @@ if test "$unixstyle" = "yes"; then
echo " (C sources are not kept)"
# show_dir_var "[r] Source Tree " "$srcdir"
fi
- if test "$err" = "yes"; then echo "*** Errors in some paths ***"; fi
+ if test "$err" = "Y"; then echo "*** Errors in some paths ***"; fi
echo "Enter a new prefix, a letter to change an entry, enter to continue"
echon "> "
read change_what
@@ -250,11 +249,11 @@ if test "$unixstyle" = "yes"; then
# echo "Invalid response"
# fi ;;
"/"* ) set_prefix "$change_what" ;;
- "" ) done="yes" ;;
+ "" ) done="Y" ;;
* ) echo "Invalid response" ;;
esac
done
- if test "$err" = "yes"; then failwith "errors in some paths"; fi
+ if test "$err" = "Y"; then failwith "errors in some paths"; fi
fi
###############################################################################
@@ -319,7 +318,7 @@ if test -d "bin"; then
* ) sysdir="" ;;
esac
else
- cd "$origpwd"
+ cd "$origwd"
echo ""
echo "If you want to install new system links within the bin, lib, include,"
echo " man, and doc subdirectories of a common directory prefix (for"
@@ -478,7 +477,7 @@ cd "$where"
###############################################################################
## Done
-if test "$unixstyle" = "yes"; then unixstyle_install; else wholedir_install; fi
+if test "$unixstyle" = "Y"; then unixstyle_install; else wholedir_install; fi
echo ""
echo "All done."