summaryrefslogtreecommitdiff
path: root/rvs/plugins/repo
diff options
context:
space:
mode:
Diffstat (limited to 'rvs/plugins/repo')
-rw-r--r--rvs/plugins/repo/Makefile.in108
-rw-r--r--rvs/plugins/repo/commit.d.sh36
-rw-r--r--rvs/plugins/repo/commit.f.sh33
-rw-r--r--rvs/plugins/repo/commit.sh55
-rw-r--r--rvs/plugins/repo/get.d.sh47
-rw-r--r--rvs/plugins/repo/get.f.sh29
-rw-r--r--rvs/plugins/repo/get.sh36
-rw-r--r--rvs/plugins/repo/plugin.conf8
-rw-r--r--rvs/plugins/repo/stdio.sh68
9 files changed, 420 insertions, 0 deletions
diff --git a/rvs/plugins/repo/Makefile.in b/rvs/plugins/repo/Makefile.in
new file mode 100644
index 0000000..7078bb6
--- /dev/null
+++ b/rvs/plugins/repo/Makefile.in
@@ -0,0 +1,108 @@
+#!/usr/bin/make -f
+name=repo
+ver=0.8r61
+# Copyright (C) 2009 Luke Shumaker
+#
+# This file is part of rvs.
+#
+# rvs is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# rvs 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with rvs; see the file COPYING.
+# If not, write to the Free Software Foundation,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+export rvs ?= @name@
+# directories ######################################################
+srcdir ?= @srcdir@
+prefix ?= @prefix@
+exec_prefix ?= @exec_prefix@
+bindir ?= @bindir@
+sbindir ?= @sbindir@
+libexecdir ?= @libexecdir@
+dirs = $(srcdir) $(prefix) $(exec_prefix) $(bindir) $(sbindir) $(libexecdir)/
+#export srcdir prefix exec_prefix bindir sbindir libexecdir
+
+# programs #########################################################
+CC ?= @CC@
+RVS ?= @RVS@
+SHELL ?= @SHELL@
+RM ?= rm
+CP ?= cp
+SED ?= sed
+INSTALL ?= install
+MKDIR ?= $(INSTALL) -d #mkdir -p
+INSTALL_PROGRAM ?= $(INSTALL)
+INSTALL_DATA ?= $(INSTALL) -m 644
+TOUCH ?= touch # This file doesn't use touch
+#export RVS SHELL RM CP SED INSTALL MKDIR INSTALL_PROGRAM INSTALL_DATA TOUCH
+
+# phony targets ####################################################
+all : $(name)
+.PHONY : $(name) install uninstall clean distclean dist
+.SUFFIXES :
+
+# build ############################################################
+mysrcdir = $(srcdir)/plugins/$(name)
+myoutdir = out
+
+srcFiles = $(filter-out %/Makefile.in,$(shell find $(mysrcdir)/ -type f))
+
+shSrcFiles = $(filter %.sh,$(srcFiles))
+shOutFiles = $(patsubst $(mysrcdir)/%,$(myoutdir)/%,$(basename $(shSrcFiles)))
+
+$(name) : $(myoutdir) $(shOutFiles) $(myoutdir)/plugin.conf
+
+$(myoutdir)/plugin.conf : $(mysrcdir)/plugin.conf
+ $(INSTALL_DATA) $< $@
+
+# (un)install ######################################################
+
+install : all
+ $(RVS) install $(name)-$(ver) $(myoutdir)
+
+uninstall :
+ $(RVS) uninstall $(name)
+
+# clean ############################################################
+
+clean :
+
+distclean : clean
+ $(RM) Makefile
+ $(RM) -r out
+
+# dist #############################################################
+
+id = $(name)-$(ver)
+dist : $(id).tar.gz
+
+$(id).tar.gz : $(id)
+ tar -czf $@ $<
+
+$(id) : distclean
+ $(INSTALL) -m 777 -d $@
+ $(CP) -r $(mysrcdir)/* $@
+
+# implicit rules ###################################################
+
+b := @
+# build shell scripts
+$(myoutdir)/% : $(mysrcdir)/%.sh $(myoutdir)
+ $(INSTALL_PROGRAM) $< $@
+ $(SED) -i \
+ -e 's/$bSHELL@/$(subst /,\/,$(SHELL))/g' \
+ -e 's/$blibexecdir@/$(subst /,\/,$(libexecdir))/g' \
+ -e 's/$bID@/$(subst /,\/,$(id))/g' \
+ $@
+
+$(dirs) $(libexecdir)/$(rvs) $(myoutdir) :
+ $(MKDIR) $@
+
diff --git a/rvs/plugins/repo/commit.d.sh b/rvs/plugins/repo/commit.d.sh
new file mode 100644
index 0000000..9545b08
--- /dev/null
+++ b/rvs/plugins/repo/commit.d.sh
@@ -0,0 +1,36 @@
+#!@SHELL@
+name='rvs repo commit.d'
+ver=0.8r61
+# Copyright (C) 2009 Luke Shumaker
+#
+# This file is part of rvs.
+#
+# rvs is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# rvs 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with rvs; see the file COPYING.
+# If not, write to the Free Software Foundation,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+source "$libexecdir/@ID@/stdio"
+
+# commit.d DIRNAME
+dir="$1"
+tmp=`mktemp`
+
+cd "$dir"
+for file in *; do
+ hash=`"$RVS" commit "$file"`
+ echo "$file:$hash" >> "$tmp"
+done
+
+"$RVS" commit.f "$tmp"
+rm "$tmp"
+
diff --git a/rvs/plugins/repo/commit.f.sh b/rvs/plugins/repo/commit.f.sh
new file mode 100644
index 0000000..851c023
--- /dev/null
+++ b/rvs/plugins/repo/commit.f.sh
@@ -0,0 +1,33 @@
+#!@SHELL@
+name='rvs repo commit.f'
+ver=0.8r61
+# Copyright (C) 2009 Luke Shumaker
+#
+# This file is part of rvs.
+#
+# rvs is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# rvs 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with rvs; see the file COPYING.
+# If not, write to the Free Software Foundation,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#source "$libexecdir/@ID@/stdio"
+
+# commit.f FILENAME
+file="$1"
+
+#hash=`md5sum $file | sed "s/ .*$//"`
+hash=`sha1sum $file | sed "s/ .*$//"`
+if [ ! -f "$REPO/@ID@/$hash" ]; then
+ install -m 644 -o $USER -g $USER -T "$file" "$REPO/@ID@/$hash"
+fi
+echo "$hash"
+
diff --git a/rvs/plugins/repo/commit.sh b/rvs/plugins/repo/commit.sh
new file mode 100644
index 0000000..0baa931
--- /dev/null
+++ b/rvs/plugins/repo/commit.sh
@@ -0,0 +1,55 @@
+#!@SHELL@
+name='rvs repo commit'
+ver=0.8r61
+# Copyright (C) 2009 Luke Shumaker
+#
+# This file is part of rvs.
+#
+# rvs is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# rvs 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with rvs; see the file COPYING.
+# If not, write to the Free Software Foundation,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+source "$libexecdir/@ID@/stdio"
+
+# commit FILE
+file=${1-.}
+
+if [ ! -e $file ]; then error "file \`$file' does not exist";
+# START file type list
+elif [ -L $file ]; then type='l'; # symbolic link
+elif [ -b $file ]; then type='b'; # block (buffered) special
+elif [ -c $file ]; then type='c'; # character (unbuffered) special
+elif [ -d $file ]; then type='d'; # directory
+elif [ -p $file ]; then type='p'; # named pipe (FIFO)
+elif [ -f $file ]; then type='f'; # regular file
+elif [ -s $file ]; then type='s'; # socket
+#elif [ -D $file ]; then type='D'; # door (Solaris only)
+# END file type list
+else error "could not identify file type of \`$file'"
+fi
+
+out "+$type `pwd`/$file"
+ret=`"$RVS" commit.$type "$file"`
+
+tmp=`mktemp`
+cat << __EOF__ > "$tmp"
+name:$file
+hash:$ret
+type:$type
+author:$user
+owner:$owner
+license:$license
+__EOF__
+
+"$RVS" commit.f "$tmp"
+rm "$tmp"
+
diff --git a/rvs/plugins/repo/get.d.sh b/rvs/plugins/repo/get.d.sh
new file mode 100644
index 0000000..4f95a57
--- /dev/null
+++ b/rvs/plugins/repo/get.d.sh
@@ -0,0 +1,47 @@
+#!@SHELL@
+name='rvs repo get.d'
+ver=0.8r61
+# Copyright (C) 2009 Luke Shumaker
+#
+# This file is part of rvs.
+#
+# rvs is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# rvs 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with rvs; see the file COPYING.
+# If not, write to the Free Software Foundation,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#source "$libexecdir/@ID@/stdio"
+
+# get.d ID DIRNAME
+id="$1"
+dir="$2"
+
+tmp=`mktemp`
+"$RVS" get.f "$id" "$tmp"
+
+#install -d "$dir"
+mkdir -p "$dir"
+
+cd "$dir"
+rm -rf ./*
+while read line; do
+ # GNU bash optimized version
+ #hash=${line/#*:/}
+ #name=${line/%:${hash}/}
+ # POSIX version
+ hash=`echo "$line" | sed 's/^.*://'`
+ name=`echo "$line" | sed "s/:$hash$//"`
+ "$RVS" get "$hash" "$name"
+done < "$tmp"
+
+rm "$tmp"
+
diff --git a/rvs/plugins/repo/get.f.sh b/rvs/plugins/repo/get.f.sh
new file mode 100644
index 0000000..bb43099
--- /dev/null
+++ b/rvs/plugins/repo/get.f.sh
@@ -0,0 +1,29 @@
+#!@SHELL@
+name='rvs repo get.f'
+ver=0.8r61
+# Copyright (C) 2009 Luke Shumaker
+#
+# This file is part of rvs.
+#
+# rvs is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# rvs 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with rvs; see the file COPYING.
+# If not, write to the Free Software Foundation,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#source "$libexecdir/@ID@/stdio"
+
+# get.f ID FILENAME
+id="$1"
+file="$2"
+
+install -T "$REPO/@ID@/$id" "$file"
+
diff --git a/rvs/plugins/repo/get.sh b/rvs/plugins/repo/get.sh
new file mode 100644
index 0000000..a047e87
--- /dev/null
+++ b/rvs/plugins/repo/get.sh
@@ -0,0 +1,36 @@
+#!@SHELL@
+name='rvs repo get'
+ver=0.8r61
+# Copyright (C) 2009 Luke Shumaker
+#
+# This file is part of rvs.
+#
+# rvs is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# rvs 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with rvs; see the file COPYING.
+# If not, write to the Free Software Foundation,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+source "$libexecdir/@ID@/stdio"
+
+# get ID [FILE]
+id="$1"
+tmp=`mktemp`
+"$RVS" get.f "$id" "$tmp"
+type="`sed -n 's/^type://p' "$tmp"`"
+file="${2-`sed -n 's/^name://p' "$tmp"`}"
+hash="`sed -n 's/^hash://p' "$tmp"`"
+
+out "-$type `pwd`/$file"
+"$RVS" get.$type "$hash" "$file"
+
+rm "$tmp"
+
diff --git a/rvs/plugins/repo/plugin.conf b/rvs/plugins/repo/plugin.conf
new file mode 100644
index 0000000..6028a0f
--- /dev/null
+++ b/rvs/plugins/repo/plugin.conf
@@ -0,0 +1,8 @@
+# rvs repo plugins.conf
+# ver=0.8r61
+commit
+commit.d
+commit.f
+get
+get.d
+get.f
diff --git a/rvs/plugins/repo/stdio.sh b/rvs/plugins/repo/stdio.sh
new file mode 100644
index 0000000..d4fed0e
--- /dev/null
+++ b/rvs/plugins/repo/stdio.sh
@@ -0,0 +1,68 @@
+#!@SHELL@
+#name='rvs repo stdio'
+#ver=0.8r61
+# Copyright (C) 2009 Luke Shumaker
+#
+# This file is part of rvs.
+#
+# rvs is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2, or (at your option) any later version.
+#
+# rvs 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with rvs; see the file COPYING.
+# If not, write to the Free Software Foundation,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+verbose() {
+ if [ "$volume" == '-v' ]; then
+ echo $@ >> /dev/stderr
+ fi
+}
+
+out() {
+ if [ "$volume" != '-q' ]; then
+ echo $@ >> /dev/stderr
+ fi
+}
+
+warn () {
+ echo "$name: $1" >> /dev/stderr
+}
+
+fatal () {
+ warn "$1"
+ exit 1
+}
+
+error() {
+ warn "$1"
+ cat << __error__ >> /dev/stderr
+Usage: $name $usage
+
+Try \`$name --help\' for more options.
+__error__
+ exit 1
+}
+
+version() {
+ echo "$name $ver"
+ if [ "$volume" != '-q' ]; then
+ cat << __disclaimer__
+$name is 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>.
+__disclaimer__
+ fi
+ exit 0
+}
+