Skip to content

Commit

Permalink
Add new show command
Browse files Browse the repository at this point in the history
When configurations use inheritance, it is handy to see the expanded
configuration to get a better feel of what is going to be run. While
Config::Neat already provides a command for this, having a `show`
command helps with the feature being discoverable.
  • Loading branch information
julen committed Oct 31, 2016
1 parent b822b5c commit 191872b
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 0 deletions.
4 changes: 4 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
Revision history

v.next (Not release yet)

- Added new `show` command to display expanded .serge configurations (#40).

1.2 October 29, 2016

- Make TS File serialization pluggable (see #11)
Expand Down
19 changes: 19 additions & 0 deletions doc/pod/serge-show.pod
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
=head1 NAME

serge-show - Show expanded version of a configuration file

=head1 SYNOPSIS

C<< serge show <configuration-file> >>

Where C<< <configuration-file> >> is a path to a specific .serge file.

=head1 DESCRIPTION

B<serge-show> prints out the interpreted configuration file by applying all
inheritance rules. This is useful to check the full configuration that will be
used by Serge.

=head1 SEE ALSO

Part of L<serge> suite.
34 changes: 34 additions & 0 deletions lib/Serge/Command/show.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package Serge::Command::show;
use parent Serge::Command;

use strict;

use Config::Neat::Inheritable;
use Config::Neat::Render;

sub get_commands {
return {
show => {
handler => \&run,
info => 'Show expanded version of a configuration file',
need_config => 1,
},
}
}

sub run {
my ($self) = @_;

my @config_files = $self->{parent}->get_config_files;
die "Multiple configuration files not allowed\n" unless $#config_files == 0;

my $cfg = Config::Neat::Inheritable->new();
my $data = $cfg->parse_file($config_files[0]);

my $renderer = Config::Neat::Render->new();
print $renderer->render($data);

return 0;
}

1;

0 comments on commit 191872b

Please sign in to comment.