The library for installing and updating snippets, plugins, and libraries from GitHub repositories.
- “Site” — your site.
- “Resource” — snippet, plugin or library that you want to install or update.
- First, the library downloads the repository archive of Resource from GitHub using API and temporary saves it in
assets/cache/ddInstaller/
. - Then it decides whether to install / update Resource or not.
To do this it looks at thecomposer.json
file from the archive and compares withcomposer.json
of Resource on your Site:- Resource will be installed or updated if:
composer.json
in the archive:- Is exist.
- And not empty.
- And contains the valid
version
field.
composer.json
on Site:- Is not exist.
- Or empty.
- Or doesn't contain the
version
field. - Or the
version
field is invalid.
version
in the archive >version
on Site.
- Otherwise, Resource will not be installed.
- Resource will be installed or updated if:
- To avoid accumulation of trash files, the library removes the existing Resource folder before installation and creates it again (e. g.
assets/snippets/ddGetDate/
). - If Resource is a snippet or plugin, the library tries to find its DB file (e. g.
ddGetDate_snippet.php
) and installs / upates it to DB. - Finally, the library copies remaining files and subfolders to the Resource folder.
- PHP >= 7.4
- (MODX)EvolutionCMS >= 1.1
- (MODX)EvolutionCMS.libraries.ddTools >= 0.62
- (MODX)EvolutionCMS.snippets.ddMakeHttpRequest >= 2.3
Elements → Manage Files:
- Create a new folder
assets/libs/ddInstaller/
. - Extract the archive to the folder.
Installs or updates needed snippet, plugin, or library.
-
$params
- Description: Parameters, the pass-by-name style is used.
- Valid values:
arrayAssociative
object
stringJsonObject
— as JSONstringHjsonObject
— as HJSONstringQueryFormatted
— as Query string
- Required
-
$params->url
- Description: Resource GitHub URL.
- E. g.
'https://github.com/DivanDesign/EvolutionCMS.snippets.ddGetDate'
- E. g.
- Valid values:
stringUrl
- Required
- Description: Resource GitHub URL.
-
$params->revision
- Description: The branch name, tag name, or commit hash to retrieve.
- If you specify anything other than
'master'
or any version tag, the distributive will be installed regardless of thecomposer.json
version. This is useful for installing developer versions.
- If you specify anything other than
- Valid values:
string
- Default value:
'master'
- Description: The branch name, tag name, or commit hash to retrieve.
-
$params->type
- Description: Resource type.
- The parameter is case insensitive.
- If
$params->url
contain the following words, you can avoid this parameter and the method will detect type automatically:'snippet'
,'snippets'
—'snippet'
'plugin'
,'plugins'
—'plugin'
'library'
,'libraries'
—'library'
- Valid values:
'snippet'
'plugin'
'library'
- any empty value — will be auto detected from
$params->url
- Default value: —
- Description: Resource type.
$result
- Description: Installation status.
- Valid values:
true
— if the resource is installed or updated successfullyfalse
— if something went wrong or the resource on Site is already up to date
Just run the following PHP code in your sources or Console:
// Include (MODX)EvolutionCMS.libraries.ddInstaller
require_once(
$modx->getConfig('base_path')
. 'assets/libs/ddInstaller/require.php'
);
// Install (MODX)EvolutionCMS.snippets.ddGetDate
\DDInstaller::install([
'url' => 'https://github.com/DivanDesign/EvolutionCMS.snippets.ddGetDate',
]);
- If
ddGetDate
is not exist on your Site, the library will just install it. - If
ddGetDate
is already exist on your Site, the library will check it version and update it if needed.