diff --git a/src/DependencyInjection/Factory/Destination/AwsCliS3DestinationFactory.php b/src/DependencyInjection/Factory/Destination/AwsCliS3DestinationFactory.php
new file mode 100644
index 0000000..607de14
--- /dev/null
+++ b/src/DependencyInjection/Factory/Destination/AwsCliS3DestinationFactory.php
@@ -0,0 +1,49 @@
+
+ */
+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()
+ ;
+ }
+}
diff --git a/src/DependencyInjection/Factory/Destination/FlysystemDestinationFactory.php b/src/DependencyInjection/Factory/Destination/FlysystemDestinationFactory.php
index bd296b8..85bd105 100644
--- a/src/DependencyInjection/Factory/Destination/FlysystemDestinationFactory.php
+++ b/src/DependencyInjection/Factory/Destination/FlysystemDestinationFactory.php
@@ -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()
diff --git a/src/DependencyInjection/Factory/Destination/S3CmdDestinationFactory.php b/src/DependencyInjection/Factory/Destination/S3CmdDestinationFactory.php
index 662442d..dbb7ef5 100644
--- a/src/DependencyInjection/Factory/Destination/S3CmdDestinationFactory.php
+++ b/src/DependencyInjection/Factory/Destination/S3CmdDestinationFactory.php
@@ -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()
diff --git a/src/DependencyInjection/Factory/Destination/StreamDestinationFactory.php b/src/DependencyInjection/Factory/Destination/StreamDestinationFactory.php
index fcdce05..f85ca52 100644
--- a/src/DependencyInjection/Factory/Destination/StreamDestinationFactory.php
+++ b/src/DependencyInjection/Factory/Destination/StreamDestinationFactory.php
@@ -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()
diff --git a/src/DependencyInjection/Factory/Factory.php b/src/DependencyInjection/Factory/Factory.php
index 03edcbb..fa4138f 100644
--- a/src/DependencyInjection/Factory/Factory.php
+++ b/src/DependencyInjection/Factory/Factory.php
@@ -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;
}
diff --git a/src/DependencyInjection/Factory/Namer/SimpleNamerFactory.php b/src/DependencyInjection/Factory/Namer/SimpleNamerFactory.php
index 5ca7c29..a6095f4 100644
--- a/src/DependencyInjection/Factory/Namer/SimpleNamerFactory.php
+++ b/src/DependencyInjection/Factory/Namer/SimpleNamerFactory.php
@@ -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()
diff --git a/src/DependencyInjection/Factory/Namer/TimestampNamerFactory.php b/src/DependencyInjection/Factory/Namer/TimestampNamerFactory.php
index 4190267..21521ca 100644
--- a/src/DependencyInjection/Factory/Namer/TimestampNamerFactory.php
+++ b/src/DependencyInjection/Factory/Namer/TimestampNamerFactory.php
@@ -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()
diff --git a/src/DependencyInjection/Factory/Processor/GzipArchiveProcessorFactory.php b/src/DependencyInjection/Factory/Processor/GzipArchiveProcessorFactory.php
index cdf5879..c054135 100644
--- a/src/DependencyInjection/Factory/Processor/GzipArchiveProcessorFactory.php
+++ b/src/DependencyInjection/Factory/Processor/GzipArchiveProcessorFactory.php
@@ -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()
diff --git a/src/DependencyInjection/Factory/Processor/ZipArchiveProcessorFactory.php b/src/DependencyInjection/Factory/Processor/ZipArchiveProcessorFactory.php
index 23e689a..56602f2 100644
--- a/src/DependencyInjection/Factory/Processor/ZipArchiveProcessorFactory.php
+++ b/src/DependencyInjection/Factory/Processor/ZipArchiveProcessorFactory.php
@@ -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()
diff --git a/src/DependencyInjection/Factory/Source/MySqlDumpSourceFactory.php b/src/DependencyInjection/Factory/Source/MySqlDumpSourceFactory.php
index 140b556..117ca17 100644
--- a/src/DependencyInjection/Factory/Source/MySqlDumpSourceFactory.php
+++ b/src/DependencyInjection/Factory/Source/MySqlDumpSourceFactory.php
@@ -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()
diff --git a/src/DependencyInjection/Factory/Source/RsyncSourceFactory.php b/src/DependencyInjection/Factory/Source/RsyncSourceFactory.php
index 5227d3c..5d969a2 100644
--- a/src/DependencyInjection/Factory/Source/RsyncSourceFactory.php
+++ b/src/DependencyInjection/Factory/Source/RsyncSourceFactory.php
@@ -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()
diff --git a/src/Resources/config/destinations.xml b/src/Resources/config/destinations.xml
index 3b022d1..0fcde77 100644
--- a/src/Resources/config/destinations.xml
+++ b/src/Resources/config/destinations.xml
@@ -19,5 +19,11 @@
+
+
+
+
+
+
diff --git a/src/Resources/config/factories.xml b/src/Resources/config/factories.xml
index 76706da..cf7c863 100644
--- a/src/Resources/config/factories.xml
+++ b/src/Resources/config/factories.xml
@@ -39,5 +39,8 @@
+
+
+
diff --git a/tests/Fixtures/valid_config.yml b/tests/Fixtures/valid_config.yml
index 9358b97..d753a42 100644
--- a/tests/Fixtures/valid_config.yml
+++ b/tests/Fixtures/valid_config.yml
@@ -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"