summaryrefslogtreecommitdiff
path: root/rvs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'rvs.sh')
-rw-r--r--rvs.sh107
1 files changed, 107 insertions, 0 deletions
diff --git a/rvs.sh b/rvs.sh
new file mode 100644
index 0000000..d26c94d
--- /dev/null
+++ b/rvs.sh
@@ -0,0 +1,107 @@
+#!$$SHELL$$
+name='rvs'
+ver='0.7.0'
+# Copyright (C) 2009 Luke Shumaker
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# Originally written by Luke Shumaker <lukeshu@sbcglobal.net>.
+
+RVSDIR='$$libdir$$'
+REPO=`$RVSDIR/repo`
+
+error() {
+ echo "$name: $1" >> /dev/stderr
+ exit 1
+}
+
+repo() {
+ repo='.rvs'
+ pwd=`pwd`
+ owd="$pwd"
+
+ while [ "$pwd" != "`pwd`" ] && [ ! -e "`pwd`/$repo" ]; do
+ pwd=`pwd`
+ cd ..
+ done
+
+ if [ -e "`pwd`/$repo" ]; then
+ echo "`pwd`/$repo"
+ else
+ echo "$name: no rvs repository found" >> /dev/stderr
+ exit 1
+ fi
+ cd "$owd"
+}
+
+
+init() {
+ repo=`repo`
+ if [ -z "$repo" ]; then
+ repo='.rvs'
+ install -d "$repo"
+ fi
+
+ if diff -q $RVSDIR/plugins $repo/plugins; then
+ install -T $RVSDIR/plugins $repo/plugins
+ while read plugin; do
+ if [ ! -e "$repo/$plugin" ]; then
+ install -d "$repo/$plugin"
+ if [ -e "$RVSDIR/$plugin/init" ]; then
+ $RVSDIR/$plugin/init
+ fi
+ fi
+ done < $repo/plugins
+ fi
+}
+
+# START OPTION HANDLING #
+com=$1;
+# END OPTION HANDLING #
+case "$com" in
+ '') error 'no command specified';;
+ 'repo') repo;;
+ 'init') init;;
+ *)
+ if [ -f "$RVSDIR/$com" ]; then
+ export RVSDIR
+ $RVSDIR/$@
+ done='yes'
+ else
+ while read plugin; do
+ if [ -f "$RVSDIR/$plugin/$com" ]; then
+ export RVSDIR=$RVSDIR/$plugin
+ export REPO=$REPO/$plugin
+ $RVSDIR/$@
+ done='yes'
+ break
+ fi
+ done < $REPO/plugins
+ fi
+ if [ "$done" != 'yes' ]; then
+ error "unrecognized command \`$com'"
+ fi
+ :;;
+esac
+
+#args=`getopt -n "$name" -o "${sopt}" -l "${lopt}" -- "$@"`
+#if [ $? == 0 ]; then
+# set -- $args
+# while [ $# -gt 0 ]; do
+# case "$1" in
+# -V | --version) mode='version';;
+# -h | -H | -\? | --help) mode='help';;
+#
+# -v | --verbose) volume='-v';;
+# -q | --quiet) volume='-q';;
+#
+# --) shift; break;;
+# esac
+# shift;
+# done
+#else
+# error
+#fi
+