Helpers for a composer package.
Install Zerotoprod\PackageHelper
via Composer:
composer require zero-to-prod/package-helper
This will add the package to your project’s dependencies and create an autoloader entry for it.
Publish files in your package directory.
use Zerotoprod\OmdbModels\PackageHelper;
PackageHelper::publish(
$from,
$to,
PackageHelper::findNamespaceMapping($psr_4, $to),
static function(string $from, string $to){
echo "Copied: $from to $to" . PHP_EOL;
}
);
Integrate this into a composer package.
Update composer.json
:
{
"bin": [
"bin/package-file"
]
}
Create a new file: bin/package-file
#!/usr/bin/env php
<?php
require getcwd() . '/vendor/autoload.php';
use Zerotoprod\PackageHelper\PackageHelper;
if ($argc !== 2) {
die("Usage: <targetDir>\n");
}
$from = __DIR__ . '/../src';
if (!is_dir($from)) {
throw new RuntimeException("Source directory '$from' not found.");
}
$composer_json_file_path = getcwd() . '/composer.json';
if (!is_file($composer_json_file_path)) {
throw new RuntimeException("composer.json not found.");
}
$composer_json_data = json_decode(file_get_contents($composer_json_file_path), true);
$psr_4 = $composer_json_data['autoload']['psr-4'] ?? null;
if (!$psr_4) {
throw new RuntimeException('PSR-4 autoload section missing in composer.json.');
}
$to = rtrim($argv[1], '/');
PackageHelper::publish(
$from,
$to,
PackageHelper::determineNamespace($psr_4, $to),
static function(string $from, string $to){
echo "Copied: $from to $to" . PHP_EOL;
}
);
Contributions, issues, and feature requests are welcome! Feel free to check the issues page if you want to contribute.
git checkout -b feature-branch
).git commit -m 'Add some feature'
).git push origin feature-branch
).