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 26, 2016
1 parent e6d5b17 commit 255f8c7
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ Revision history
- When job fails, we now move on to the next job in the config
(previously the entire config would be skipped)

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

1.1 April 20, 2016

- On OS X, expand `~` to the actual `$HOME` path in SQLite DB connection string (#1)
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.
33 changes: 33 additions & 0 deletions lib/Serge/Command/show.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
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'
},
}
}

sub run {
my $config_file = $ARGV[0];

die "No configuration file specified\n" unless defined $config_file;
die "Multiple configuration files not allowed\n" unless $#ARGV == 0;

my $cfg = Config::Neat::Inheritable->new();
my $data = $cfg->parse_file($config_file);

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

return 0;
}

1;

0 comments on commit 255f8c7

Please sign in to comment.