--- /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;