aboutsummaryrefslogtreecommitdiff
path: root/mkslackdesc
diff options
context:
space:
mode:
Diffstat (limited to 'mkslackdesc')
-rwxr-xr-xmkslackdesc72
1 files changed, 72 insertions, 0 deletions
diff --git a/mkslackdesc b/mkslackdesc
new file mode 100755
index 0000000..4795a74
--- /dev/null
+++ b/mkslackdesc
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w
+
+# mkslackdesc
+
+# Convert a README into a valid slack-desc.
+
+# Usage: mkslackdesc [input]
+
+# If input not given, reads the file README in the current dir.
+# To read from standard input, give - as the input file.
+
+# Output: a slack-desc, including the "how to edit" comments
+# and the "handy ruler" line. If the input text won't fit into
+# 11 72-characters lines, the output will not be a valid slack-desc,
+# and you'll get a warning to that effect.
+
+# Output is to slack-desc in the current directory, and is also echoed
+# to standard output.
+
+if(-e "slack-desc") {
+ die "slack-desc already exists in current directory!\n";
+}
+
+chomp ($pkg = `pwd`);
+$pkg =~ s,.*/,,;
+
+if(!@ARGV) {
+ push @ARGV, "README";
+}
+
+open my $f, ">slack-desc" or die $!;
+print "Writing to slack-desc:\n\n";
+
+$ruler = <<EOF;
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+EOF
+
+$ruler .= (' ' x length($pkg)) . <<EOF;
+|-----handy-ruler------------------------------------------------------|
+EOF
+
+print $ruler;
+print $f $ruler;
+
+$lines = 11;
+open my $pipe, "fmt -s -w 71 < $ARGV[0] |" or die $!;
+while($_ = <$pipe>) {
+ --$lines;
+ chomp;
+ my $outline = "$pkg:";
+ $outline .= " $_" if $_;
+ $outline .= "\n";
+ print $outline;
+ print $f $outline;
+}
+
+close $pipe;
+
+if($lines < 0) {
+ warn "slack-desc is too long (should be 11 lines), output not valid\n";
+} else {
+ print "$pkg:\n" for 1..$lines;
+ print $f "$pkg:\n" for 1..$lines;
+}
+
+close $f;