diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/init.sh | 29 | ||||
-rw-r--r-- | src/core/plugins | 2 | ||||
-rw-r--r-- | src/core/plugins.d/repo/commit.d.sh | 23 | ||||
-rw-r--r-- | src/core/plugins.d/repo/commit.f.sh | 24 | ||||
-rw-r--r-- | src/core/plugins.d/repo/commit.sh | 51 | ||||
-rw-r--r-- | src/core/plugins.d/repo/get.d.sh | 30 | ||||
-rw-r--r-- | src/core/plugins.d/repo/get.f.sh | 20 | ||||
-rw-r--r-- | src/core/plugins.d/repo/get.sh | 32 | ||||
-rw-r--r-- | src/core/plugins.d/repo/lib/stdio.sh | 58 | ||||
-rw-r--r-- | src/core/plugins.d/users/mkuser.sh | 24 | ||||
-rw-r--r-- | src/core/plugins.d/users/rmuser.sh | 14 | ||||
-rw-r--r-- | src/core/repo.sh | 26 |
12 files changed, 333 insertions, 0 deletions
diff --git a/src/core/init.sh b/src/core/init.sh new file mode 100644 index 0000000..dc8a750 --- /dev/null +++ b/src/core/init.sh @@ -0,0 +1,29 @@ +#!$$SHELL$$ +name='rvs init' +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>. + +repo=`rvs repo` +if [ "$old" = '' ]; 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 + diff --git a/src/core/plugins b/src/core/plugins new file mode 100644 index 0000000..18b388a --- /dev/null +++ b/src/core/plugins @@ -0,0 +1,2 @@ +repo +users diff --git a/src/core/plugins.d/repo/commit.d.sh b/src/core/plugins.d/repo/commit.d.sh new file mode 100644 index 0000000..5b2d3fd --- /dev/null +++ b/src/core/plugins.d/repo/commit.d.sh @@ -0,0 +1,23 @@ +#!$$SHELL$$ +name='rvs commit.d' +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>. + +# commit.d DIRNAME +dir="$1" + +tmp=`tempfile` +for file in $dir/*; do + hash=`rvs commit "$file"` + echo "$file:$hash" >> "$tmp" +done + +rvs commit.f "$tmp" +rm "$tmp" + diff --git a/src/core/plugins.d/repo/commit.f.sh b/src/core/plugins.d/repo/commit.f.sh new file mode 100644 index 0000000..915ba3c --- /dev/null +++ b/src/core/plugins.d/repo/commit.f.sh @@ -0,0 +1,24 @@ +#!$$SHELL$$ +name='rvs commit.f' +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>. + +source "$RVSDIR/lib/stdio" +source "$RVSDIR/lib/rvsdb" + +# commit.f FILENAME +file="$1" + +#hash=`md5sum $file | sed "s/ .*$//"` +hash=`sha1sum $file | sed "s/ .*$//"` +if [ ! -f "`rvs repo`/files/$hash" ]; then + install -m 644 -o $USER -g $USER -T "$file" "`rvs repo`/files/$hash" +fi +echo "$hash" + diff --git a/src/core/plugins.d/repo/commit.sh b/src/core/plugins.d/repo/commit.sh new file mode 100644 index 0000000..0c8cfc5 --- /dev/null +++ b/src/core/plugins.d/repo/commit.sh @@ -0,0 +1,51 @@ +#!$$SHELL$$ +name='rvs commit' +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>. + +source "$RVSDIR/lib/stdio" + +# commit FILE +if [ $# -gt 0 ]; then + file="$1" +else + file='.' +fi + +warn "$file" + +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 ]; type='D'; # door (Solaris only) +# END file type list +else error "could not identify file type of \`$file'" +fi + +ret=`rvs "commit.$type" "$file"` + +tmp=`tempfile` +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/src/core/plugins.d/repo/get.d.sh b/src/core/plugins.d/repo/get.d.sh new file mode 100644 index 0000000..2443850 --- /dev/null +++ b/src/core/plugins.d/repo/get.d.sh @@ -0,0 +1,30 @@ +#!$$SHELL$$ +name='rvs get.d' +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>. + +#source "$RVSDIR/lib/stdio" +source "$RVSDIR/lib/rvsdb" + +# get.d ID DIRNAME +id="$1" +dir="$2" + +tmp=`tempfile` +rvs get.f `logread "$db" 'hash'` "$tmp" + +mkdir "$dir" +while read line; do + hash=`echo "$line" | sed 's/^.*://'` + name=`echo "$line" | sed "s/:$hash$//"` + rvs get "$dir/$file" +done < "$tmp" + +rm "$tmp" + diff --git a/src/core/plugins.d/repo/get.f.sh b/src/core/plugins.d/repo/get.f.sh new file mode 100644 index 0000000..e631a1f --- /dev/null +++ b/src/core/plugins.d/repo/get.f.sh @@ -0,0 +1,20 @@ +#!$$SHELL$$ +name='rvs get.f' +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>. + +source "$RVSDIR/lib/stdio" +source "$RVSDIR/lib/rvsdb" + +# get.f ID FILENAME +id="$1" +file="$2" + +cp "`rvs repo`/files/$id" "$file" + diff --git a/src/core/plugins.d/repo/get.sh b/src/core/plugins.d/repo/get.sh new file mode 100644 index 0000000..4317c40 --- /dev/null +++ b/src/core/plugins.d/repo/get.sh @@ -0,0 +1,32 @@ +#!$$SHELL$$ +name='rvs get' +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>. + +source "$RVSDIR/lib/stdio" +source "$RVSDIR/lib/rvsdb" + +# get ID [FILE] +id="$1" + +if [ $# -gt 1 ]; then + file="$2" +fi + +tmp=`tempfile` +rvs get.f "$id" "$tmp" +type=`logread "$tmp" 'type'` +if [ $# -gt 1 ]; then + file="$2" +else + file=`logread "$tmp" 'name'` +fi + +rvs "get.$type" "$id" "$file" + diff --git a/src/core/plugins.d/repo/lib/stdio.sh b/src/core/plugins.d/repo/lib/stdio.sh new file mode 100644 index 0000000..e6ef31a --- /dev/null +++ b/src/core/plugins.d/repo/lib/stdio.sh @@ -0,0 +1,58 @@ +#!$$SHELL$$ +#name='rvs stdio' +#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>. + +verbose() { + if [ "$volume" == '-v' ]; then + echo $@ + fi +} + +out() { + if [ "$volume" != '-q' ]; then + echo $@ + fi +} + +warn () { + echo "$name: $1" >> /dev/stderr +} + +error() { + warn "$1" + cat << __error__ >> /dev/stderr +Usage: $name $usage + +Try \`$name --help\' for more options. +__error__ + exit 1 +} + +fatal () { + warn "$1" + 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 +} + diff --git a/src/core/plugins.d/users/mkuser.sh b/src/core/plugins.d/users/mkuser.sh new file mode 100644 index 0000000..74c8a77 --- /dev/null +++ b/src/core/plugins.d/users/mkuser.sh @@ -0,0 +1,24 @@ +#!$$SHELL$$ +name='rvs mkuser' +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>. + +read -p 'username: ' author +read -p 'give copyright to: ' owner +if [ "$owner" != 'Public Domain' ]; then + read -p 'use the license: ' license +else + license='' +fi +cat << __EOF__ > "`rvs repo`/users/$author" +author:$author +owner:$owner +license:$license +__EOF__ + diff --git a/src/core/plugins.d/users/rmuser.sh b/src/core/plugins.d/users/rmuser.sh new file mode 100644 index 0000000..82a71c5 --- /dev/null +++ b/src/core/plugins.d/users/rmuser.sh @@ -0,0 +1,14 @@ +#!$$SHELL$$ +name='rvs rmuser' +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>. + +uname=$1 +rm "`rvs repo`/users/$uname" + diff --git a/src/core/repo.sh b/src/core/repo.sh new file mode 100644 index 0000000..a94ccb8 --- /dev/null +++ b/src/core/repo.sh @@ -0,0 +1,26 @@ +#!$$SHELL$$ +name='rvs repo' +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>. + +repo='.rvs' +pwd=`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 + |