mtxpc compiles Textpattern CMS plugin sources into installer packages. Supports multi-file structure and a JSON manifest file.
Using Composer:
$ composer require rah/mtxpc --dev
use Rah\Mtxpc\Compiler;
$compiler = new Compiler();
$plugin = $compiler->compile('path/to/plugin/source/directory');
echo $plugin->getInstaller();
$ vendor/bin/mtxpc [[-h|--help][-c|--compress][--outdir=<path>]] <file>
Examples:
$ vendor/bin/mtxpc path/to/abc_plugin > abc_plugin_v0.1.0.txt
$ vendor/bin/mtxpc -c path/to/abc_plugin > abc_plugin_v0.1.0_zip.txt
$ vendor/bin/mtxpc -c --outdir=dist/ .
See abc_plugin repository for an example template.
A GitHub action is available to integrating plugin compilation to automated build chain.
The main difference compared to Textpattern's vanilla plugin template is how plugins are constructed. Textpattern's official template hosts everything in a single file, while mtxpc splits the sources to separate files; translations, readme, manifest and source code.
Textpacks, Textpattern's plugin localization files, can be stored in a single file, or as separate files, each file storing a different language. The compiler searches .textpack
files from a directory named textpacks
.
Textpattern offers a way to set the default language which is used as the fallback when the plugin doesn't come with user's language. The default language is chosen based on #@language
keyword, or lack of. Textpack files that do not define a language, are treated as the default fallback. Compare abc_plugin's en-gb.texpack and fi-fi.textpack files. The en-gb
doesn't define the language code and is set as the default.
The manifest file, manifest.json
, contains all plugin's meta data. That's the rest of the stuff a plugin is made of, including plugin's version number, author, url, special flags, type, and recommended loading order.
Manifest file can also be used to specify help file's location. By default a help file is expected to be named as help
with any extension, but a different location can be chosen with a file option:
{
"help": {
"file": ["./README.textile"]
}
}
Textile markup can be used in the help file. If the help file's filename ends with .textile
extension, or the file contents start with h1.
tag, the file is treated as if it contained Textile markup.
See CONTRIBUTING.md.