diff options
Diffstat (limited to 'lib/App/Acmeman/Source/File.pm')
-rw-r--r-- | lib/App/Acmeman/Source/File.pm | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/lib/App/Acmeman/Source/File.pm b/lib/App/Acmeman/Source/File.pm index 561c279..48a4010 100644 --- a/lib/App/Acmeman/Source/File.pm +++ b/lib/App/Acmeman/Source/File.pm @@ -7,2 +7,3 @@ use File::Spec; use parent 'App::Acmeman::Source'; +use Getopt::Long qw(GetOptionsFromArray :config gnu_getopt no_ignore_case); @@ -12,2 +13,6 @@ sub new { my $ignore = '^\.|~$|\.bak$|^#.*#$'; + my $host; + GetOptionsFromArray(\@_, + 'ignore|i=s' => \$ignore, + 'host|h=s' => \$host); unless ($pattern =~ m{[][*?]}) { @@ -16,3 +21,5 @@ sub new { } - bless { pattern => $pattern, ignore => $ignore }, $class; + bless { pattern => $pattern, + ignore => $ignore, + host => $host }, $class; } @@ -23,2 +30,5 @@ sub scan { my $err = 0; + if ($self->{host}) { + $self->define_domain($self->{host}); + } foreach my $file (glob $self->{pattern}) { @@ -37,8 +47,12 @@ sub load { return 0; - }; + }; chomp(my @lines = <$fh>); close $fh; - my $cn = shift @lines; - $self->define_domain($cn); - $self->define_alias($cn, @lines); + if ($self->{host}) { + $self->define_alias($self->{host}, @lines); + } else { + my $cn = shift @lines; + $self->define_domain($cn); + $self->define_alias($cn, @lines); + } return 1; |