The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Passwd::Keyring::Auto::App::ConfigShow;
use strict; use warnings;
use MooseX::App::Command;
extends 'Passwd::Keyring::Auto::App';

use Passwd::Keyring::Auto::Config;

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

  my $cfg_path = $self->config;

  # app, group ?
  my $cfg = Passwd::Keyring::Auto::Config->new(
      location=>$self->config, debug=>$self->debug);
  # environment

  print <<"END";
Passwd::Keyring::Auto configuration
==================================================
END

  print "Configuration file path: ", $cfg->config_location, "\n";
  unless($cfg->config_location->exists()) {
      print "    (file does not exist, to create use 'passwd_keyring config_create')\n";
  } else {
      print "    Config-file based settings applied by default:\n";
      print "        force:  ", $cfg->force || "<not-set>", "\n";
      print "        forbid: ", $cfg->forbid || "<not-set>", "\n";
      print "        prefer: ", $cfg->prefer || "<not-set>", "\n";
      my $per_app = $cfg->apps_with_overrides;
      if(@$per_app) {
          print "    Per-application overrides present for:\n";
          foreach my $pa (@$per_app) {
              print "        $pa\n";
          }
          print "    (check config for more details)\n";
      } else {
          print "    No per-application overrides.\n";
      }
  }

  print "Environment variables overriding config settings:\n";
  foreach my $var (qw(PASSWD_KEYRING_FORCE PASSWD_KEYRING_FORBID PASSWD_KEYRING_PREFER)) {
      print "    $var: ", $ENV{$var} || "<not-set>", "\n";
  }

}

1;

__END__

=head1 SYNOPSIS

    passwd_keyring config_show
    passwd_keyring config_show --config ~/.keyring-bld-tests.cfg

=head1 ABSTRACT

Display current Passwd::Keyring::Auto configuration.

=head1 DESCRIPTION

Show info which configuration file is in use by default, whether it contains
some settings, and which keyring backend would be picked.

=cut