From 2bc56a5316345629e4ff451f0640230bf247f976 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 26 Jun 2015 00:16:31 -0600 Subject: rvs-0.5.10.tar.gz --- etc/abomination/modules/rvs/commit | 57 ++++++++++++++++++++++++ etc/abomination/modules/rvs/commit.d | 29 ++++++++++++ etc/abomination/modules/rvs/commit.f | 25 +++++++++++ etc/abomination/modules/rvs/get | 34 ++++++++++++++ etc/abomination/modules/rvs/get.d | 32 ++++++++++++++ etc/abomination/modules/rvs/get.f | 22 ++++++++++ etc/abomination/modules/rvs/init | 18 ++++++++ etc/abomination/modules/rvs/lib/rvsdb | 83 +++++++++++++++++++++++++++++++++++ etc/abomination/modules/rvs/lib/stdio | 57 ++++++++++++++++++++++++ usr/bin/rvs | 50 +++++++++++++++++++++ 10 files changed, 407 insertions(+) create mode 100755 etc/abomination/modules/rvs/commit create mode 100755 etc/abomination/modules/rvs/commit.d create mode 100755 etc/abomination/modules/rvs/commit.f create mode 100755 etc/abomination/modules/rvs/get create mode 100755 etc/abomination/modules/rvs/get.d create mode 100755 etc/abomination/modules/rvs/get.f create mode 100755 etc/abomination/modules/rvs/init create mode 100755 etc/abomination/modules/rvs/lib/rvsdb create mode 100755 etc/abomination/modules/rvs/lib/stdio create mode 100755 usr/bin/rvs diff --git a/etc/abomination/modules/rvs/commit b/etc/abomination/modules/rvs/commit new file mode 100755 index 0000000..6ff39a0 --- /dev/null +++ b/etc/abomination/modules/rvs/commit @@ -0,0 +1,57 @@ +#!/bin/bash +# abomination module:rvs:commit +name='rvs commit' +ver='0.5.10' +usage='[OPTIONS] [FILE]' +# 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 . + +source "`rvs -d`/lib/stdio" +source "`rvs -d`/lib/rvsdb" + +# commit FILE +if [ $# -gt 0 ]; then + file="$1" +else + file='.' +fi + +if [ ! -e $file]; then error "file \`$file' does not exist"; +# START file type list +#elif [ -b $file ]; type='b'; # block (buffered) special +#elif [ -c $file ]; type='c'; # character (unbuffered) special +elif [ -d $file ]; type='d'; # directory +#elif [ -p $file ]; type='p'; # named pipe (FIFO) +elif [ -f $file ]; type='f'; # regular file +#elif [ -l $file ]; type='l'; # symbolic link +#elif [ -s $file ]; type='s'; # socket +#elif [ -D $file ]; type='D'; # door (Solaris only) +# END file type list +fi + +ret=`rvs "commit.$type" "$file"` + +tmp=`tempfile` +loginit "$tmp" +logwrite "$tmp" 'name' "$file" +logwrite "$tmp" 'hash' "$ret" +logwrite "$tmp" 'type' "$type" +logwrite "$tmp" 'author' "$user" +logwrite "$tmp" 'owner' "$owner" +logwrite "$tmp" 'owner' "$license" +#parents=`logfind "$repo/co" "$file"` the checkout log is getting an overhaul +#logwrite "$tmp" 'parents' "$parents" +#case "$type" in +# f) +# #logwrite "$tmp" 'f.type' "$" +# :;; +#esac + +rvs commit.f "$tmp" +rm "$tmp" + diff --git a/etc/abomination/modules/rvs/commit.d b/etc/abomination/modules/rvs/commit.d new file mode 100755 index 0000000..91a75c4 --- /dev/null +++ b/etc/abomination/modules/rvs/commit.d @@ -0,0 +1,29 @@ +#!/bin/bash +# abomination module:rvs:commit:d +name='rvs commit.d' +ver='0.5.10' +usage='[OPTIONS] DIRECTORY' +# 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 . + +source "`rvs -d`/lib/stdio" +source "`rvs -d`/lib/rvsdb" + +# commit.d DIRNAME +dir="$1" + +tmp=`tempfile` +loginit "$tmp" +for file in $dir; do + hash=`commit "$dir/$file"` + echo "$file:$hash" >> "$tmp" +done + +rvs commit.f "$tmp" +rm "$tmp" + diff --git a/etc/abomination/modules/rvs/commit.f b/etc/abomination/modules/rvs/commit.f new file mode 100755 index 0000000..78c5d59 --- /dev/null +++ b/etc/abomination/modules/rvs/commit.f @@ -0,0 +1,25 @@ +#!/bin/bash +# abomination module:rvs:commit:f +name='rvs commit.f' +ver='0.5.10' +usage='[OPTIONS] FILE' +# 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 . + +source "`rvs -d`/lib/stdio" +source "`rvs -d`/lib/rvsdb" + +# commit.f FILENAME +file="$1" + +hash=`getid $file` +if [ ! -f "$repo/files/$hash" ]; then + cp "$file" "$repo/files/$hash" +fi +echo "$hash" + diff --git a/etc/abomination/modules/rvs/get b/etc/abomination/modules/rvs/get new file mode 100755 index 0000000..dce3ac7 --- /dev/null +++ b/etc/abomination/modules/rvs/get @@ -0,0 +1,34 @@ +#!/bin/bash +# abomination module:rvs:get +name='rvs commit' +ver='0.5.10' +usage='[OPTIONS] ID [FILENAME]' +# 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 . + +source "`rvs -d`/lib/stdio" +source "`rvs -d`/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/etc/abomination/modules/rvs/get.d b/etc/abomination/modules/rvs/get.d new file mode 100755 index 0000000..68d6aaa --- /dev/null +++ b/etc/abomination/modules/rvs/get.d @@ -0,0 +1,32 @@ +#!/bin/bash +# abomination module:rvs:get:d +name='rvs get.d' +ver='0.5.10' +usage='[OPTIONS] ID FILENAME' +# 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 . + +source "`rvs -d`/lib/stdio" +source "`rvs -d`/lib/rvsdb" + +# get.d ID DIRNAME +id="$1" +dir="$2" + +tmp=`tempfile` +rvs get.f `logread "$db" 'hash'` "$tmp" + +mkdir "$dir" +for file in `cat "$tmp"`; do + hash=`echo "$file" | sed 's/^.*://'` + name=`echo "$file" | sed "s/:$hash$//"` + rvs get "$dir/$file" +done + +rm "$tmp" + diff --git a/etc/abomination/modules/rvs/get.f b/etc/abomination/modules/rvs/get.f new file mode 100755 index 0000000..a0db378 --- /dev/null +++ b/etc/abomination/modules/rvs/get.f @@ -0,0 +1,22 @@ +#!/bin/bash +# abomination module:rvs:get:f +name='rvs get.f' +ver='0.5.10' +usage='[OPTIONS] ID FILENAME' +# 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 . + +source "`rvs -d`/lib/stdio" +source "`rvs -d`/lib/rvsdb" + +# get.f ID FILENAME +id="$1" +file="$2" + +cp "$repo/files/$id" "$file" + diff --git a/etc/abomination/modules/rvs/init b/etc/abomination/modules/rvs/init new file mode 100755 index 0000000..ae778af --- /dev/null +++ b/etc/abomination/modules/rvs/init @@ -0,0 +1,18 @@ +#!/bin/bash +# abomination rvs init +name='rvs init' +ver='0.5.10' +usage='[OPTIONS]' +# 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 . + +source "`rvs -d`/lib/stdio" +source "`rvs -d`/lib/rvsdb" + +mkdir -p "$repo/{files/tmp}" + diff --git a/etc/abomination/modules/rvs/lib/rvsdb b/etc/abomination/modules/rvs/lib/rvsdb new file mode 100755 index 0000000..9763042 --- /dev/null +++ b/etc/abomination/modules/rvs/lib/rvsdb @@ -0,0 +1,83 @@ +#!/bin/bash +# abomination module:rvs:lib:rvsdb +#name='rvs db' +#ver='0.5.10' +logver='0.5.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 . + +source "`rvs -d`/lib/stdio" +#source "`rvs -d`/lib/rvsdb" + +repo='.rvs' + +# getid file +function getid { + #md5sum $file | sed "s/ .*$//" + sha1sum $file | sed "s/ .*$//" +} + +# loginit LOG +function loginit { + log="$1" + echo "#!rvsdb $logver" > "$log"; +} + +# lograw LOG +function lograw { + log="$1" + sed '1s/#!rvsdb .*//' "$log" +} + +# _find LOG FIELD VAL +function _find { + log="$1" + field="$2" + val="$3" + lograw $log | \ + cut -d : -f field | \ + sed -n "/^$val$/=" | \ + tr "\n" , | \ + sed 's/,$//' +} + +# logread LOG VAR +function logread { + log="$1" + var="$2" + lograw "$log" | sed -n "s/^$var://p" + #lograw "$log" | sed -n `_find "$log" '1' "$var"`p | cut -d : -f 2- +} + +# logwrite LOG VAR VAL +function logwrite { + log="$1" + var="$2" + val="$3" + + #lines=`_find "$log" '1' "$var"` + #if [ "$lines" = '' ]; then + if [ `lograw "$log" | grep "^$var:"` = '' ]; then + # no exiswhereting occurances + echo "$var:$val" >> "$log" + else + # found others + sed -i "^s/$var:.*/$var:$val/" "$log" + #lograw "$log" | ?????? + fi +} + +# logfind LOG VAL +function logfind { + log="$1" + val="$2" + # make a comma-delimeted list of the lines with our values + lines=`_find "$log" '2-' "$val"` + lograw "$log" | sed -n ${lines}p | cut -d : -f 1 +} + diff --git a/etc/abomination/modules/rvs/lib/stdio b/etc/abomination/modules/rvs/lib/stdio new file mode 100755 index 0000000..8e11b72 --- /dev/null +++ b/etc/abomination/modules/rvs/lib/stdio @@ -0,0 +1,57 @@ +#!/bin/bash +# abomination module:rvs:lib:stdio +#name='rvs stdio' +#ver='0.5.9' +#usage='' +# 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 . + +#source "$RVSDIR/lib/stdio" +#source "$RVSDIR/lib/rvsdb" + +sopt='VhH?vq' +lopt='version,verbose,quiet,help' + +function verbose { + if [ "$volume" == '-v' ]; then + echo $@ + fi +} + +function out { + if [ "$volume" != '-q' ]; then + echo $@ + fi +} + +function 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 . +__disclaimer__ + fi + exit 0 +} + +function error { + cat << __error__ +$name: $1 +Usage: $name $usage + +Try $name \`--help' for more options. +__error__ + exit 1 +} + diff --git a/usr/bin/rvs b/usr/bin/rvs new file mode 100755 index 0000000..f8f31c6 --- /dev/null +++ b/usr/bin/rvs @@ -0,0 +1,50 @@ +#!/bin/bash +# abomination module:rvs +name='rvs' +ver='0.5.10' +usage='COMMAND [OPTIONS]' +# 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 . + +RVSDIR='/etc/abomination/modules/rvs' +source "$RVSDIR/lib/stdio" +source "$RVSDIR/lib/rvsdb" + +com=$1; +case "$com" in + -d) echo "$RVSDIR";; + '') error 'please specify a command';; + *) + if [ -f "$RVSDIR/$com" ]; then + export TMPDIR="$repo/tmp" + $RVSDIR/$@ + else + 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 + -- cgit v1.1-4-g5e80