The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Activator::Project

DESCRIPTION

THIS IS A TODO DESCRIPTION. ANY CODE IMPLEMENTED IS ONLY TO LAY DOWN IDEAS.

Control the building and installation of an Activator project. Can sync a development codebase for local or remote instances, build packages for distribution, or install packages based on your Activator project configuration. This modules supports build types:

  • sync

    sync the codebase to the local or a remote server.

  • cpan

    create a cpan distributable tarball for the project

  • tgz

    create a plain tarball of the project

  • rpm

    create a rpm of the project

  • deb

    create a deb of the project

CONFIGURATION

Activator::Builder utilizes Activator::Registry for configuration, and the provided builder script grabs these options using Activator::Options.

Create a project configuration directory activator.d in the top level of your project code directory. Then, create a project YAML configuration file <project>.yml using these project configuration options:

support this project.yml config:

  <realm>:   you can create any number of realms. This option allows
             mutliple definitions of behavior
    build:
      type:  one of sync, cpan, tgz rpm, deb
      dest:
    install:
      type:  one of sync, cpan, tgz rpm, deb
      dest: /path/to/install/base
      user: user to login as
      host: hostname or ip to install to

    packages:
      <package>:
        root: # where the code lives

        # requirements
        build_requires:
        install_requires:
          <type>:  one of sync, cpan, tgz rpm, deb
            <module or package>: <version>

        # these files/dirs copied (recursively) unless listed in 'symlink' section
        include:
          <local dir>: <dest dir>
          <local file>: <dest file>

        # these files are processed via Template Toolkit
        process:
          <local dir>: <dest dir>
          <local file>: <dest file>

        # absolute paths supported, relative must be in the package root
        # when dest is remote, these still get created
        # side affect: $() notation will work when run in bash shells
        symlink:
          <local dir>: <local dir>
          <local file>: <local file>

        services:
          - list of service aliases: any extra processing that a
            service might require is done during 'build', and services
            are restarted during 'install'.

    services: services that are expected to conform with redhat
              style service command ( start|stop|restart|reload ).
      <service alias>:
        init_script: <etc/init.d script location>
        priority:  <priority>
        build: extra processing for 'build' command.
        install: extra processing for 'install' command.
                 These two sections follow the same format for
                 'include','process','symlink' sections in the
                 'packages' section above. For example:
          process:
            /path/to/files: /path/to/output

build

Creates a build directory with contents consisting of the results of processing the include, process, symlink and services sections, plus a PACKAGES directory if the <realm>->build>->type is one of cpan, tgz, rpm, or deb.

install

copies everything from build to install destination