almoste a package
authorheiko
Mon, 14 Jul 2014 15:59:04 +0200
changeset 8 9fe9837ac877
parent 3 8e064c262aa5
child 9 66c9bf22abc5
almoste a package
.hgignore
Build.PL
MANIFEST
MANIFEST.SKIP
bin/read-httpd-conf
lib/App/read_httpd_conf.pm
read-httpd-conf
t/00-basic.t
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Mon Jul 14 15:59:04 2014 +0200
@@ -0,0 +1,6 @@
+\.swp$
+^Build$
+^_build/
+^blib/
+\.bak$
+\bMYMETA
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Build.PL	Mon Jul 14 15:59:04 2014 +0200
@@ -0,0 +1,14 @@
+#! /usr/bin/perl
+use strict;
+use warnings;
+use Module::Build;
+
+Module::Build->new(
+	dist_name => 'read-httpd-conf',
+	dist_version_from => 'lib/App/read-httpd-conf.pm',
+	dist_abstract => 'simple config parser for apache',
+	bin_files => [qw(bin/read-httpd-conf)],
+	requires => {
+		perl => '0',
+	},
+)->create_build_script;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MANIFEST	Mon Jul 14 15:59:04 2014 +0200
@@ -0,0 +1,4 @@
+bin/read-httpd-conf
+Build.PL
+lib/App/read-httpd-conf.pm
+MANIFEST			This list of files
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MANIFEST.SKIP	Mon Jul 14 15:59:04 2014 +0200
@@ -0,0 +1,74 @@
+
+#!start included /usr/share/perl/5.14/ExtUtils/MANIFEST.SKIP
+# Avoid version control files.
+\bRCS\b
+\bCVS\b
+\bSCCS\b
+,v$
+\B\.svn\b
+\B\.git\b
+\B\.gitignore\b
+\b_darcs\b
+\B\.cvsignore$
+\B\.hg\b
+
+# Avoid VMS specific MakeMaker generated files
+\bDescrip.MMS$
+\bDESCRIP.MMS$
+\bdescrip.mms$
+
+# Avoid Makemaker generated and utility files.
+\bMANIFEST\.bak
+\bMakefile$
+\bblib/
+\bMakeMaker-\d
+\bpm_to_blib\.ts$
+\bpm_to_blib$
+\bblibdirs\.ts$         # 6.18 through 6.25 generated this
+
+# Avoid Module::Build generated and utility files.
+\bBuild$
+\b_build/
+\bBuild.bat$
+\bBuild.COM$
+\bBUILD.COM$
+\bbuild.com$
+
+# Avoid temp and backup files.
+~$
+\.old$
+\#$
+\b\.#
+\.bak$
+\.tmp$
+\.#
+\.rej$
+
+# Avoid OS-specific files/dirs
+# Mac OSX metadata
+\B\.DS_Store
+# Mac OSX SMB mount metadata files
+\B\._
+
+# Avoid Devel::Cover and Devel::CoverX::Covered files.
+\bcover_db\b
+\bcovered\b
+
+# Avoid MYMETA files
+^MYMETA\.
+#!end included /usr/share/perl/5.14/ExtUtils/MANIFEST.SKIP
+
+# Avoid configuration metadata file
+^MYMETA\.
+
+# Avoid Module::Build generated and utility files.
+\bBuild$
+\bBuild.bat$
+\b_build
+\bBuild.COM$
+\bBUILD.COM$
+\bbuild.com$
+^MANIFEST\.SKIP
+
+# Avoid archives of this distribution
+\bread-httpd-conf-[\d\.\_]+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/read-httpd-conf	Mon Jul 14 15:59:04 2014 +0200
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+#line 3
+use 5.010;
+use strict;
+use warnings;
+use App::read_httpd_conf;
+use Pod::Usage;
+
+pod2usage if not @ARGV;
+exit App::read_httpd_conf->main(@ARGV);
+
+1;
+
+__END__
+
+=head1 NAME 
+
+ read-httpd-conf
+
+=head1 SYNOPSIS
+
+ read-httpd-conf file
+
+=head1 DESCRIPTION
+
+This small tool reads the apache config file and obeyes all the includes. You may
+then parse the output.
+
+=head1 OPTIONS
+
+None so far.
+
+=cut
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/App/read_httpd_conf.pm	Mon Jul 14 15:59:04 2014 +0200
@@ -0,0 +1,35 @@
+package App::read_httpd_conf;
+
+use 5.010;
+use strict;
+use warnings;
+use Carp;
+use File::Basename;
+use Pod::Usage;
+
+our $VERSION = '0.1';
+
+sub main {
+	shift if $_[0] eq __PACKAGE__;
+	return read_file(@_) ? 0 : 1;
+}
+
+sub read_file {
+    my ($file, $basedir) = @_;
+    $basedir //= dirname $file;
+    open(my $fh, '<', $file)
+      or croak "Can't open $file: $!\n";
+    say "# 1 $file";
+    while (<$fh>) {
+        if (/^\s*include\s+(?<quote>["'])?(?<file>.*?)\k<quote>?\s*$/i) {
+            my $file = $+{file} =~ m{^/} ? $+{file} : "$basedir/$+{file}";
+            say "# $. $file INCLUDE $+{file}";
+            read_file($_, $basedir) foreach (glob -d $file ? "$file/*" : $file);
+            next;
+        }
+        print;
+    }
+    return 1;
+}
+
+1;
--- a/read-httpd-conf	Sat Mar 08 12:24:44 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#!/usr/bin/perl
-use 5.010;
-use strict;
-use warnings;
-use Carp;
-use File::Basename;
-
-sub read_file {
-    my ($file, $basedir) = @_;
-    open(my $fh, '<', $file)
-      or croak "Can't open $file: $!\n";
-    say "# 1 $file";
-    while (<$fh>) {
-        if (/^\s*include\s+(?<quote>["'])?(?<file>.*?)\k<quote>?\s*$/i) {
-            my $file = $+{file} =~ m{^/} ? $+{file} : "$basedir/$+{file}";
-            say "# $. $file INCLUDE $+{file}";
-            read_file($_, $basedir) foreach (glob -d $file ? "$file/*" : $file);
-            next;
-        }
-        print;
-    }
-}
-
-die "$0: Need file name (httpd.conf)\n"
-  unless @ARGV;
-read_file($ARGV[0], dirname($ARGV[0]));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/t/00-basic.t	Mon Jul 14 15:59:04 2014 +0200
@@ -0,0 +1,7 @@
+use Test::More;
+
+use_ok 'App::read_httpd_conf' or BAIL_OUT 'Fatal errors.';
+can_ok 'App::read_httpd_conf', qw(main) or BAIL_OUT 'Fatal errors';;
+
+
+done_testing;