Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eckinox/eckinox-installer-plugin
A simple Composer plugin to install metapackages with extra files and configurations.
https://github.com/eckinox/eckinox-installer-plugin
Last synced: 8 days ago
JSON representation
A simple Composer plugin to install metapackages with extra files and configurations.
- Host: GitHub
- URL: https://github.com/eckinox/eckinox-installer-plugin
- Owner: eckinox
- License: mit
- Created: 2021-08-20T13:44:11.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-07-13T18:49:08.000Z (over 2 years ago)
- Last Synced: 2024-08-09T18:18:13.796Z (3 months ago)
- Language: PHP
- Size: 33.2 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Composer installer plugin handling file replication
![CI](https://github.com/eckinox/eckinox-installer-plugin/workflows/CI/badge.svg)
A simple Composer plugin to install (meta)packages with extra files and configurations.
## Usage
To get started, simply require this plugin in your project using:```bash
composer require --dev eckinox/installer-plugin
```Once that's done, you can require any Composer package with the `eckinox-metapackage` type.
### Creating `eckinox-metapackage` packages
Eckinox metapackages are the same as all regular packages, with one exception: they can include a `replicate` directory at their root.Whenever a package of that type is installed, every file and directory in the package's `replicate` directory will be replicated as-is in the project's directory.
If a directory in the `replicate` directory already exists in the project, its files will simply be appended to the existing directory. The original won't be deleted.
However, existing files in the project _will_ be overwritten if they have the same name as another file in the package's `replicate` directory.#### Adding custom logic via Handlers
If you need to add extra logic and processing during the replication process, you can create an handler class in your package.Handler classes extend the `Eckinox\Composer\HandlerInterface`, and must be declared in the package's `composer.json` file as such:
```json
...
"extra": {
"class": "Eckinox\\PackageName\\YourHandler"
},
...
```Your handler class must define the following methods:
- `postFileCreationCallback`: Defines what happens when after a file has first been created in the root project.
- `handleExistingFile`: Defines what happens when a file to replicate already exists in the root project.Here is a example of a very basic handler class that simply renames a `rename-me.txt` file to `renamed.txt` when it is first replicated in the main project.
```php