App-AltSQL

 view release on metacpan or  search on metacpan

lib/App/AltSQL.pm  view on Meta::CPAN


=item ~/.altsql.(yml|cnf|ini|js|pl)

Write your configuration file to either the system or the local configuration locations.  The local file will inherit from the global configuration but with local modifications.  For purposes of this example I'll be writing out the config in YAML, bu...

=back

  ---
  prompt: 'altsql> '

  plugins:
    - Tail
    - Dump

  view_plugins:
    - Color
    - UnicodeBox

  App::AltSQL::View::Plugin::Color:
    header_text:
      default: red
    cell_text:
      is_null: blue
      is_primary_key: bold
      is_number: yellow

  App::AltSQL::View::Plugin::UnicodeBox:
    style: heavy_header
    split_lines: 1
    plain_ascii: 0
  
This is the default configuration, and currently encompasses all the configurable settings.  This should be future safe; as you can see, plugins may use this file for their own variables as there are namespaced sections.

=over 4

=item B<prompt>

  prompt: "%u@%h[%d]> "
  # 'username@hostname[database]> '
  prompt: "%c{red}%u%c{reset} %t{%F %T}> '
  # 'username' (in red) ' YYYY-MM-DD HH:MM:SS> '

Provide a custom prompt.  The following variables will be interpolated:

=over 4

=item B<%u>

The username used to connect to the model

=item B<%d>

The current database or '(none)'

=item B<%h>

The hostname the model is connected to

=item B<%%>

An escaped percent sign

=item B<%c{...}>

A L<Term::ANSIColor> color name.  The value will be passed directly to the C<color> method.

=item B<%e{...}>

A block to be eval'ed.  You may use $self to refer to the L<App::AltSQL::Term> object

=item B<%t{...}>

The argument to this option will be passed to L<DateTime> C<strftime> for the current time

=back

=item B<plugins>

An array of plugin names for the main namespace.

=item B<view_plugins>

An array of View plugin names to be applied to each View object created

=back

=head1 EXTENDING

As mentioned above, one key point of this project is to make it easy for people to extend.  For this reason, I've built it on L<Moose> and offer a L<MooseX::Object::Pluggable> interface.  If you extend C<App::AltSQL>, you may want to know about the f...

=cut

use Moose;
use Getopt::Long qw(GetOptionsFromArray);
use Params::Validate;
use Data::Dumper;
use Config::Any;
use Hash::Union qw(union);

our $VERSION = 0.05;
our $| = 1;

# Don't emit 'Wide character in output' warnings
binmode STDOUT, ':utf8';

with 'MooseX::Object::Pluggable';

my @_config_stems = ( '/etc/altsql', "$ENV{HOME}/.altsql" );
my %_default_classes = (
	term => 'App::AltSQL::Term',
	view => 'App::AltSQL::View',
	model => 'App::AltSQL::Model::MySQL',
);
my %default_config = (
	plugins => [ 'Tail', 'Dump' ],
	view_plugins => [ 'Color', 'UnicodeBox' ],
	term_plugins => [],
);

=head2 Accessors



( run in 1.595 second using v1.01-cache-2.11-cpan-39bf76dae61 )