Added libraries needed for lintian-style output.
[maemian] / maemian
diff --git a/maemian b/maemian
index 11d9985..376c890 100755 (executable)
--- a/maemian
+++ b/maemian
 
 maemian - Maemo package checker
 
+=head1
+
+Maemian is the maemo version of lintian - a policy checker designed to
+assure the quality of a package uploaded into the maemo.org repositories.
+The goal of maemian is to improve quality by checking that the maemo
+packaging policy is followed. In order to do that it reads files in the
+uploaded deb. Currently maemian only looks at the .dsc file and tries to
+ascertain who uploaded it, and if they used the correct email address.
+
 =head1 EXAMPLE
 
 maemian -i file.dsc
@@ -36,13 +45,48 @@ use warnings;
 use Getopt::Long;
 use Carp;
 
+unshift @INC, "/home/jeremiah/maemian/lib";
+require Maemian::Output;
+my $lintout = new Maemian::Output;
+
 # --- Command line options
-my $inputfile;             # --- A file passed to maemian 
+my $inputfile;             # --- A file passed to maemian
 GetOptions ("inputfile|i=s" => \$inputfile);
 
-if ($inputfile && -x $inputfile) {
-  print "$inputfile\n";
-} else {
-  croak "Have you specified an input file?\n $!\n";
+sub file_tests {
+  use File::Basename;
+  my $path = shift;
+  if (-r $path) {
+    my ($filename, $dirs) = fileparse($path);
+    # --- maemo is a trademarked term
+    if ($filename =~ /maemo/) {
+      print "W: Any use of the word \"maemo\" is subject to trademark.\n";
+    }
+    # --- Open file into an array
+    open my $file, '<', $path or die "Cannot open file: $!\n";
+    my @lines = <$file>;
+    close $file;
+
+    my ($field, $maintainer) = map { split /: / } grep /Maintainer/, @lines;
+    chomp($maintainer);
+    if ($maintainer =~ /(ubuntu|debian)/i) {
+      print "W: Maintainer email address ($maintainer) might be the same as upstream.\n";
+    }
+    else {
+      print "N: $maintainer\n";
+    }
+    if (grep /BEGIN PGP SIGNED MESSAGE/, @lines) {
+      print "N: $filename is signed\n";
+    }
+    # print "\n$dirs\n$filename\n";
+  }
+  else {
+    croak "File not readable: $!\n";
+  }
 }
 
+if ($inputfile) {
+  file_tests($inputfile);
+} else {
+  croak "No input file found: $!\n";
+}