From 17effe8cd2ecfa19a386056c6cb046ca0dd828e6 Mon Sep 17 00:00:00 2001 From: Akihiro MOTOKI Date: Mon, 14 Apr 2014 07:51:44 +0900 Subject: [PATCH] admin: refactor git2upd --- admin/git2upd | 76 ++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/admin/git2upd b/admin/git2upd index 9f28f34b..16b76e97 100755 --- a/admin/git2upd +++ b/admin/git2upd @@ -22,9 +22,9 @@ sub cvfn() { my($fn) = @_; if($fn =~ m@man./([-.\w]+)\.(\d)$@){ - return "$1:$2"; + return (1, "$1:$2"); } else { - return ''; + return (0, "$fn"); } } @@ -46,6 +46,43 @@ sub getdate() } } +sub read_file_head() { + my ($fn) = @_; + my $top; + open F, "<$fn"; + $top = ; + close F; + return $top; +} + +sub get_prefix() { + my ($valid) = @_; + if (not $valid) { + return '# '; + } else { + return ''; + } +} + +sub print_entry() { + # NOTE: $mode should be either of 'A' or 'U'. + my ($mode, $fn, $top) = @_; + my ($valid, $cvfn) = &cvfn($fn); + my $prefix = &get_prefix($valid); + if($top =~ /^.so ([-\w]+)/i){ + print $prefix . 'L' . ' ' . &cvfn($fn) . ' ' . &cvfn($top) . "\n"; + } else { + print $prefix . $mode . ' ' . &cvfn($fn) . " " . &getdate($fn) . "\n"; + } +} + +sub print_removed_entry() { + my ($fn) = @_; + my ($valid, $cvfn) = &cvfn($fn); + my $prefix = &get_prefix($valid); + print $prefix . 'R ' . $cvfn . "\n"; +} + $state = "start"; while(<>){ @@ -57,41 +94,22 @@ while(<>){ next if $state ne "target"; s/^#[ \t]*//; - #print "$_\n"; my($mode, $fn) = split(/: +/); if($mode eq 'new file'){ - open F, "<$fn"; - $top = ; - close F; - if($top =~ /^.so ([-\w]+)/i){ - print 'L ' . &cvfn($fn) . ' ' . &cvfn($top) . "\n"; - } else { - print 'A ' . &cvfn($fn) . " " . &getdate($fn) . "\n"; - } + $top = &read_file_head($fn); + &print_entry('A', $fn, $top); } if($mode eq 'modified'){ - open F, "<$fn"; - $top = ; - close F; - if($top =~ /^.so ([-\w]+)/i){ - print 'L ' . &cvfn($fn) . ' ' . &cvfn($top) . "\n"; - } else { - print 'U ' . &cvfn($fn) . " " . &getdate($fn) . "\n"; - } + $top = &read_file_head($fn); + &print_entry('U', $fn, $top); } if($mode eq 'deleted'){ - print 'R ' . &cvfn($fn) . "\n"; + &print_removed_entry($fn); } if($mode eq 'renamed'){ my ($fn_old, $fn_new) = split(' -> ', $fn); - open F, "<$fn_new"; - $top = ; - close F; - if($top =~ /^.so ([-\w]+)/i){ - print 'L ' . &cvfn($fn_new) . ' ' . &cvfn($top) . "\n"; - } else { - print 'A ' . &cvfn($fn_new) . " " . &getdate($fn_new) . "\n"; - } - print 'R ' . &cvfn($fn_old) . "\n"; + $top = &read_file_head($fn_new); + &print_entry('A', $fn_new, $top); + &print_removed_entry($fn_old); } } -- 2.11.0