diff options
| author | rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-07-19 14:08:30 +0000 |
|---|---|---|
| committer | rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-07-19 14:08:30 +0000 |
| commit | a1479a87757fb5e9b48f3c8bb5dd9cc247406f1a (patch) | |
| tree | 06d23a51082a398c512ed8f1e39bdac60d4dd658 /bin/am | |
| parent | 7fffea77edbe72cd66f7a55f41a3966204f9cf86 (diff) | |
BUILD : 1.7.4 (264) BUGS : N/A NOTES : Switched to autoconf - try to commit part 1
git-svn-id: svn://svn.anope.org/anope/trunk@264 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@169 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'bin/am')
| -rwxr-xr-x | bin/am | 420 |
1 files changed, 0 insertions, 420 deletions
diff --git a/bin/am b/bin/am deleted file mode 100755 index 14b6d8638..000000000 --- a/bin/am +++ /dev/null @@ -1,420 +0,0 @@ -#!/usr/bin/env perl - -# ==================================================================== -# anomgr: Anope Manager. Used to manage anope revision on SubVersion. -# -# For usage, see the usage subroutine or run the script with no -# command line arguments. -# -# $Id$ -# -# ==================================================================== -require 5.6.0; -use strict; -use Getopt::Std; -use Net::FTP; -use Cwd; - -###################################################################### -# Configuration section. -my $myver="1.0"; -my $svnrev="http://www.zero.org/anosvn.php"; -my $fhint="version.log"; - -# Default values, change or use environment variables instead. -my $copy="anope"; -my $svnuser=""; -my $svnpath="/usr/bin"; -my $svnroot="svn://zero.org/repos/$copy"; -my $editor="/usr/bin/vi"; - -# Environment variables SVNBINDIR and SVNROOT override the above -# hardcoded values. -$svnuser="$ENV{SVNUSER}" if ($ENV{SVNUSER}); -$svnpath="$ENV{SVNBINDIR}" if ($ENV{SVNBINDIR}); -$svnroot="$ENV{SVNROOT}" if ($ENV{SVNROOT}); -$editor="$ENV{EDITOR}" if ($ENV{EDITOR}); - -# Svnlook path. -my $svnlook = "$svnpath/svnlook"; - -# Svn path. -my $svn = "$svnpath/svn"; - -# wget path. Need to change to a perl module instead... -my $wget = "$svnpath/wget"; - -my ( - $rev, - $branch, - $tag, - $ftp, - $dst, - $ver_major, - $ver_minor, - $ver_patch, - $ver_build, - $ver_revision, - $ver_comment, - $svn_comment, - $cver, - $nver, - $ctrlfile, - $tmpfile, - @source, - %opt -); - -{ - my $ok = 1; - foreach my $program ($svnlook, $svn, $editor) - { - if (-e $program) - { - unless (-x $program) - { - warn "$0: required program `$program' is not executable, ", - "edit $0.\n"; - $ok = 0; - } - } - else - { - warn "$0: required program `$program' does not exist, edit $0.\n"; - $ok = 0; - } - } - exit 1 unless $ok; -} - -sub usage() -{ - # More features to add: - # --diff N:M to produce a diff between revisions - # --bugs CLI method to add bug number to the commit message - # --mesg CLI methos to add the commit message - # --create-branch to create a branch - # --create-tag to create a tag - # --switch to switch between branches/tags - print "Usage: $0 <-g | -p | -f> [-r revision | -b branch | -t tag] <destination>\n"; - print " Operations:\n"; - print " -g Get Operation\n"; - print " -p Put Operation\n"; - print " -f[tar|diff] FTP Operation, retrieve latest tar or diff\n"; - print " Selector:\n"; - print " -r revision Retrieve by revision number\n"; - print " -b branch Retrieve by branch name\n"; - print " -t tag Retrieve by tag name\n"; - print " Destination:\n"; - print " The working copy to perform the operation in or to. The script will \n"; - print " try to guess where that is, unless you provide a specific path.\n"; - exit; -} - -sub banner() { - - print "Anope Source Managemnt Utility - Version $myver\n\n"; - -} - -sub getans { - my $ans; - while (! (($ans =~ /y/) || ($ans =~ /n/))) { - print "*** Ready to continue? (y/n): "; - $ans = <STDIN>; - chomp($ans); - $ans = lc($ans); - # $ans = &getans(); - } - - # return $ans; - return ($ans eq "y") ? 1 : 0 -} - -sub find_conflict() { - - my $filename=shift; - my $retval=0; - open (IN2, "$filename") || die "Can't open $filename\n"; - while (<IN2>) { - if (/^<<<<<<</) { - $retval=1; - } - } - close(IN2); - - return $retval; -} - -sub do_ftp() { - - my $ftpc; - $ftpc = Net::FTP->new("ftp.zero.org"); - $ftpc->login("ftp","-anonymou@"); - $ftpc->cwd("/incoming"); - - if ( lc($ftp) eq "tar" ) { - print "Retrieving latest tar ball...\n"; - $ftpc->get("anope.tgz"); - } elsif ( lc($ftp) eq "diff" ) { - print "Retrieving latest patch file...\n"; - $ftpc->get("anope.diff"); - } else { - print "Unknown type $ftp, aborting...\n"; - } - $ftpc->quit(); -} - -sub do_get() { - - my $options = "" ; # Options to be passed to the svn command - my $selector = "" ; # Selector to be passed to the svn command - - if ($rev) { - $options .= "-r $rev"; - $selector = "trunk"; - $copy = $copy . "-$rev"; - } elsif ($tag) { - $selector = "tags/$tag"; - $copy = $copy . "-$tag"; - } elsif ($branch) { - $selector = "branches/$branch"; - $copy = $copy . "-$branch"; - } else { - $selector = "trunk"; - } - - if ($dst eq undef) { - my $cwd = &Cwd::cwd(); - if (-f "$cwd/$fhint") { - system("$svn update $options $cwd"); - } elsif (-f "$cwd/$copy/$fhint") { - system("$svn update $options $cwd/$copy"); - } else { - system("$svn checkout $svnroot/$selector $options $cwd/$copy"); - } - } else { - $dst = &Cwd::cwd() if ($dst eq "\.") ; - if (-f "$dst/$fhint") { - system("$svn update $options $dst"); - } else { - system("$svn checkout $svnroot/$selector $options $dst"); - } - } -} - -sub do_put() { - - if ($dst eq undef) { - my $cwd = &Cwd::cwd(); - if (-f "$cwd/$fhint") { - $dst = "$cwd"; - } elsif (-f "$cwd/$copy/$fhint") { - $dst .= "$cwd/$copy"; - } else { - print "Error: Unable to determine your working copy location.\n"; - exit; - } - } else { - $dst = &Cwd::cwd() if ($dst eq "\.") ; - if (! -f "$dst/$fhint") { - print "Error: Unable to determine your working copy location.\n"; - exit; - } - } - - # Check to see if we need to update our working copy first. - my $nupdate; - open (IN, "$svn status --show-updates --verbose $dst|"); - while (<IN>) { - if (/\*/) { - $nupdate .= "$_"; - } - } - close(IN); - - if ($nupdate ne undef) { - print "*** Warning: There are files modified in the repository that need\n"; - print "*** to be merged back to your working copy before the commit can\n"; - print "*** take place. These files are:\n"; - print $nupdate; - print "Please use: $0 -g $dst\n"; - exit; - } - - # Get a prelim diff of the changes... - my $dcount=0; - my $conflict; - # open (IN, "$svn diff $dst|"); - open (IN, "$svn status $dst|"); - while (<IN>) { - if (!/^\?/) { - $dcount++; - } - - if (/^C/) { - $_ =~ s/^C\s+//; - chomp($_); - # I don't want to use grep. But my find_conflict sub - # does not seem to work :( Too bad - if (`grep "^<<<<<<<" $_`) { - $conflict .= "$_\n" ; - } else { - system("$svn resolved $_"); - } - } - } - close(IN); - - if ($dcount == 0) { - print "*** Warning: There are no modified files to be commited. Are you\n"; - print "*** sure you are in the right working copy? Verify changes with:\n"; - print "*** $svn diff $dst\n"; - exit; - } - - if ($conflict ne undef) { - print "*** Warning: There are merge conflicts to be resolved! Please take\n"; - print "*** a look at the following files and resolve them manually:\n\n"; - print "$conflict\n"; - exit; - } - - $ctrlfile = "$dst/$fhint"; - # Grab the current revision number. Clunky way, I know! - $ver_revision=`$wget -qO - $svnrev`; - chomp($ver_revision); - - unless ($ver_revision =~ /^\d+/ and $ver_revision > 0) - { - print "*** Error: Got bogus result $ver_revision from $svnrev.\n"; - exit; - } - - $ver_revision++; - open (REV, "$ctrlfile") || die "Can't open $ctrlfile\n"; - while (<REV>) { - push (@source, $_); - $ver_major = $_ if (/VERSION_MAJOR/); - $ver_minor = $_ if (/VERSION_MINOR/); - $ver_patch = $_ if (/VERSION_PATCH/); - $ver_build = $_ if (/VERSION_BUILD/); - } - close(REV); - - my $junk; - ($junk, $ver_major) = split('"', $ver_major); - ($junk, $ver_minor) = split('"', $ver_minor); - ($junk, $ver_patch) = split('"', $ver_patch); - ($junk, $ver_build) = split('"', $ver_build); - - $cver = "$ver_major.$ver_minor.$ver_patch ($ver_build)"; - $nver = "$ver_major.$ver_minor.$ver_patch ($ver_revision)"; - - # Greet the developer - banner(); - print "*** Repository : $svnroot \n"; - print "*** Working copy : $dst \n" ; - print "*** Current ver. : $cver \n"; - print "*** Updated ver. : $nver \n"; - print "*** Files Changed: $dcount (before indent and version change)\n"; - die ("Aborting...\n") unless &getans(); - - # Need to add a clause for -c "comment" and -b "buglist" - - # Get developers input for commit - $tmpfile=".commit"; - open (OUT, ">$tmpfile") or die ("*** Error! Unable to open $tmpfile file\n"); - print OUT "# Anope commit utility. Please use this template for your commits. -# Add Bugzilla bugs separated by spaces. The note part is free form. -BUILD : $nver -BUGS : -NOTES : "; - close(OUT); - - system("$editor $tmpfile"); - - my $tmp_comment=""; - $ver_comment="#\n"; - $svn_comment=""; - open (IN, "$tmpfile") or die ("*** Error! Unable to open $tmpfile file\n"); - while (<IN>) { - if ( !/^#/) { - $tmp_comment.="$_"; - chomp($_); - $_ =~ s/\t/ /g; - $ver_comment.="# $_\n"; - $svn_comment.="$_ "; - } - } - close(IN); - - $svn_comment =~ s/\s\s+/ /g; - # Confirm the commit one last time... - print "*** Ready to commit, please verify:\n"; - print "\n$tmp_comment\n"; - - die ("Aborting...\n") unless &getans(); - - print "*** Running Indent...\n"; - system("indent -kr -nut *.c"); - system("rm -f *~"); - - print "*** Bumping the revision number...\n"; - # Re-write the control file - open(OUT, ">$ctrlfile") or die ("*** Error! Unable to open $ctrlfile ... aborting"); - foreach (@source) { - if (/^VERSION_BUILD/) { - $_ =~ s/\"\d+\"/\"$ver_revision\"/; - } elsif (/# \$Log\$/) { - $_ .= "$ver_comment"; - } - print OUT $_; - } - close(OUT); - - print "*** Starting the upload...\n\n"; - my $rval=system("$svn commit $dst --username='$svnuser' --message '$svn_comment'"); - if ( $rval ) { - print "*** Error: Unable to complete commit. Rolling back....\n\n"; - system("$svn revert $ctrlfile"); - } - -} - -{ - usage() if (! @ARGV); - - my $opt = 'hgpf:r:b:t:'; - getopts ("$opt", \%opt) or usage(); - usage() if $opt{h}; - - usage() if ($opt{g} && $opt{p}); - usage() if ($opt{g} && $opt{f}); - usage() if ($opt{p} && $opt{f}); - usage() if ($opt{r} && $opt{b}); - usage() if ($opt{r} && $opt{t}); - usage() if ($opt{b} && $opt{t}); - - $rev = $opt{r} ; - $branch = $opt{b} ; - $tag = $opt{t} ; - $ftp = $opt{f} ; - $dst = shift; - - if ($rev ne undef) { - unless ($rev =~ /^\d+/ and $rev > 0) - { - print "*** Error: Revision number '$rev' must be an integer > 0.\n"; - exit; - } - } - - do_ftp() if $opt{f}; - do_get() if $opt{g}; - do_put() if $opt{p}; - print "*** Done!\n"; - -} - - |
