PHPackages                             rah/mtxpc - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. rah/mtxpc

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

rah/mtxpc
=========

Plugin Installer Compiler for Textpattern CMS

0.9.1(4y ago)6611315GPL-2.0PHPPHP &gt;=7.2.0CI failing

Since Oct 19Pushed 7mo ago3 watchersCompare

[ Source](https://github.com/gocom/MassPlugCompiler)[ Packagist](https://packagist.org/packages/rah/mtxpc)[ Docs](https://github.com/gocom/MassPlugCompiler)[ Fund](https://www.paypal.me/jukkasvahn)[ RSS](/packages/rah-mtxpc/feed)WikiDiscussions master Synced 4d ago

READMEChangelog (10)Dependencies (3)Versions (9)Used By (15)

mtxpc
=====

[](#mtxpc)

[![Coverage](https://camo.githubusercontent.com/5180b78653970304e479211e8e07594591130cfdf5823608278a365d51910323/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d676f636f6d5f4d617373506c7567436f6d70696c6572266d65747269633d636f766572616765)](https://sonarcloud.io/dashboard?id=gocom_MassPlugCompiler) [![Quality Gate Status](https://camo.githubusercontent.com/a8bbcf06e7410bbc8be8cb26a15859573d6e3f8246f02d61be3c8a83673daa20/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d676f636f6d5f4d617373506c7567436f6d70696c6572266d65747269633d616c6572745f737461747573)](https://sonarcloud.io/dashboard?id=gocom_MassPlugCompiler)

**mtxpc** compiles [Textpattern CMS](https://textpattern.com) plugin sources into installer packages. Supports multi-file structure and a JSON manifest file.

Install
-------

[](#install)

Using [Composer](https://getcomposer.org):

```
$ composer require rah/mtxpc --dev
```

Or [download](https://github.com/gocom/MassPlugCompiler/releases/latest) a packaged mtxpc.phar from releases.

Usage
-----

[](#usage)

### As a Library

[](#as-a-library)

```
use Rah\Mtxpc\Compiler;

$compiler = new Compiler();

$plugin = $compiler->compile('path/to/plugin/source/directory');

echo $plugin->getInstaller();
```

### Via Command Line

[](#via-command-line)

```
$ vendor/bin/mtxpc [[-h|--help][-c|--compress][--outdir=]]
```

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/ .
```

Example Plugin Template
-----------------------

[](#example-plugin-template)

See [abc\_plugin](https://github.com/gocom/abc_plugin) repository for an example template.

GitHub Action
-------------

[](#github-action)

A [GitHub action](https://github.com/gocom/action-textpattern-package-plugin) is available to integrating plugin compilation to automated build chain.

Plugin Template
---------------

[](#plugin-template)

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.

### Translations

[](#translations)

[Textpacks](https://forum.textpattern.com/viewtopic.php?id=33182), 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](https://github.com/gocom/abc_plugin/blob/master/textpack/en-gb.textpack) and [fi-fi.textpack](https://github.com/gocom/abc_plugin/blob/master/textpack/fi-fi.textpack) files. The `en-gb` doesn't define the language code and is set as the default.

### Manifest

[](#manifest)

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**.

### Help File

[](#help-file)

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.

Development
-----------

[](#development)

See [CONTRIBUTING.md](https://github.com/gocom/MassPlugCompiler/blob/master/CONTRIBUTING.md).

###  Health Score

35

—

LowBetter than 79% of packages

Maintenance44

Moderate activity, may be stable

Popularity20

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 98.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~130 days

Recently: every ~227 days

Total

8

Last Release

1490d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3a34b4e1b662cd2c926e8e89a76f93df266b199fe61508d38026cb952f28e59e?d=identicon)[rah](/maintainers/rah)

---

Top Contributors

[![gocom](https://avatars.githubusercontent.com/u/665186?v=4)](https://github.com/gocom "gocom (72 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

phptextpatterntextpattern-developmentplugintextpattern

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/rah-mtxpc/health.svg)

```
[![Health](https://phpackages.com/badges/rah-mtxpc/health.svg)](https://phpackages.com/packages/rah-mtxpc)
```

###  Alternatives

[ergebnis/composer-normalize

Provides a composer plugin for normalizing composer.json.

1.1k37.3M2.1k](/packages/ergebnis-composer-normalize)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
