Scripts in UBOS Manifests
/docs/gears/developer/reference/manifest/scripts/
Most application instrumentation in UBOS can be accomplished purely with
ubos-manifest.json and template files that are parameterized with variables.
Sometimes, however, running a script or other command is necessary. For that purpose,
AppConfigItems and installers/upgraders of type exec and perlscript are provided.
These allow developers to run code at certain points during Site deployment,
undeployment and other management tasks.
Arbitrary executables
An AppConfigItem of type exec specifies a command that will be executed by UBOS.
Two command-line arguments are passed:
- argument 1: a text string that indicates the operation that is being
applied, such as
deploy,undeploy,install,uninstall, andupgrade(see below). - argument 2: name of a JSON file that contains contextual variables,
included all of those described in :doc:
variables.
Perl scripts
An AppConfigItem of type perlscript specifies a Perl fragment that will be executed by
UBOS through Perls’ eval method. Two variables are being provided by the run-time context:
$operation: contains a text string that indicates the operation that is being applied, such asdeploy,undeploy,install,uninstall, andupgrade(see below).$config: aUBOS::Configurationobject that contains contextual variables, included all of those described in :doc:variables.
Perl fragments typically look like this:
#!/usr/bin/perl
use strict;
use warnings;
my $dataDir = $config->getResolve( 'appconfig.datadir' );
# or look up whatever variables are needed
if( 'deploy' eq $operation ) {
# do something
}
if( 'undeploy' eq $operation ) {
# do something else
}
# potentially more possible values of $operation
1;
The operation parameter
The possible values of the operation parameter are the following:
For exec or perlscript AppConfigItems:
deploy: invoked when the AppConfigItem is deployed as part of the deployment or redeployment of an App to a Site.undeploy: the reverse operation ofdeploy. Invoked when the AppConfigItem is undeployed as part of the undeployment of an App from a Site.
For exec or perlscript installers:
install: invoked when an App is deployed or redeployed to a Site, after all the AppConfigItems have been deployed, but only if no data is to be restored (i.e. it is a virgin install).uninstall: the reverse operation ofinstall. Invoked when an App is undeployed from a Site, before any the AppConfigItems have been undeployed.
For exec or perlscript updaters:
upgrade: invoked when an App is deployed or redeployed to a Site, after all the AppConfigItems have been deployed, but only if backup data is to be restored (i.e. it is a restore or upgrade, rather than a virgin install).
The same executable or script may be used to handle several of these operations, which is why there are different verbs.
For an example, refer to initialize.pl and upgrade.pl in the Wordpress package for UBOS
(source).
This initialize.pl script is used to generate the Wordpress config.php file from a script, instead
of from a file template, and to initialize Wordpress. upgrade.pl invokes the Wordpress data
migration functionality after a Wordpress upgrade.