Footprintless::Overlay - An overlay manager
version 1.01
    # Standard way of getting an overlay
    use Footprintless;
    my $overlay = Footprintless->new()->overlay('overlay');
    $overlay->clean();
    $overlay->initialize();
    $overlay->update();
Overlays are a combination of a directory of static files and a directory of templated files that will be merged to an output directory. This is implemented in Template::Overlay. If the overlay entity contains a deployment_coordinate entity, then any calls to initialize will also create a Footprintless::Deployment for the indicated entity and call deploy on it.
A simple overlay:
    overlay => {
        base_dir => "/home/me/foo/base",
        clean => [
            "/opt/tomcat/"
        ],
        hostname => 'localhost',
        key => 'T',
        os => 'linux',
        template_dir => "/home/me/foo/template",
        to_dir => '/opt/foo/tomcat'
    }
A more complex example:
    foo => {
        deployment => { 
            'Config::Entities::inherit' => ['hostname', 'sudo_username'],
            clean => [
                '/opt/foo/tomcat/conf/Catalina/localhost/',
                '/opt/foo/tomcat/temp/',
                '/opt/foo/tomcat/webapps/',
                '/opt/foo/tomcat/work/'
            ],
            resources => {
                bar => '/home/me/.m2/repository/com/pastdev/bar/1.2/bar-1.2.war',
                baz => {
                    coordinate => 'com.pastdev:baz:war:1.0',
                    'as' => 'foo.war',
                    type => 'maven'
                }
            },
            to_dir => '/opt/foo/tomcat/webapps'
        },
        hostname => 'test.pastdev.com',
        overlay => {
            'Config::Entities::inherit' => ['hostname', 'sudo_username'],
            base_dir => '/home/me/foo/base',
            clean => [
                '/opt/foo/tomcat/'
            ],
            deployment_coordinate => 'foo.deployment',
            key => 'T',
            os => 'linux',
            resolver_coordinate => 'foo',
            template_dir => '/home/me/foo/template',
            to_dir => '/opt/foo/tomcat'
        },
        sudo_username => 'developer',
        tomcat => {
            'Config::Entities::inherit' => ['hostname', 'sudo_username'],
            catalina_base => '/opt/foo/tomcat',
            http => {
                port => 20080
            },
            service => {
                action => {
                    'kill' => { command_args => 'stop -force' },
                    'status' => { use_pid => 1 }
                },
                command => '/opt/foo/tomcat/bin/catalina.sh',
                pid_file => '/opt/foo/tomcat/bin/.catalina.pid',
            },
            shutdown => {
                port => 8505,
                password => $properties->{'foo.tomcat.shutdown.password'},
            },
            trust_store => {
                'Config::Entities::inherit' => ['hostname', 'sudo_username'],
                file => '/opt/foo/tomcat/certs/truststore.jks',
                include_java_home_cacerts => 1,
                password => $properties->{'foo.tomcat.trust_store.password'},
            }
        }
    }
Constructs a new overlay configured by $entities at $coordinate. The supported options are:
If no resource_manager is provided, then this value is used when constructing the default provider(s) for the default resource manager.
The command options factory to use. Defaults to an instance of Footprintless::CommandOptionsFactory using the localhost instance of this object.
The command runner to use. Defaults to an instance of Footprintless::CommandRunner::IPCRun.
The localhost alias resolver to use. Defaults to an instance of Footprintless::Localhost configured with load_all().
The resource manager to use. Only used by the deployment if any is specified. Defaults to an instance of Footprintless::ResourceManager configured to use a Footprintless::MavenProvider if Maven::Agent is available, and a Footprintless::UrlProvider in that order.
Cleans the overlay. Each path in the clean entity, will be removed from the destination. If the path ends in a /, then after being removed, the directory will be recreated.
Will call clean, then overlay on an instance of Template::Overlay configured to this entity. Then, if this entity contains a deployment_coordinate, an instance of Footprintless::Deployment will be created for the indicated entity, and its deploy method will be called.
Will overlay ONLY the templated files. It will not clean, copy any files from base_dir, or deploy like initialize does.
Lucas Theisen <lucastheisen@pastdev.com>
This software is copyright (c) 2016 by Lucas Theisen.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Please see those modules/websites for more information related to this module.