Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mtdowling/burgomaster
Create phars and zips for PHP applications
https://github.com/mtdowling/burgomaster
Last synced: about 2 months ago
JSON representation
Create phars and zips for PHP applications
- Host: GitHub
- URL: https://github.com/mtdowling/burgomaster
- Owner: mtdowling
- License: mit
- Created: 2014-08-18T05:27:44.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-06-01T19:23:27.000Z (over 8 years ago)
- Last Synced: 2024-05-09T14:11:59.717Z (8 months ago)
- Language: PHP
- Homepage:
- Size: 14.6 KB
- Stars: 27
- Watchers: 6
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
===========
Burgomaster
===========Master of towns, burgers, and creating phars and zips for PHP applications.
This script can be used to:
1. Easily create a staging directory for your package.
2. Build a class-map autoloader of all of your PHP files.
3. Create a zip file containing your project, its dependencies, and an
autoloader.
4. Create a phar file that contains all of your project's dependencies and
registers an autoloader when it's loaded.This project will likely never become more than a single file containing a
single class, so feel free to just copy and paste that file into your project
rather than pulling in a new dependency just for builds.Tutorial
--------The following example demonstrates how Guzzle uses this project.
For this example, assume this script is in ``guzzlehttp/src/build/``.Get Burgomaster
~~~~~~~~~~~~~~~Before running your packaging script, you'll need a copy of Burgomaster. This
can be done using composer (mtdowling/burgomaster) or just creating a Makefile
that downloads the Burgomaster.php script.First, create the following Makefile in your project's root directory:
.. code-block:: makefile
package: burgomaster
php build/packager.phpburgomaster:
mkdir -p build/artifacts
curl -s https://raw.githubusercontent.com/mtdowling/Burgomaster/0.0.1/src/Burgomaster.php > build/artifacts/Burgomaster.php.. note::
You can substitute the above URL to use a different tag than ``0.0.1``.
Look at `Burgomaster's releases `_
for a list of available tags.Create a packager.php script
~~~~~~~~~~~~~~~~~~~~~~~~~~~~Now you need to write a ``packager.php`` script, typically located in the
``build/`` directory of a project. Here's what Guzzle's looks like... code-block:: php
deepCopy($file, $file);
}// Copy each dependency to the staging directory. Copy *.php and *.pem files.
$packager->recursiveCopy('src', 'GuzzleHttp', ['php', 'pem']);
$packager->recursiveCopy('vendor/guzzlehttp/streams/src', 'GuzzleHttp/Stream');
// Create the classmap autoloader, and instruct the autoloader to
// automatically require the 'GuzzleHttp/functions.php' script.
$packager->createAutoloader(['GuzzleHttp/functions.php']);
// Create a phar file from the staging directory at a specific location
$packager->createPhar(__DIR__ . '/artifacts/guzzle.phar');
// Create a zip file from the staging directory at a specific location
$packager->createZip(__DIR__ . '/artifacts/guzzle.zip');As you can see, create a ``packager.php`` script is simply a series of actions
taken that just uses Burgomaster to help with some common tasks like creating
a staging directory, building an autoloader, creating a zip, and creating a
phar.make package
~~~~~~~~~~~~Now that you've made your ``packager.php`` script, just run the ``packge``
Makefile target from the command line.::
make package
GitHub Releases
---------------Now that you've got an easy way to package a release, you should setup your
packaging script to be automatically built and deployed to
`GitHub releases `_ using
Travis-CI's `GitHub releases deploy `_
target so that a phar and zip is uploaded when you push a tag to your
repository.