mirror of
https://github.com/sudo-project/sudo.git
synced 2025-08-22 01:49:11 +00:00
Add markdown mode for use with the sudo web site.
This commit is contained in:
parent
a3c1cbd881
commit
e13163ce0a
@ -32,7 +32,7 @@ my $format="%ad %aN <%aE>%n%h%n%B%n";
|
|||||||
# Parse options and build up "git log" command
|
# Parse options and build up "git log" command
|
||||||
my @cmd = ( "git" );
|
my @cmd = ( "git" );
|
||||||
my %opts;
|
my %opts;
|
||||||
getopts('b:R:', \%opts);
|
getopts('b:mR:', \%opts);
|
||||||
push(@cmd, "-b", $opts{"b"}) if exists $opts{"b"};
|
push(@cmd, "-b", $opts{"b"}) if exists $opts{"b"};
|
||||||
push(@cmd, "--git-dir", $opts{"R"}) if exists $opts{"R"};
|
push(@cmd, "--git-dir", $opts{"R"}) if exists $opts{"R"};
|
||||||
push(@cmd, "log", "--log-size", "--name-only", "--date=short", "--format=$format", @ARGV);
|
push(@cmd, "log", "--log-size", "--name-only", "--date=short", "--format=$format", @ARGV);
|
||||||
@ -45,6 +45,7 @@ my @files;
|
|||||||
my $key_date = "";
|
my $key_date = "";
|
||||||
my $log_size = 0;
|
my $log_size = 0;
|
||||||
my @lines;
|
my @lines;
|
||||||
|
my $hash_link = "https://git.sudo.ws/sudo/commit/?id=";
|
||||||
|
|
||||||
# Wrap like "hg log --template=changelog"
|
# Wrap like "hg log --template=changelog"
|
||||||
$Text::Wrap::columns = 77;
|
$Text::Wrap::columns = 77;
|
||||||
@ -72,6 +73,9 @@ while (<LOG>) {
|
|||||||
|
|
||||||
# Check for continued entry (duplicate Date + Author)
|
# Check for continued entry (duplicate Date + Author)
|
||||||
$_ = shift(@lines);
|
$_ = shift(@lines);
|
||||||
|
# Strip author email address for markdown
|
||||||
|
s/\s*<[^>]+>$// if exists $opts{'m'};
|
||||||
|
|
||||||
if ($_ ne $key_date) {
|
if ($_ ne $key_date) {
|
||||||
# New entry
|
# New entry
|
||||||
print "$_\n\n";
|
print "$_\n\n";
|
||||||
@ -106,6 +110,15 @@ print_entry($hash, $body, @files) if defined($hash);
|
|||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
sub print_entry
|
sub print_entry
|
||||||
|
{
|
||||||
|
if (exists $opts{'m'}) {
|
||||||
|
print_entry_markdown(@_);
|
||||||
|
} else {
|
||||||
|
print_entry_plain(@_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub print_entry_plain
|
||||||
{
|
{
|
||||||
my $hash = shift;
|
my $hash = shift;
|
||||||
my $body = shift;
|
my $body = shift;
|
||||||
@ -115,3 +128,24 @@ sub print_entry
|
|||||||
print fill("\t", "\t", $body) . "\n";
|
print fill("\t", "\t", $body) . "\n";
|
||||||
print "\t[$hash]\n\n";
|
print "\t[$hash]\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub print_entry_markdown
|
||||||
|
{
|
||||||
|
my $hash = shift;
|
||||||
|
my $body = shift;
|
||||||
|
my $files = ": * " . join(", ", @_) . ": ";
|
||||||
|
|
||||||
|
# Obfuscate email addresses in body
|
||||||
|
$body =~ s/([^@ ]+@)[\w\.-]+\.(com|org|edu|ws|io)/$1.../g;
|
||||||
|
|
||||||
|
# Escape email chars in body
|
||||||
|
$body =~ s/([@<>])/\\$1/g;
|
||||||
|
|
||||||
|
# Expand GitHub issue and bugzilla links
|
||||||
|
$body =~ s@(GitHub issue #)(\d+)@[$1$2](https://github.com/sudo-project/sudo/issues/$2)@;
|
||||||
|
$body =~ s@(Bug #)(\d+)@[$1$2](https://bugzilla.sudo.ws/show_bug.cgi?id=$2)@;
|
||||||
|
|
||||||
|
print wrap("", " ", $files) . "\n";
|
||||||
|
print fill(" ", " ", $body) . "\n";
|
||||||
|
print " [[${hash}]](${hash_link}${hash})\n\n";
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user