]> git.pld-linux.org Git - packages/rpm.git/blobdiff - rpm-php-requires
- drop platform definitions unused in rpm.org
[packages/rpm.git] / rpm-php-requires
index 30d4e4c428ac601245ad1fbd66f13f229fc0a79d..2a3fb601ac143e2bcc7fd30ca02f84dd91255cee 100644 (file)
@@ -1,19 +1,82 @@
-#!/bin/sh
-if [ $# -lt 1 ]; then
-       echo "You have to specify input file"
-       exit 1
-fi
-
-for i in `echo $@`; do
-       i=`echo $i | grep "\.php"`
-       if [ -n "$i" ]; then
-               j=`cat $i |grep -i ^require_once|egrep -v "^ \*"|sed -e "s/['|\"]/ /" |cut -f 2 -d " "|sed -e "s/\//_/g"|cut -f 1 -d "."`
-               if [ -n "$j" ]; then
-                       for p in $j; do
-                               echo "pear($p)"
-                       done
-                       j=""
-               fi
-       fi
-done
+#!/usr/bin/perl
+#####################################################################
+#                                                                   #
+# Check system dependences between php-pear modules                 #
+#                                                                   #
+# Pawe³ Go³aszewski <blues@ds.pg.gda.pl>                            #
+# Micha³ Moskal <malekith@pld-linux.org>                            #
+# ------------------------------------------------------------------#
+# TODO:                                                             #
+# - extension_loaded - dependencies.                                #
+# - some clean-up...                                                #
+#####################################################################
 
+$pear = "/usr/share/pear";
+
+@files = ();
+%req = ();
+
+foreach (@ARGV ? $ARGV : <> ) {
+       chomp;
+       $f = $_;
+       push @files, $f;
+       # skip non-php files
+       next unless ($f =~ /\.php$/);
+       open(F, "< $f") or die;
+
+       if ($f =~ /$pear/) {
+               $file_dir = $f;
+               $file_dir =~ s|.*$pear/||;
+               $file_dir =~ s|/[^/]*$||;
+       } else {
+               $file_dir = undef;
+       }
+
+       while (<F>) {
+               # skip comments
+               next if (/^\s*(#|\/\/|\*|\/\*)/);
+
+               while (/(\W|^)(require|include)(_once)?
+                         \s* \(? \s* ("([^"]*)"|'([^']*)') 
+                         \s* \)? \s* ;/xg) {
+                       if ($5 ne "") {
+                               $x = $5;
+                       } elsif ($6 ne "") {
+                               $x = $6;
+                       } else {
+                               next;
+                       }
+
+                       next if ($x =~ m|^\./| or $x =~ /\$/);
+                       next unless ($x =~ /\.php$/);
+                       $req{$x} = 1;
+               }
+
+               next unless (defined $file_dir);
+
+               while (/(\W|^)(require|include)(_once)?
+                         \s* \(? \s* dirname \s* \( \s* __FILE__ \s* \) \s* \. \s*
+                         ("([^"]*)"|'([^']*)') 
+                         \s* \)? \s* ;/xg) {
+                       if ($5 ne "") {
+                               $x = $5;
+                       } elsif ($6 ne "") {
+                               $x = $6;
+                       } else {
+                               next;
+                       }
+
+                       next if ($x =~ /\$/);
+                       next unless ($x =~ /\.php$/);
+
+                       $x = "$file_dir/$x";
+                       $x =~ s|/+|/|g;
+                       $req{$x} = 1;
+               }
+       }
+}
+
+f: for $f (keys %req) {
+       for $g (@files) { next f if ($g =~ /\Q$f\E$/); }
+       print "pear($f)\n";
+}
This page took 0.033658 seconds and 4 git commands to generate.