From 87ef9f7d6d1ca25bdef99798e819d335d16faac1 Mon Sep 17 00:00:00 2001 From: agriffis Date: Wed, 7 Jan 2004 21:27:12 +0000 Subject: [PATCH] Updated Makefile to understand building man-page from pod Removed static man-page in favor of generated man-page from pod Added copyright year updating Allow echangelog to run even when no files have changed svn path=/; revision=51 --- trunk/src/echangelog/ChangeLog | 6 + trunk/src/echangelog/Makefile | 13 +- trunk/src/echangelog/echangelog | 57 +++++- trunk/src/echangelog/echangelog.1 | 270 ---------------------------- trunk/src/echangelog/echangelog.pod | 7 +- 5 files changed, 68 insertions(+), 285 deletions(-) delete mode 100644 trunk/src/echangelog/echangelog.1 diff --git a/trunk/src/echangelog/ChangeLog b/trunk/src/echangelog/ChangeLog index 6cdc211..95a2e50 100644 --- a/trunk/src/echangelog/ChangeLog +++ b/trunk/src/echangelog/ChangeLog @@ -1,2 +1,8 @@ +07 Jan 2004 Aron Griffis + * Updated Makefile to understand building man-page from pod + * Removed static man-page in favor of generated man-page from pod + * Added copyright year updating + * Allow echangelog to run even when no files have changed + 2004-01-07 Karl Trygve Kalleberg * Added Makefile diff --git a/trunk/src/echangelog/Makefile b/trunk/src/echangelog/Makefile index da95f30..4475ac3 100644 --- a/trunk/src/echangelog/Makefile +++ b/trunk/src/echangelog/Makefile @@ -6,14 +6,17 @@ include ../../makedefs.mak -all: - echo "DUNCRAGGON (n.) The name of Charles Bronson's retirement cottage." +%.1 : %.pod + pod2man $< > $@ -dist: +.PHONY: all +all: echangelog.1 + +dist: echangelog.1 mkdir -p ../../$(distdir)/src/echangelog/ - cp {Makefile,AUTHORS,README,TODO,ChangeLog,echangelog,echangelog.1} ../../$(distdir)/src/echangelog/ + cp {Makefile,AUTHORS,README,TODO,ChangeLog,echangelog,echangelog.pod,echangelog.1} ../../$(distdir)/src/echangelog/ -install: +install: all install -m 0755 echangelog $(bindir)/ install -d $(docdir)/echangelog install -m 0644 {AUTHORS,README} $(docdir)/echangelog/ diff --git a/trunk/src/echangelog/echangelog b/trunk/src/echangelog/echangelog index a893e27..7797b47 100644 --- a/trunk/src/echangelog/echangelog +++ b/trunk/src/echangelog/echangelog @@ -18,8 +18,9 @@ use Text::Wrap; $Text::Wrap::columns = 79; $Text::Wrap::unexpand = 0; +# Global variables my @files = (); -my ($input, $entry, $user, $date, $text, $version); +my ($input, $entry, $user, $date, $text, $version, $year); my %versions = (); # Read the current ChangeLog @@ -30,10 +31,8 @@ if (-f 'ChangeLog') { } else { # No ChangeLog here, maybe we should make one... if (<*.ebuild>) { - my ($portdir) = `/usr/bin/portageq portdir 2>/dev/null`; - chomp($portdir); - open I, "<$portdir/skel.ChangeLog" - or die "Can't open $portdir/skel.ChangeLog for input: $!\n"; + open I, '<../../skel.ChangeLog' + or die "Can't open ../../skel.ChangeLog for input: $!\n"; { local $/ = undef; $text = ; } close I; my ($cwd) = getcwd(); @@ -81,14 +80,22 @@ while () { # other cvs output is ignored } close C; -die "No changed files found (did you forget to cvs add?)\n" unless @files; + +# Allow ChangeLog entries with no changed files, but give a fat warning +unless (@files) { + print "**\n\n"; + print "** NOTE: No changed files found. Normally echangelog should\n"; + print "** be run after all affected files have been added and/or\n"; + print "** modified. Did you forget to cvs add?\n"; + print "**\n\n"; +} # Get the input from the cmdline or stdin if ($ARGV[0]) { $input = "@ARGV"; } else { local $/ = undef; - print "Please type the log entry, finish with ctrl-d\n"; + print "Please type the log entry, ctrl-d to finish, ctrl-c to abort\n"; $input = <>; } die "Empty entry; aborting\n" unless $input =~ /\S/; @@ -160,11 +167,43 @@ if (0 && !defined $version) { # <--- NOTE disabled via '0' or die "Failed to insert new entry (4)\n"; } +sub update_copyright { + my ($t) = @_; + my ($year) = strftime('%Y', localtime); + $t =~ s/^# Copyright \d+(?= )/$&-$year/m or + $t =~ s/^(# Copyright \d+)-(\d+)/$1-$year/m; + return $t; +} + +# Update the copyright year in the ChangeLog +$text = update_copyright($text); + # Write the new ChangeLog open O, '>ChangeLog.new' or die "Can't open ChangeLog.new for output: $!\n"; print O $text or die "Can't write ChangeLog.new: $!\n"; close O or die "Can't close ChangeLog.new: $!\n"; -# Move things around +# Update affected ebuild copyright dates +for my $e (grep /\.ebuild$/, @files) { + my ($etext, $netext); + open E, "<$e" or warn("Can't read $e to update copyright year\n"), next; + { local $/ = undef; $etext = ; } + close E; + + # Attempt the substitution and compare + $netext = update_copyright($etext); + last if $netext eq $etext; + + # Write the new ebuild + open E, ">$e.new" or warn("Can't open $e.new\n"), next; + print E $netext and + close E or warn("Can't write $e.new\n"), next; + + # Move things around and show the diff + system "diff -u $e $e.new"; + rename "$e.new", $e or warn("Can't rename $e.new: $!\n"); +} + +# Move things around and show the ChangeLog diff system 'diff -Nu ChangeLog ChangeLog.new'; -rename 'ChangeLog.new', 'ChangeLog' or die "Can't rename: $!\n"; +rename 'ChangeLog.new', 'ChangeLog' or die "Can't rename ChangeLog.new: $!\n"; diff --git a/trunk/src/echangelog/echangelog.1 b/trunk/src/echangelog/echangelog.1 deleted file mode 100644 index 487fcfc..0000000 --- a/trunk/src/echangelog/echangelog.1 +++ /dev/null @@ -1,270 +0,0 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "ECHANGELOG 1" -.TH ECHANGELOG 1 "2003-04-27" "perl v5.8.0" "User Contributed Perl Documentation" -.SH "NAME" -echangelog \- update portage ChangeLogs -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -echangelog [ \fItext\fR ] -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -This tool provides an easy way to create or update portage ChangeLogs -in Gentoo. The tool scans the current directory, which is assumed to -be a package directory such as /usr/portage/app\-editors/vim, finds -what files have been changed or added, and inserts the appropriate -entry to ChangeLog. If \fItext\fR is not provided on the command\-line, -echangelog prompts for it. -.PP -All modifications should occur before running echangelog so that it -can include the appropriate file information in the ChangeLog entry. -For example, you should run \*(L"cvs add\*(R" on your files, otherwise -echangelog won't know those files are part of the update. -.PP -If your text would cause the ChangeLog entry to exceed 80 columns, it -will be rewrapped to keep the ChangeLog neat. If you need special -formatting in the ChangeLog, then you can either (1) run echangelog -with no text on the command\-line, and make sure that your text won't -be too wide, (2) edit the ChangeLog manually. If you prefer (2), I'd -recommend something like \*(L"echangelog blah\*(R" so that the header lines -are computed correctly, then edit and change \*(L"blah\*(R" to your preferred -text. -.SH "OPTIONS" -.IX Header "OPTIONS" -Presently echangelog is simple enough that it supplies no options. -Probably I'll add \fB\-\-help\fR and \fB\-\-version\fR in the future, but for -now it's enough to track the gentoolkit version. -.SH "EXAMPLES" -.IX Header "EXAMPLES" -To create a ChangeLog for a completely new package. The header is -parsed from skel.ebuild. -.PP -.Vb 2 -\& $ cvs add metalog-0.1.ebuild -\& cvs server: use 'cvs commit' to add this file permanently -.Ve -.PP -.Vb 13 -\& $ echangelog 'New ebuild, thanks to Harvey McGillicuddy' -\& --- ChangeLog 1969-12-31 19:00:00.000000000 -0500 -\& +++ ChangeLog.new 2003-02-23 14:04:06.000000000 -0500 -\& @@ -0,0 +1,9 @@ -\& +# ChangeLog for app-admin/metalog -\& +# Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -\& +# $Header$ -\& + -\& +*metalog-0.1 (23 Feb 2003) -\& + -\& + 23 Feb 2003; Aron Griffis metalog-0.1.ebuild : -\& + New ebuild, thanks to Harvey McGillicuddy -\& + -.Ve -.PP -To bump a revision. Note you need to \*(L"cvs add\*(R" so that echangelog -will notice the new file. -.PP -.Vb 2 -\& $ cvs add metalog-0.1-r1.ebuild -\& cvs server: use 'cvs commit' to add this file permanently -.Ve -.PP -.Vb 6 -\& $ echangelog 'Bump revision to fix bug #999' -\& --- ChangeLog 2003-02-23 14:04:06.000000000 -0500 -\& +++ ChangeLog.new 2003-02-23 14:07:48.000000000 -0500 -\& @@ -2,6 +2,11 @@ -\& # Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -\& # $Header$ -.Ve -.PP -.Vb 6 -\& +*metalog-0.1-r1 (23 Feb 2003) -\& + -\& + 23 Feb 2003; Aron Griffis metalog-0.1-r1.ebuild : -\& + Bump revision to fix bug #999 -\& + -\& *metalog-0.1 (23 Feb 2003) -.Ve -.PP -.Vb 1 -\& 23 Feb 2003; Aron Griffis metalog-0.1.ebuild : -.Ve -.PP -For a multi-line entry, omit the command-line arg. -.PP -.Vb 10 -\& $ echangelog -\& Please type the log entry, finish with ctrl-d -\& Bump revision to fix bug #999. Necessary to bump the revision because -\& the problem appears at run-time, not compile-time. This should also -\& give users the updated default configuration file. -\& --- ChangeLog 2003-02-23 14:09:12.000000000 -0500 -\& +++ ChangeLog.new 2003-02-23 14:12:43.000000000 -0500 -\& @@ -2,6 +2,13 @@ -\& # Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -\& # $Header$ -.Ve -.PP -.Vb 8 -\& +*metalog-0.1-r1 (23 Feb 2003) -\& + -\& + 23 Feb 2003; Aron Griffis metalog-0.1-r1.ebuild : -\& + Bump revision to fix bug #999. Necessary to bump the revision because -\& + the problem appears at run-time, not compile-time. This should also -\& + give users the updated default configuration file. -\& + -\& *metalog-0.1 (23 Feb 2003) -.Ve -.PP -.Vb 1 -\& 23 Feb 2003; Aron Griffis metalog-0.1.ebuild : -.Ve -.SH "ENVIRONMENT VARIABLES" -.IX Header "ENVIRONMENT VARIABLES" -.IP "\s-1ECHANGELOG_USER\s0" 4 -.IX Item "ECHANGELOG_USER" -If echangelog can't figure out your username for the entry, you should -set \s-1ECHANGELOG_USER\s0. For example, export ECHANGELOG_USER=\*(L"Aron -Griffis \*(R" -.SH "NOTES" -.IX Header "NOTES" -As of the most recent version of echangelog (when this man-page -appeared), echangelog puts all new entries at the top of the file -instead of finding the appropriate *version line within the file. -This is because that \*(L"new\*(R" ChangeLog format was never agreed upon by -the Gentoo developers. Unfortunately the existence of both formats -will undoubtedly cause much confusion. -.PP -This also means that the examples above are wrong, since I just copied -them from some old email. However they're not much wrong. ;\-) -.PP -This tool was written by Aron Griffis . Bugs -found should be filed against me at http://bugs.gentoo.org/ diff --git a/trunk/src/echangelog/echangelog.pod b/trunk/src/echangelog/echangelog.pod index 0612aa9..45c9148 100644 --- a/trunk/src/echangelog/echangelog.pod +++ b/trunk/src/echangelog/echangelog.pod @@ -1,6 +1,6 @@ =head1 NAME -echangelog - update portage ChangeLogs +echangelog - Gentoo: update portage ChangeLogs =head1 SYNOPSIS @@ -29,6 +29,11 @@ recommend something like "echangelog blah" so that the header lines are computed correctly, then edit and change "blah" to your preferred text. +In addition to updating the ChangeLog, echangelog will automatically +update the copyright year of any affected ebuilds, as well as the +ChangeLog itself. These updates are included in the diff displayed by +echangelog when it finishes its work. + =head1 OPTIONS Presently echangelog is simple enough that it supplies no options. -- 2.26.2