diff options
-rw-r--r-- | Makefile.in | 101 | ||||
-rwxr-xr-x | configure | 21 | ||||
-rw-r--r-- | plugins/repo/Makefile.in | 56 | ||||
-rw-r--r-- | rvs.sh | 33 |
4 files changed, 122 insertions, 89 deletions
diff --git a/Makefile.in b/Makefile.in index 7a3e131..e26131a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,5 +1,5 @@ #!/usr/bin/make -f -# rvs Makefile +name = @name@ # version 0.7.0 # Copyright (C) 2009 Luke Shumaker # This program is distributed in the hope that it will be useful, @@ -10,81 +10,86 @@ # Originally written by Luke Shumaker <lukeshu@sbcglobal.net>. -# Variables ######################################################## -RM = rm -f -CP = cp -SED = sed -INSTALL = install -MKDIR = $(INSTALL) -d #mkdir -p -INSTALL_PROGRAM = $(INSTALL) -INSTALL_DATA = $(INSTALL) -m 644 -TOUCH = touch -export RM CP SED INSTALL MKDIR INSTALL_PROGRAM INSTALL_DATA - -SHELL = @SHELL@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -rvsdir = @rvsdir@/rvs -srcdir = @srcdir@ -export SHELL rvsdir srcdir - +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 ######################################################### +RVS = @RVS@ +SHELL = @SHELL@ +RM = rm -f +CP = cp +SED = sed +INSTALL = install +MKDIR = $(INSTALL) -d #mkdir -p +INSTALL_PROGRAM = $(INSTALL) +INSTALL_DATA = $(INSTALL) -m 644 +TOUCH = touch +export RVS SHELL RM CP SED INSTALL MKDIR INSTALL_PROGRAM INSTALL_DATA TOUCH + +# plugin targets ################################################### plugins = $(patsubst $(srcdir)/plugins/%,%,\ $(shell find $(srcdir)/plugins/* -maxdepth 0 -type d)) - -# phony targets #################################################### make-plugins = $(addprefix p-,$(plugins)) install-plugins = $(addprefix install-p-,$(plugins)) remove-plugins = $(addprefix remove-p-,$(plugins)) all-plugins = $(make-plugins) $(install-plugins) $(remove-plugins) -all : rvs $(make-plugins) + +# phony targets #################################################### +all : $(rvs) $(make-plugins) #.PHONY : install uninstall clean distclean $(all-plugins) .PHONY : install uninstall clean distclean .SUFFIXES : # targets ########################################################## +b := @ +$(rvs) : $(srcdir)/rvs.sh + $(SED) \ + -e 's/$bSHELL@/$(subst /,\/,$(SHELL) )/g' \ + -e 's/$blibexecdir@/$(subst /,\/,$(libexecdir))/g' \ + -e 's/$bname@/$(subst /,\/,$(name) )/g' \ + < $< > $@ + +$(bindir)/$(rvs) : $(rvs) $(bindir) + $(INSTALL_PROGRAM) $< $@ -$(rvsdir)/plugins : - $(MKDIR) $(dir $@) +$(libexecdir)/$(rvs)/plugins : $(rvsdir) $(TOUCH) $@ # install/clean/remove ############################################# -install : $(bindir)/rvs $(rvsdir)/plugins $(install-plugins) +install : install-$(name) $(rvsdir)/plugins $(install-plugins) +install-$(name) : $(bindir)/$(rvs) + + +uninstall : + $(RM) $(prefix)/$(bindir)/rvs + $(RM) -r $(libexecdir)/$(rvs) clean : distclean : clean - $(RM) var.sed $(RM) Makefile - -uninstall : - $(RM) $(prefix)/$(bindir)/rvs - $(RM) -r $(rvsdir) + $(RM) $(rvs) # implicit rules ################################################### -# 'build' shell scripts -b := @ -% : $(srcdir)/%.sh - $(MKDIR) $(dir $@) - $(SED) -e 's/$bSHELL@/$(subst /,\/,$(SHELL) )/g' \ - -e 's/$brvsdir@/$(subst /,\/,$(rvsdir))/g' <$< > $@ - -# install -$(bindir)/% : % - $(MKDIR) $(dir $@) - $(INSTALL_PROGRAM) $< $@ +$(dirs) : + $(MKDIR) $@ -# make plugins -p-% : plugins/% plugins/%/Makefile $(srcdir)/plugins/% +# make/install/uninstall plugins +p-% : plugins/% plugins/%/Makefile $(srcdir)/plugins/% $(MAKE) -C $< -# install plugins -install-p-% : plugins/% plugins/%/Makefile $(srcdir)/plugins/% p-% +install-p-% : plugins/% plugins/%/Makefile $(srcdir)/plugins/% p-% $(MAKE) -C $< install -# uninstall plugins uninstall-p-% : plugins/% plugins/%/Makefile $(MAKE) -C $< uninstall @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash name='configure' # rvs configureation script # version 0.7.0 # Copyright (C) 2009 Luke Shumaker @@ -9,13 +9,15 @@ name='configure' # rvs configureation script # # Originally written by Luke Shumaker <lukeshu@sbcglobal.net>. - _srcdir=$(readlink -f `dirname "$0"`) + _name='rvs' + _RVS='$(bindir)/$(rvs)' _SHELL='/bin/sh' _prefix='/usr/local' _exec_prefix='$(prefix)' _bindir='$(exec_prefix)/bin' _sbindir='$(exec_prefix)/sbin' - _rvsdir='/etc' + _libexecdir='$(exec_prefix)/libexec' + _srcdir=$(readlink -f `dirname "$0"`) vars='srcdir SHELL prefix exec_prefix bindir sbindir rvsdir' @@ -58,8 +60,12 @@ for var in $vars; do var1="_$var" val=${!var1} - var=${var//':'/'\:'} - val=${val//':'/'\:'} + # GNU bash optimized version + var=${var//':'/'\:'} + val=${val//':'/'\:'} + # POSIX version + #var=`echo "$var" | sed 's@:@\\:@g'` + #val=`echo "$val" | sed 's@:@\\:@g'` echo "s:@$var@:$val:g" >> var.sed done @@ -71,11 +77,10 @@ Makefiles=`find "${_srcdir}/" -regextype posix-extended \ -regex '(.*/)?Makefile\.in' -type f` for orig in $Makefiles; do - new=${orig/%.orig/} + new=${orig/%.in/} new=${new/#$_srcdir\//} mkdir -p `dirname "$new"` sed -f var.sed < "${orig}" > "${new}" done -#rm var.sed - +rm var.sed diff --git a/plugins/repo/Makefile.in b/plugins/repo/Makefile.in index 32a07dd..8105b75 100644 --- a/plugins/repo/Makefile.in +++ b/plugins/repo/Makefile.in @@ -10,70 +10,70 @@ name = repo # Originally written by Luke Shumaker <lukeshu@sbcglobal.net>. -# Variables ######################################################## -RM ?= rm -f +export rvs ?= @name@ +# Directories ###################################################### +srcdir ?= @srcdir@ +prefix ?= @prefix@ +exec_prefix ?= @exec_prefix@ +bindir ?= @bindir@ +sbindir ?= @sbindir@ +libexecdir ?= @libexecdir@ +#export srcdir prefix exec_prefix bindir sbindir libexecdir + +# Programs ######################################################### +RVS ?= @RVS@ +SHELL ?= @SHELL@ +RM ?= rm CP ?= cp SED ?= sed -INSTALL = install +INSTALL ?= install MKDIR ?= $(INSTALL) -d #mkdir -p INSTALL_PROGRAM ?= $(INSTALL) INSTALL_DATA ?= $(INSTALL) -m 644 - -SHELL ?= @SHELL@ -rvsdir ?= @rvsdir@/rvs -srcdir ?= @srcdir@ - -libdir = $(rvsdir)/$(name) -reldir = plugins/$(name) - -mysrcdir = $(srcdir)/$(reldir) -VPATH = $(mysrcdir) +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 .SUFFIXES : -# targets ########################################################## +# main ############################################################# srcFiles = $(filter-out %/Makefile.in,$(shell find $(mysrcdir)/ -type f)) shSrcFiles = $(filter %.sh,$(srcFiles)) -shOutFiles = $(patsubst $(mysrcdir)/%,%,$(basename $(shSrcFiles))) -shExeFiles = $(patsubst %,$(libdir)/%, $(shOutFiles) ) +shOutFiles = $(patsubst $(mysrcdir)/%,out/%,$(basename $(shSrcFiles))) + +mysrcdir = $(srcdir)/plugins/$(name) +myoutdor = out $(name) : $(shOutFiles) # (un)install ###################################################### -install : $(shExeFiles) - echo $(name) >> $(rvsdir)/plugins +install : all + $(RVS) install $(name) $(myoutdir) uninstall : - $(RM) -r $(libdir) - $(SED) -i "/^$(name)$/ d" $(rvsdir)/plugins + $(RVS) uninstall $(name) # clean ############################################################ clean : - $(RM) $(shOutFiles) distclean : clean $(RM) Makefile + $(RM) -r out # implicit rules ################################################### b := @ # build shell scripts -% : $(mysrcdir)/%.sh +$(myoutdir)/% : $(mysrcdir)/%.sh $(MKDIR) $(dir $@) $(SED) 's/$bSHELL@/$(subst /,\/,$(SHELL))/g' <$< > $@ # workaround... idk why it doesn't match `lib/' -lib/% : $(mysrcdir)/lib/%.sh +$(myoutdir)/lib/% : $(mysrcdir)/lib/%.sh $(MKDIR) $(dir $@) $(SED) 's/$bSHELL@/$(subst /,\/,$(SHELL))/g' <$< > $@ -# install -$(libdir)/% : % - $(MKDIR) $(dir $@) - $(INSTALL_PROGRAM) $< $@ - @@ -1,5 +1,5 @@ #!@SHELL@ -name='rvs' +name='@name@' ver='0.7.0' # Copyright (C) 2009 Luke Shumaker # This program is distributed in the hope that it will be useful, @@ -9,7 +9,7 @@ ver='0.7.0' # # Originally written by Luke Shumaker <lukeshu@sbcglobal.net>. -RVSDIR='@rvsdir@' +RVSDIR="@libexecdir@/$name" error() { echo "$name: $1" >> /dev/stderr @@ -48,7 +48,7 @@ init() { export REPO=.rvs/$plugin echo 'foo2' if [ -e "$RVSDIR/$plugin/init" ]; then - $RVSDIR/$plugin/init + "$RVSDIR/$plugin/init" fi echo 'foo3' done < $repo/plugins @@ -57,13 +57,35 @@ init() { fi } +install() { + id=$1 + dir=${2-$id} + name=`echo $id | sed 's/-.*$//'` + if (grep "^$name-" "$RVSDIR/plugins" &> /dev/null); then + # an entry for this plugin already exists, though possibly a + # different version + sed -i "s/^$name-.*$/$id/" "$RVSDIR/plugins" + else + echo "$id" >> "$RVSDIR/plugins" + fi + cp -rp "$dir" "$RVSDIR/$id" +} + +uninstall() { + id=$1 + sed -i "/^$id$/ d" "$RVSDIR/plugins" + rm -rf "$RVSDIR/$id" +} + # START OPTION HANDLING # com=$1; # END OPTION HANDLING # case "$com" in '') error 'no command specified';; 'repo') repo; exit $?;; - 'init') init;; + 'init') init; exit $?;; + 'install') shift; install $@; exit $?;; + 'uninstall') shift; uninstall $@; exit $?;; *) if [ -f "$RVSDIR/$com" ]; then export RVSDIR @@ -72,10 +94,11 @@ case "$com" in else while read plugin; do if [ -f "$RVSDIR/$plugin/$com" ]; then + done='yes' export RVSDIR=$RVSDIR/$plugin export REPO=`repo`/$plugin $RVSDIR/$@ - done='yes' + exit $? break fi done < $REPO/plugins |