App-AltSQL

 view release on metacpan or  search on metacpan

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

I've thought of a number of other features, but so too have my coworkers and friends.  Most people I've spoken with have ideas for future features.  Next time you're using your DB shell and find yourself irritated at a feature or bug in the software ...

=head1 CONFIGURATION

The command line arguments inform how to connect to the database, whereas the configuration file(s) provide behavior and features of the UI.

=head2 Command Line

The following options are available.

=over 4

=item -h HOSTNAME | --host HOSTNAME

=item -u USERNAME | --user USERNAME

=item -p | --password=PASSWORD | -pPASSWORD

=item --port PORT

=item -D DATABASE | --database DATABASE

Basic connection parameters to the MySQL database.

=item --A | --no-auto-rehash

By default, upon startup and whenever the database is changed, the C<information_schema> tables will be read to perform tab completion.  Disable this behavior to get a faster startup time (but no tab complete).

=back

=head2 Config File

We are using L<Config::Any> for finding and parsing the configuration file.  You may use any format you'd like to write it so long as it's support in C<Config::Any>.

=over 4

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

=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



( run in 1.017 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )