Skip to content

Commit

Permalink
[feature] add AwsCliS3DestinationFactory
Browse files Browse the repository at this point in the history
  • Loading branch information
kbond committed Nov 10, 2022
1 parent 22619ca commit 6446a86
Show file tree
Hide file tree
Showing 14 changed files with 71 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

namespace Zenstruck\BackupBundle\DependencyInjection\Factory\Destination;

use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\DependencyInjection\ChildDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Zenstruck\Backup\Destination\AwsCliS3Destination;
use Zenstruck\BackupBundle\DependencyInjection\Factory\Factory;

/**
* @author Kevin Bond <kevinbond@gmail.com>
*/
class AwsCliS3DestinationFactory implements Factory
{
public function getName(): string
{
return 'aws_cli_s3';
}

public function create(ContainerBuilder $container, string $id, array $config): Reference
{
$serviceId = \sprintf('zenstruck_backup.destination.%s', $id);

$container->setDefinition($serviceId, new ChildDefinition('zenstruck_backup.destination.abstract_aws_cli_s3'))
->replaceArgument(0, $id)
->replaceArgument(1, $config['bucket'])
->replaceArgument(2, $config['timeout'])
->replaceArgument(3, $config['options'])
->addTag('zenstruck_backup.destination')
;

return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
->scalarNode('bucket')->isRequired()->example('s3://foobar/backups')->end()
->integerNode('timeout')->defaultValue(AwsCliS3Destination::DEFAULT_TIMEOUT)->end()
->arrayNode('options')
->prototype('scalar')->end()
->end()
->end()
;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
2 changes: 1 addition & 1 deletion src/DependencyInjection/Factory/Factory.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@ public function create(ContainerBuilder $container, string $id, array $config):
/**
* Adds configuration nodes for the factory.
*/
public function addConfiguration(ArrayNodeDefinition $builder);
public function addConfiguration(ArrayNodeDefinition $builder): void;
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public function create(ContainerBuilder $container, string $id, array $config):
return new Reference($serviceId);
}

public function addConfiguration(ArrayNodeDefinition $builder)
public function addConfiguration(ArrayNodeDefinition $builder): void
{
$builder
->children()
Expand Down
6 changes: 6 additions & 0 deletions src/Resources/config/destinations.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,11 @@
<argument /> <!-- timeout -->
<argument type="collection" /> <!-- options -->
</service>
<service id="zenstruck_backup.destination.abstract_aws_cli_s3" class="Zenstruck\Backup\Destination\AwsCliS3Destination" abstract="true" public="false">
<argument /> <!-- name -->
<argument /> <!-- bucket -->
<argument /> <!-- timeout -->
<argument type="collection" /> <!-- options -->
</service>
</services>
</container>
3 changes: 3 additions & 0 deletions src/Resources/config/factories.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,8 @@
<service id="zenstruck_backup.destination_factory.s3cmd" class="Zenstruck\BackupBundle\DependencyInjection\Factory\Destination\S3CmdDestinationFactory" public="false">
<tag name="zenstruck_backup.destination_factory" />
</service>
<service id="zenstruck_backup.destination_factory.aws_cli_s3" class="Zenstruck\BackupBundle\DependencyInjection\Factory\Destination\AwsCliS3DestinationFactory" public="false">
<tag name="zenstruck_backup.destination_factory" />
</service>
</services>
</container>
3 changes: 3 additions & 0 deletions tests/Fixtures/valid_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ destinations:
stream:
stream:
directory: /foo
s3_alt:
aws_cli_s3:
bucket: "s3://foobar/backups"
profiles:
daily:
scratch_dir: "%kernel.project_dir%/cache/backup"
Expand Down

0 comments on commit 6446a86

Please sign in to comment.