Because I constantly work with package with either a Build.PL or a Makefile.PL and I'm always typing the wrong command, I have the following shell script named 'rebuild':
#!/usr/local/bin/bash if [ -f Build.PL ]; then makeprog=Build makecommand=./Build elif [ -f Makefile.PL ]; then makeprog=Makefile makecommand=make else echo Nothing to rebuild! exit 1 fi if [ -f $makeprog ]; then $makecommand realclean fi perl $makeprog.PL && $makecommand && $makecommand test if [ "$1" = dist ]; then $makecommand dist fi
Note: this is one of the hacks I contributed to Perl Hacks. If you like it, you'll find other items of interest in the book.
In a similar vein, I find that work uses CVS and I use Subversion at home, so I'm always mistyping the command. Hence my writing the following shell script, following a similar theme:
#!/usr/local/bin/bash if [ -d CVS ]; then prog=cvs elif [ -d .svn ]; then prog=svn else echo Cannot determine source control! exit 1 fi case "$1" in "") $prog up ;; # no arguments * ) $prog up $* ;; # Pass 'em straight through esac
Perhaps I should go ahead and start on a proper compatibility layer. Nah, I have too much work to do with TAPx::Parser. I assume someone has already written something like this?
Re:If you want to be /really/ useful
Ovid on 2007-01-18T15:13:18
I keep thinking I should check out SVK since so many people I respect say it's so wonderful, but given that I no nothing about it other than how to spell it, it's been pretty low on my list of Things To Do
:) Re:If you want to be /really/ useful
Adrian on 2007-01-18T15:24:39
The thing I like about it is that I can do:
svk mirror $WORK_REPO/project/foo/trunk//foo/trunk
svk cp//foo/trunk //foo/local -m 'a local branch for local folk'
svk sync -a
svk co//foo/local foo
# unplug network & leave work
# work away offline and unnetworked, committing things in my
# local foo repo to my hearts content
# go back to work and plugin network
# to merge in changes other folk might have done while
# I was away
svk pull
# to push my changes back to the main repository
svk push
It just makes offline working so much easier for me. Plus I have a stack of useful things like the subversion book, perl6, prototype, the mod_perl docs, etc. mirrored to my local machine so I have a copy wherever my laptop and I may be.
Re:See cvn on CPAN
melo on 2007-01-18T16:02:27
hmmms.. searching cvn on http://search.cpan.org/: 0 results.
Google gives: http://search.cpan.org/user/rclamp/cvn-0.04/cvn
Strange...
In your case statement, do you really intend to pass the 'up' in the second case?
Also, you probably want to do this:
$prog "$@"
Rather than this:
$prog $*
The difference being that "$@" does the right thing with quoted arguments containing spaces (eg: -m "commit message here").