Add support for publishing specific version

* Fix variable reuse bug in publish command.
* Allow providing a specific version to publish.
This commit is contained in:
Christopher Vagnetoft
2026-01-09 17:07:25 +01:00
parent 35691fb0fb
commit 222a7dfc07

View File

@@ -11,6 +11,7 @@ use NoccyLabs\Composer\PackagePlugin\Registry\Credentials\InsecureStore;
use NoccyLabs\Composer\PackagePlugin\Registry\Gitea\GiteaProvider; use NoccyLabs\Composer\PackagePlugin\Registry\Gitea\GiteaProvider;
use NoccyLabs\Composer\PackagePlugin\Registry\RegistryFactory; use NoccyLabs\Composer\PackagePlugin\Registry\RegistryFactory;
use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
class PackagePublishCommand extends BaseCommand class PackagePublishCommand extends BaseCommand
{ {
@@ -20,6 +21,7 @@ class PackagePublishCommand extends BaseCommand
->setName('package:publish') ->setName('package:publish')
->setDescription("Publish a package to a composer package registry") ->setDescription("Publish a package to a composer package registry")
->addArgument("registry", InputArgument::OPTIONAL, "The registry to publish to") ->addArgument("registry", InputArgument::OPTIONAL, "The registry to publish to")
->addArgument("version", InputArgument::OPTIONAL, "The tag to publish (default is latest tag)")
; ;
} }
@@ -27,22 +29,24 @@ class PackagePublishCommand extends BaseCommand
{ {
$credentials = new InsecureStore(); $credentials = new InsecureStore();
$registry = $input->getArgument("registry");
$version = $input->getArgument("version");
$providers = [ $providers = [
'gitea' => new GiteaProvider($credentials) 'gitea' => new GiteaProvider($credentials)
]; ];
$registry = new RegistryFactory($providers); $factory = new RegistryFactory($providers);
$publisher = new PackagePublisher($registry, $output); $publisher = new PackagePublisher($factory, $output);
$project = ProjectInfo::read(); $project = ProjectInfo::read(version: $version);
$registry = $input->getArgument("registry");
if (!$registry) { if (!$registry) {
$output->writeln([ $output->writeln([
"Missing registry to publish to. Please specify the registry like this:", "Missing registry to publish to. Please specify the registry like this:",
"", "",
" <info>gitea:<server></> - to publish to <info>server</> as the default user", " <info>gitea:{server}</> - to publish to <info>server</> as the default user",
" <info>gitea:<server>/<owner></> - to publish to <info>server</> as <info>owner</>", " <info>gitea:{server}:{owner}</> - to publish to <info>server</> as <info>owner</>",
"" ""
]); ]);
return self::INVALID; return self::INVALID;