PHPackages                             loadsys/puphpet-release-composer-installer - 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. [DevOps &amp; Deployment](/categories/devops)
4. /
5. loadsys/puphpet-release-composer-installer

Abandoned → [phpfu/puphpet-installer](/?search=phpfu%2Fpuphpet-installer)Composer-plugin[DevOps &amp; Deployment](/categories/devops)

loadsys/puphpet-release-composer-installer
==========================================

Provides a composer custom installer that works with `loadsys/puphpet-release` to add a PuPHPet.com vagrant box to a project via composer. DANGEROUS! Overwrites non-vendor files! Seriously, don't use this, or read the readme VERY carefully.

0.0.5(11y ago)24671[3 issues](https://github.com/phpfu/puphpet-installer/issues)MITPHP

Since Feb 12Pushed 10y ago6 watchersCompare

[ Source](https://github.com/phpfu/puphpet-installer)[ Packagist](https://packagist.org/packages/loadsys/puphpet-release-composer-installer)[ RSS](/packages/loadsys-puphpet-release-composer-installer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (4)Versions (6)Used By (0)

puphpet-release-composer-installer
==================================

[](#puphpet-release-composer-installer)

[![Build Status](https://camo.githubusercontent.com/160ac3891e3fa885c9f3ab8a1f19642f89d2a0e93ef8ab89e89ac46298b89977/68747470733a2f2f7472617669732d63692e6f72672f6c6f61647379732f707570687065742d72656c656173652d636f6d706f7365722d696e7374616c6c65722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/loadsys/puphpet-release-composer-installer)

Provides a composer custom installer that works with `loadsys/puphpet-release` to add a PuPHPet.com vagrant box to a project via composer.

You probably will never need to use this project yourself directly. We use it for our [loadsys/puphpet-release](https://github.com/loadsys/puphpet-release) package to copy parts of the PuPHPet package into the necessary locations for the consuming project.

⚠️ Big Important Warning
------------------------

[](#warning-big-important-warning)

It's critically important to point out that this installer does things that composer [very explicitly](https://github.com/composer/installers#should-we-allow-dynamic-package-types-or-paths-no) **should not be doing.** We break this very good and wise rule only because the tools we're working with (vagrant and puphpet) leave us with no other practical choice. Again: You should **NOT** do what this installer does. In all likelihood there is a better way.

If you use this installer, it will overwrite existing (important!) files in your project. If you have customized your Vagrantfile, then `composer require` a project that uses this installer, *your `Vagrantfile` file and `puphpet/` folder will be unceremoniously overwritten without notice.* Do not complain about this. This is what this installer is designed to do and you've been duly warned of its danger.

Usage
-----

[](#usage)

To use this installer with another composer package, add the following block to your package's `composer.json` file:

```
    "type": "puphpet-release",
    "require": {
        "loadsys/puphpet-release-composer-installer": "*"
    },
```

### Composer Post Install Actions

[](#composer-post-install-actions)

This installer is responsible for performing post-`composer install` actions for the `loadsys/puphpet-release` package.

When this package is included in another project via composer, the installer fires a number of additional actions in order to address some of the incompatibilities between puphpet's default setup and the requirements for Vagrant (such as the `Vagrantfile` living in the project's root directory instead of the composer-installed `/vendors/loadsys/puphpet-release/release/` folder.)

- Copies a Vagrantfile into the consuming project's root folder.
- Copies a puphpet/ folder into the consuming project's root folder.
- Copies the consuming project's `/puphpet.yaml` into the correct place as `/puphpet/config.yaml`.
- Tries to ensure that the consuming project's `/.gitignore` file contains the proper entries to ignore `/Vagrantfile` and `/puphpet/`, if it is present.

Unresolved Questions:

- Do we always overwrite the Vagrantfile and puphpet/ folders?
- What if there are customizations to files/ or exec-\*/ folders? Should we even try to detect those? (diff the contents of the package's release/ folder with the versions in project root?)
- Should we try to validate that the target project's config.yaml file has all expected (mandatory) keys as the spec changes upstream. Can we write/maintain a "unit test" and/or diffing tool for it? It's just YAML after all.
- What should we do if there isn't a `/puphpet.yaml` for us to copy? The VM will surely not work correctly with completely "default" options. Maybe prompt the user to go generate one?

Contributing
------------

[](#contributing)

### Running Unit Tests

[](#running-unit-tests)

- `composer install`
- `vendor/bin/phpunit`

### Manually Testing Installer Output

[](#manually-testing-installer-output)

Testing this composer plugin is difficult because it involves at least 2 other projects: the loadsys/puphpet-release, and the project from which you want to consume it. This project contains a `tests/integration/` directory that is set up to exercise this installer and test the result of including the `loadsys/puphpet-release` package in a consumer project. To use it:

1. Check out this project: `git clone git@github.com:loadsys/puphpet-release-composer-installer.git`
2. Check out a copy of the puphpet-release project somewhere to work on it. `git clone git@github.com:loadsys/puphpet-release.git` (Make a note of this path.)
3. Create a feature branch in either project, and **commit** your changes to the branch. (Committing the changes is very important to the process: Any changes you wish to test must exist in the git index already, not just in your working copy.)
4. Run `./tests/integration/simulate-composer-install.sh`

    The script will prompt you for any necessary information, reset the build/ dir for use, write the appropriate "composer.json" changes for you, and execute a `composer install` command for you in the build/ dir where you can review the results.

    - The `build/` folder should end up with a `Vagrantfile` and `puphpet/` folder in it.
    - The sample `build/puphpet.yaml` file should have been copied to `build/puphpet/config.yaml`.
    - The sample `.gitignore` file should have been "safely" updated to include the new additions to the "root" project folder (`build/`).
5. From here, the process loops through the following steps:

    - Make changes to the puphpet-release or puphpet-release-composer-installer projects.
    - **Commit** the changes to your working branch.
    - Run `./tests/integration/simulate-composer-install.sh` again.
    - Check the results in the `build/` directory.
    - Repeat.
6. Once you're satisfied with the results, push your branch and submit a PR.

### Running Integration Tests

[](#running-integration-tests)

The simulation script also includes a number of functional tests for verifying the results of the installer's operation. Use the `-t` flag to enable them.

- `./tests/integration/simulate-composer-install.sh -t [puphpet-release-branchname]` # Release project branch name defaults to `master`.

The script will report any errors and exit non-zero on failure.

License
-------

[](#license)

[MIT](https://github.com/loadsys/puphpet-release/blob/master/LICENSE). In particular, all [PuPHPet](http://puphpet.com) work belongs to the original authors. This project is strictly for our own convenience.

Copyright
---------

[](#copyright)

© [Loadsys Web Strategies](http://loadsys.com) 2015

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 96.7% 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 ~17 days

Total

5

Last Release

4036d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/58c6913a72757502a801ebc71f995eb1c4f7a53a7de7314a20b9a1f1d6131b60?d=identicon)[jtyost2](/maintainers/jtyost2)

![](https://www.gravatar.com/avatar/2380c6ad9546e6c8ce5c5b641f5a4bce0c4d3e7f3a377dc287936dff50cc3064?d=identicon)[ricog](/maintainers/ricog)

---

Top Contributors

[![beporter](https://avatars.githubusercontent.com/u/637270?v=4)](https://github.com/beporter "beporter (29 commits)")[![jadb](https://avatars.githubusercontent.com/u/33527?v=4)](https://github.com/jadb "jadb (1 commits)")

---

Tags

vagrantpuphpetdangerousoverwrites-filesdo-not-use

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/loadsys-puphpet-release-composer-installer/health.svg)

```
[![Health](https://phpackages.com/badges/loadsys-puphpet-release-composer-installer/health.svg)](https://phpackages.com/packages/loadsys-puphpet-release-composer-installer)
```

###  Alternatives

[shopware/deployment-helper

Shopware deployment tools

19305.3k5](/packages/shopware-deployment-helper)[drevops/git-artifact

Package artifact from your codebase in CI and push it to a separate git repo.

2133.2k](/packages/drevops-git-artifact)

PHPackages © 2026

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