Generate your PHAR bootstrapping file
Of course running CLI commands to verify contents is not so hard. For example:
But we may expect a better user experience. Adding a --manifest option that will be able to :
- search for the first manifest available in a priority files list.
- show a specific manifest file.
Create your stub
Make for example this stub (see Output tab), either manually or with the following command.
Here, we supposed to have previously generated console-table.txt and manifest.txt resources.
<?php
// default stub template @generated by BOX Manifest 4.0.0
$withManifest = array_search('--manifest', $argv);
$withoutAnsi = array_search('--no-ansi', $argv);
if ($withManifest !== false) {
$manifestDir = '.box.manifests/';
$resources = (($argc - 1 > $withManifest) && !str_starts_with($argv[$withManifest + 1], '-')) ? [$argv[$withManifest + 1]] : ['console-table.txt', 'manifest.txt'];
foreach ($resources as $resource) {
$res = str_replace($manifestDir, '', $resource);
$filename = "phar://" . __FILE__ . "/{$manifestDir}{$res}";
if (file_exists($filename)) {
$manifest = file_get_contents($filename);
if ($withoutAnsi !== false) {
$manifest = preg_replace('#\\x1b[[][^A-Za-z]*[A-Za-z]#', '', $manifest);
}
echo $manifest, PHP_EOL;
exit(0);
} elseif (count($resources) === 1) {
echo sprintf('Manifest "%s" is not available in this PHP Archive.', $resource), PHP_EOL;
exit(2);
}
}
echo 'No manifest found in this PHP Archive', PHP_EOL;
exit(1);
}
// No PHAR config
__HALT_COMPILER(); ?>
Note
Default template resources/default_stub.template is used, but you can make your own if you want to change behaviour.
In this case, specify the --template /path/to/your/template option in previous command. For example:
Declare it
Declare it in your BOX config file, with excerpt :
Compile your PHP Archive
Then compile your PHP Archive.
Display a manifest on runtime
You are now able to display either the first manifest available (console.txt is included and is on top of priority list)
Or the second manifest available (manifest.txt)
And if you ask for an unavailable manifest into the PHP Archive,

