summaryrefslogtreecommitdiff
path: root/scripts/stats.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/stats.pl')
-rw-r--r--scripts/stats.pl92
1 files changed, 92 insertions, 0 deletions
diff --git a/scripts/stats.pl b/scripts/stats.pl
new file mode 100644
index 0000000..425261f
--- /dev/null
+++ b/scripts/stats.pl
@@ -0,0 +1,92 @@
+#!/usr/bin/perl
+
+# The yChat Project (2003, 2004)
+# The Xerl Project (2005, 2006)
+#
+# This script generates source code and project statistics
+
+use strict;
+
+use scripts::modules::file;
+
+my %stats;
+my $param = shift;
+
+recursive('.');
+
+$stats{"Lines total"} =
+ $stats{"Lines of source"} +
+ $stats{"Lines of scripts"} +
+ $stats{"Lines of text"} +
+ $stats{"Lines of CSS"} +
+ $stats{"Lines of XML"};
+
+unless ( defined $param ) {
+ print "$_ = " . $stats{$_} . "\n" for sort keys %stats;
+
+}
+else {
+ print $stats{$_} . ' ' for sort keys %stats;
+}
+
+print "\n";
+
+sub recursive {
+ my $shift = shift;
+ return unless -d $shift;
+ my @dir = dopen($shift);
+
+ foreach (@dir) {
+ next if /^\.$/o or /^\.{2}$/o;
+
+ if ( -f "$shift/$_" ) {
+ ++$stats{"Number of files total"};
+ filestats("$shift/$_");
+
+ }
+ elsif ( -d "$shift/$_" ) {
+ ++$stats{"Number of dirs total"};
+ recursive("$shift/$_");
+ }
+ }
+}
+
+sub filestats {
+ my $shift = shift;
+ if ( $shift =~ /\.(cpp|h|tmpl)$/o ) {
+ ++$stats{"Number of source files"};
+ $stats{"Lines of source"} += countlines($shift);
+
+ }
+ elsif ( $shift =~ /\.css$/o ) {
+ ++$stats{"Number of CSS files"};
+ $stats{"Lines of CSS"} += countlines($shift);
+
+ }
+ elsif ( $shift =~ /\.(gif|png|jpg)$/o ) {
+ ++$stats{"Number of gfx files"};
+
+ }
+ elsif ( $shift =~ /(\.xml)$/o ) {
+ ++$stats{"Number of XML files"};
+ $stats{"Lines of XML"} += countlines($shift);
+
+ }
+ elsif ( $shift =~ /(\.pl|\.pm|\.sh|configure.*|Makefile.*)$/o ) {
+ ++$stats{"Number of script files"};
+ $stats{"Lines of scripts"} += countlines($shift);
+
+ }
+ elsif ( $shift =~ /(\.txt|[A-Z]+)$/o ) {
+ ++$stats{"Number of text files"};
+ $stats{"Lines of text"} += countlines($shift);
+
+ }
+ elsif ( $shift =~ /\.so$/o ) {
+ ++$stats{"Number of compiled module files"};
+ }
+}
+
+sub countlines {
+ return scalar fopen shift;
+}