# HG changeset patch # User heiko # Date 1405346344 -7200 # Node ID 9fe9837ac877dcea53f275f445a4da0213da50b2 # Parent 8e064c262aa5f14464e003235a36f1322318832f almoste a package diff -r 8e064c262aa5 -r 9fe9837ac877 .hgignore --- /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 diff -r 8e064c262aa5 -r 9fe9837ac877 Build.PL --- /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; diff -r 8e064c262aa5 -r 9fe9837ac877 MANIFEST --- /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 diff -r 8e064c262aa5 -r 9fe9837ac877 MANIFEST.SKIP --- /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\.\_]+ diff -r 8e064c262aa5 -r 9fe9837ac877 bin/read-httpd-conf --- /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 diff -r 8e064c262aa5 -r 9fe9837ac877 lib/App/read_httpd_conf.pm --- /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+(?["'])?(?.*?)\k?\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; diff -r 8e064c262aa5 -r 9fe9837ac877 read-httpd-conf --- 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+(?["'])?(?.*?)\k?\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])); diff -r 8e064c262aa5 -r 9fe9837ac877 t/00-basic.t --- /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;