NAME

   OTRS::OPM::Maker::Command::sopm - Build .sopm file based on metadata

VERSION

   version 1.43

DESCRIPTION

   SOPM files are used for OTRS addon creation. They define some metadata
   like the vendor, their URL, packages required or required Perl modules.
   It is an XML file and it's no fun to create it. It not uncommon that
   the list of files included in the addon is not updated before the addon
   is built and released.

   That's why this package exists. You can define the metadata and stuff
   like database changes in a JSON file and the file list is created
   automatically. And you don't have to write the XML tags repeatedly.

INSTALLATION PHASES

   When an OTRS addon is installed, it happens in several phases

   1 CodeInstall - type "pre"

   2 DatabaseInstall - type "pre"

   3 Files are installed

   4 Include SysConfig

   5 DatabaseInstall - type "post"

   6 CodeInstall - type "post"

   These types are important in some cases and you'll see them later.

CONFIGURATION

   You can configure this command with a JSON file.

A simple add on

   This configuration file defines only the metadata.

    {
       "name": "Test",
       "version": "0.0.3",
       "framework": [
           "3.0.x"
       ],
       "vendor": {
           "name":  "Perl-Services.de",
           "url": "http://www.perl-services.de"
       },
       "license": "GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007",
       "description" : {
           "en": "Test sopm command"
       }
    }

   And this .sopm will be created (assuming the file exists)

     <?xml version="1.0" encoding="utf-8" ?>
     <otrs_package version="1.0">
       <!-- GENERATED WITH OTRS::OPM::Maker::Command::sopm (1.27) -->
       <Name>Test</Name>
       <Version>0.0.3</Version>
       <Framework>3.0.x</Framework>
       <Vendor>Perl-Services.de</Vendor>
       <URL>http://www.perl-services.de</URL>
       <Description Lang="en">Test sopm command</Description>
       <License>GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007</License>
       <Filelist>
           <File Permission="644" Location="01_simple_json.t" />
           <File Permission="644" Location="02_intro.t" />
       </Filelist>
     </otrs>

Support more than one framework version

   If the module runs on several framework version, you can define them in
   the list of frameworks

       "framework": [
           "3.0.x",
           "3.1.x",
           "3.2.x",
           "3.2.x"
       ],

   And they will all be listed in the .sopm

       <Framework>3.0.x</Framework>
       <Framework>3.1.x</Framework>
       <Framework>3.2.x</Framework>
       <Framework>3.3.x</Framework>

Required packages and modules

   Some addons depend on other addons and/or Perl modules. So it has to
   define those prerequesits.

       "requires": {
           "package" : {
               "TicketOverviewHooked" : "3.2.1"
           },
           "module" : {
               "Digest::MD5" : "0.01"
           }
       },

   Creates those tags

       <PackageRequired Version="3.2.1">TicketOverviewHooked</PackageRequired>
       <ModuleRequired Version="0.01">Digest::MD5</ModuleRequired>

Database changes

 Create new table

 Insert stuff

 Change Column

AUTHOR

   Renee Baecker <[email protected]>

COPYRIGHT AND LICENSE

   This software is Copyright (c) 2016 by Renee Baecker.

   This is free software, licensed under:

     The Artistic License 2.0 (GPL Compatible)