lib/scripts/tools.pl
changeset 42077 96c50a4210a2
child 42124 7519c7c33017
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/scripts/tools.pl	Wed Mar 23 20:51:36 2011 +0100
@@ -0,0 +1,37 @@
+#
+# Author: Makarius
+#
+# tools.pl - list Isabelle tools with description
+#
+
+use strict;
+use warnings;
+
+my @tools = ();
+
+for my $dir (split(":", $ENV{"ISABELLE_TOOLS"})) {
+  if (-d $dir) {
+    if (opendir DIR, $dir) {
+      for my $name (readdir DIR) {
+        my $file = "$dir/$name";
+        if (-f $file and -x $file and !($file =~ /~$/)) {
+          if (open FILE, $file) {
+            my $description;
+            while (<FILE>) {
+              if (!defined($description) and m/DESCRIPTION: *(.*)$/) {
+                $description = $1;
+              }
+            }
+            close FILE;
+            if (defined($description)) {
+              push(@tools, "    $name - $description\n");
+            }
+          }
+        }
+      }
+      closedir DIR;
+    }
+  }
+}
+
+for (sort @tools) { print };