Name
    Class::Usul::Build - M::B utility methods

Version
    This document describes Class::Usul::Build version v0.21.$Rev: 1 $

Synopsis
       use Class::Usul::Build;
       use MRO::Compat;

       my $builder = q(Class::Usul::Build);
       my $class   = $builder->subclass( class => 'Bob', code  => <<'EOB' );

       sub ACTION_instal { # Spelling mistake intentional
          my $self = shift;

          $self->next::method();

          # Your application specific post installation code goes here

          return;
       }
       EOB

Description
    Subclasses Module::Build. Ask questions during the install phase. The
    answers to the questions determine where the application will be
    installed and which additional actions will take place. Should be
    generic enough for any web application

ACTIONS
  ACTION_distmeta
  distmeta
    Updates license file and changelog

  ACTION_install
  install
    When called from it's subclass this method performs the sequence of
    actions required to install the application. Configuration options are
    written from the file build.json. The "actions" method returns the list
    of steps required to install the application

  ACTION_install_local_cpanm
  install_local_cpanm
    Install App::Cpanminus to the local lib

  ACTION_install_local_deps
  install_local_deps
    Installs dependencies to the local lib

  ACTION_install_local_lib
  install_local_lib
    Install local::lib locally

  ACTION_install_local_perl
  install_local_perl
    Install a specific Perl version to the local Perlbrew area

  ACTION_install_local_perlbrew
  install_local_perlbrew
    Installs Perlbrew locally

  ACTION_installdeps
  installdeps
    Iterates over the *requires* attributes calling CPAN each time to
    install the dependent module

  ACTION_local_archive
  local_archive
    Creates a tarball of the local lib directory

  ACTION_restore_local_archive
  restore_local_archive
    Unpacks an archive tarball of the local lib directory

  ACTION_standalone
  standalone
    Locally installs local lib and all dependencies

Subroutines/Methods
  class_path
       $path = $builder->class_path( $class_name );

    Returns the relative path to the specified class

  cli
       $cli = $builder->cli;

    Returns an instance of Class::Usul::Programs, the command line interface
    object

  cli_info
       $builder->cli_info( @list_of_messages );

    Calls info on the client object

  dispatch
    Overloads the M::B method. Calls "_setup_plugins" then the parent method

  distname
    Turns a class name into a distribution name

  install_actions_class
    Returns the class name of the class which contains the additional
    actions that are performed when the application is installed

  make_tarball
    Overloads the M::B method. Changes the directory which will contain the
    distribution tarball then calls the parent method

  patch_file
    Runs the *patch* utility on the specified source file

  post_install
       $builder->post_install( $config );

    Executes the custom post installation commands

  process_files
       $builder->process_files( $source, $destination );

    Handles the processing of files other than library modules and programs.
    Uses the *Bob::skip_pattern* defined in the subclass to select only
    those files that should be processed. Copies files from source to
    destination, creating the destination directories as required. Source
    can be a single file or a directory. The destination is optional and
    defaults to blib

  process_local_files
    Calls "process_file" setting the source to *local*

  question_class
    Returns the class name of the class which contains the questions that
    are asked when the application is installed

  set_base_path
       $base = $builder->set_base_path( $config );

    Uses the "$config->{style}" attribute to set the Module::Build
    *install_base* attribute to the base directory for this installation.
    Returns that path. Also sets; bin, lib, and var directory paths as
    appropriate. Called from ACTION_install

  skip_pattern
       $regexp = $builder->skip_pattern( $new_regexp );

    Accessor/mutator method. Used by "_copy_file" to skip processing files
    that match this pattern. Set to false to not have a skip list

  update_changelog
    Update the version number and date/time stamp in the Changes file

Private Methods
  _copy_file
       $builder->_copy_file( $source, $destination );

    Called by "process_files". Copies the $source file to the $destination
    directory

Diagnostics
    None

Configuration and Environment
    Edits and stores config information in the file build.json

Dependencies
    Class::Usul
    Module::Build
    Module::Metadata
    MRO::Compat
    Perl::Version
    Try::Tiny

Incompatibilities
    There are no known incompatibilities in this module

Bugs and Limitations
    There are no known bugs in this module. Please report problems to the
    address below. Patches are welcome

Author
    Peter Flanigan, "<Support at RoxSoft.co.uk>"

License and Copyright
    Copyright (c) 2013 Peter Flanigan. All rights reserved

    This program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself. See perlartistic

    This program is distributed in the hope that it will be useful, but
    WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY
    or FITNESS FOR A PARTICULAR PURPOSE

