]> Sergey Matveev's repositories - public-inbox.git/commitdiff
git: hoist out description
authorEric Wong <e@80x24.org>
Tue, 4 Oct 2022 19:12:33 +0000 (19:12 +0000)
committerEric Wong <e@80x24.org>
Wed, 5 Oct 2022 20:24:43 +0000 (20:24 +0000)
We'll be using this separately, elsewhere.

lib/PublicInbox/Git.pm

index 9140caea9bfb2d9e28177c92795e06f5cc94a2ca..78b47096f63087c8ff49da51c9eff67a09929777 100644 (file)
@@ -498,6 +498,15 @@ sub modified ($) {
        (split(/ /, <$fh> // time))[0] + 0; # integerize for JSON
 }
 
+sub description {
+       my $desc = '';
+       if (open(my $fh, '<:utf8', "$_[0]->{git_dir}/description")) {
+               local $/ = "\n";
+               chomp($desc = <$fh> // '');
+       }
+       $desc eq '' ? 'Unnamed repository' : $desc;
+}
+
 # for grokmirror, which doesn't read gitweb.description
 # templates/hooks--update.sample and git-multimail in git.git
 # only match "Unnamed repository", not the full contents of
@@ -520,14 +529,8 @@ sub manifest_entry {
        chomp(my $owner = $self->qx('config', 'gitweb.owner'));
        utf8::decode($owner);
        $ent->{owner} = $owner eq '' ? undef : $owner;
-       my $desc = '';
-       if (open($fh, '<', "$git_dir/description")) {
-               local $/ = "\n";
-               chomp($desc = <$fh>);
-               utf8::decode($desc);
-       }
-       $desc = 'Unnamed repository' if $desc eq '';
-       if (defined $epoch && $desc =~ /\AUnnamed repository/) {
+       my $desc = description($self);
+       if (defined $epoch && index($desc, 'Unnamed repository') == 0) {
                $desc = "$default_desc [epoch $epoch]";
        }
        $ent->{description} = $desc;