Initial commit
This commit is contained in:
@@ -5,6 +5,13 @@ namespace NoccyLabs\Composer\PackagePlugin\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Composer\Command\BaseCommand;
|
||||
use NoccyLabs\Composer\PackagePlugin\Package\PackageBuilder;
|
||||
use NoccyLabs\Composer\PackagePlugin\Package\PackagePublisher;
|
||||
use NoccyLabs\Composer\PackagePlugin\Project\ProjectInfo;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\Credentials\InsecureStore;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\Gitea\GiteaProvider;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\RegistryFactory;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
|
||||
class PackageBuildCommand extends BaseCommand
|
||||
{
|
||||
@@ -13,12 +20,51 @@ class PackageBuildCommand extends BaseCommand
|
||||
$this
|
||||
->setName('package:build')
|
||||
->setAliases([ "package" ])
|
||||
->setDescription("Package the library into a zipball, or publish directly");
|
||||
->setDescription("Package the library into a zipball, or publish directly")
|
||||
->addOption("publish", null, InputOption::VALUE_REQUIRED, "Publish to registry immediately after building")
|
||||
->addOption("dirty", null, InputOption::VALUE_NONE, "Build directly from source without cloning")
|
||||
->addOption("force", null, InputOption::VALUE_NONE, "Build even if the output file already exists")
|
||||
;
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
{
|
||||
$output->writeln('Executing');
|
||||
$registry = $input->getOption("publish");
|
||||
|
||||
$builder = new PackageBuilder($output);
|
||||
|
||||
$project = ProjectInfo::read();
|
||||
|
||||
if ($registry && file_exists($project->filename)) {
|
||||
$output->writeln("<fg=black;bg=yellow>Package file already exists. Pass --force to rebuild it.</>");
|
||||
} else {
|
||||
$builder->build($project, $input->getOption("force"));
|
||||
}
|
||||
|
||||
if ($registry) {
|
||||
$credentials = new InsecureStore();
|
||||
|
||||
$providers = [
|
||||
'gitea' => new GiteaProvider($credentials)
|
||||
];
|
||||
|
||||
$factory = new RegistryFactory($providers);
|
||||
$publisher = new PackagePublisher($factory, $output);
|
||||
|
||||
if (!$registry) {
|
||||
$output->writeln([
|
||||
"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>/<owner></> - to publish to <info>server</> as <info>owner</>",
|
||||
""
|
||||
]);
|
||||
return self::INVALID;
|
||||
}
|
||||
|
||||
$publisher->publish($project, $registry);
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,13 @@ namespace NoccyLabs\Composer\PackagePlugin\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Composer\Command\BaseCommand;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\Credentials\InsecureStore;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\Gitea\GiteaProvider;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\RegistryFactory;
|
||||
use Symfony\Component\Console\Helper\QuestionHelper;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||
|
||||
class PackageLoginCommand extends BaseCommand
|
||||
{
|
||||
@@ -12,12 +19,23 @@ class PackageLoginCommand extends BaseCommand
|
||||
{
|
||||
$this
|
||||
->setName('package:login')
|
||||
->setDescription("Login to a composer package registry");
|
||||
->setDescription("Login to a composer package registry")
|
||||
->addOption("forget", null, InputOption::VALUE_NONE, "Forget the login for the registry")
|
||||
->addArgument("server", InputArgument::OPTIONAL, "Registry specification")
|
||||
;
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
{
|
||||
$output->writeln('Executing');
|
||||
$credentials = new InsecureStore();
|
||||
|
||||
$io = new SymfonyStyle($input, $output);
|
||||
|
||||
$server = $input->getArgument("server");
|
||||
$user = $io->ask("Username");
|
||||
$token = $io->ask("Token");
|
||||
|
||||
$credentials->storeToken($server, $user, $token);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,12 @@ namespace NoccyLabs\Composer\PackagePlugin\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Composer\Command\BaseCommand;
|
||||
use NoccyLabs\Composer\PackagePlugin\Package\PackagePublisher;
|
||||
use NoccyLabs\Composer\PackagePlugin\Project\ProjectInfo;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\Credentials\InsecureStore;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\Gitea\GiteaProvider;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\RegistryFactory;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
|
||||
class PackagePublishCommand extends BaseCommand
|
||||
{
|
||||
@@ -12,12 +18,38 @@ class PackagePublishCommand extends BaseCommand
|
||||
{
|
||||
$this
|
||||
->setName('package:publish')
|
||||
->setDescription("Publish a package to a composer repository");
|
||||
->setDescription("Publish a package to a composer package registry")
|
||||
->addArgument("registry", InputArgument::OPTIONAL, "The registry to publish to")
|
||||
;
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
{
|
||||
$output->writeln('Executing');
|
||||
$credentials = new InsecureStore();
|
||||
|
||||
$providers = [
|
||||
'gitea' => new GiteaProvider($credentials)
|
||||
];
|
||||
|
||||
$registry = new RegistryFactory($providers);
|
||||
$publisher = new PackagePublisher($registry, $output);
|
||||
|
||||
$project = ProjectInfo::read();
|
||||
|
||||
$registry = $input->getArgument("registry");
|
||||
if (!$registry) {
|
||||
$output->writeln([
|
||||
"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>/<owner></> - to publish to <info>server</> as <info>owner</>",
|
||||
""
|
||||
]);
|
||||
return self::INVALID;
|
||||
}
|
||||
|
||||
$publisher->publish($project, $registry);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,13 @@ namespace NoccyLabs\Composer\PackagePlugin\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Composer\Command\BaseCommand;
|
||||
use NoccyLabs\Composer\PackagePlugin\Package\PackagePublisher;
|
||||
use NoccyLabs\Composer\PackagePlugin\Project\ProjectInfo;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\Credentials\InsecureStore;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\Gitea\GiteaProvider;
|
||||
use NoccyLabs\Composer\PackagePlugin\Registry\RegistryFactory;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
|
||||
class PackageUnpublishCommand extends BaseCommand
|
||||
{
|
||||
@@ -12,13 +19,44 @@ class PackageUnpublishCommand extends BaseCommand
|
||||
{
|
||||
$this
|
||||
->setName('package:unpublish')
|
||||
->setDescription("Unpublish a version of a package or a package from a composer repository");
|
||||
->setDescription("Unpublish a version of a package or a package from a composer package registry")
|
||||
->addOption("all", null, InputOption::VALUE_NONE, "Allow unpublish all versions of a package by passing all as the version")
|
||||
->addArgument("registry", InputArgument::REQUIRED, "The registry to unpublish from")
|
||||
->addArgument("version", InputArgument::REQUIRED, "The version to unpublish (or with --all, 'all' for all)")
|
||||
;
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
{
|
||||
$output->writeln('Executing');
|
||||
$credentials = new InsecureStore();
|
||||
|
||||
return 0;
|
||||
$providers = [
|
||||
'gitea' => new GiteaProvider($credentials)
|
||||
];
|
||||
|
||||
$factory = new RegistryFactory($providers);
|
||||
$publisher = new PackagePublisher($factory, $output);
|
||||
|
||||
$project = ProjectInfo::read();
|
||||
|
||||
$registry = $input->getArgument("registry");
|
||||
if (!$registry) {
|
||||
$output->writeln([
|
||||
"Missing registry to unpublish from. Please specify the registry like this:",
|
||||
"",
|
||||
" <info>gitea:<server></> - to unpublish from <info>server</> for the default user",
|
||||
" <info>gitea:<server>/<owner></> - to unpublish from <info>server</> for <info>owner</>",
|
||||
""
|
||||
]);
|
||||
return self::INVALID;
|
||||
}
|
||||
|
||||
if ($pickVersion = $input->getArgument("version")) {
|
||||
$project->version = $pickVersion;
|
||||
}
|
||||
|
||||
$publisher->unpublish($project, $registry);
|
||||
|
||||
return self::SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user