about summary refs log tree commit homepage
path: root/lib/PublicInbox/Repo.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Repo.pm')
-rw-r--r--lib/PublicInbox/Repo.pm32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/PublicInbox/Repo.pm b/lib/PublicInbox/Repo.pm
index 812b1071..e53d6975 100644
--- a/lib/PublicInbox/Repo.pm
+++ b/lib/PublicInbox/Repo.pm
@@ -6,10 +6,42 @@
 package PublicInbox::Repo;
 use strict;
 use warnings;
+use PublicInbox::Config;
 
 sub new {
         my ($class, $opts) = @_;
         bless $opts, $class;
 }
 
+sub description {
+        my ($self) = @_;
+        my $desc = $self->{description};
+        return $desc if defined $desc;
+        $desc = PublicInbox::Config::try_cat("$self->{path}/description");
+        local $/ = "\n";
+        chomp $desc;
+        $desc =~ s/\s+/ /smg;
+        $desc = '($GIT_DIR/description missing)' if $desc eq '';
+        $self->{description} = $desc;
+}
+
+sub desc_html {
+        my ($self) = @_;
+        $self->{desc_html} ||=
+                PublicInbox::Hval->utf8($self->description)->as_html;
+}
+
+sub cloneurl {
+        my ($self) = @_;
+        my $url = $self->{cloneurl};
+        return $url if $url;
+        if ($self->{vcs} eq 'git') {
+                $url = PublicInbox::Config::try_cat("$self->{path}/cloneurl");
+                $url = [ split(/\s+/s, $url) ];
+                local $/ = "\n";
+                chomp @$url;
+        }
+        $self->{cloneurl} = $url;
+}
+
 1;