Skip to content

Commit e84383b

Browse files
committed
Integrate with oneup/flysystem-bundle
1 parent 3b1e770 commit e84383b

File tree

6 files changed

+59
-2
lines changed

6 files changed

+59
-2
lines changed

BMBackupManagerBundle.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace BM\BackupManagerBundle;
44

5+
use BM\BackupManagerBundle\DependencyInjection\Compiler\FlysystemFilesystemPass;
6+
use Symfony\Component\DependencyInjection\ContainerBuilder;
57
use Symfony\Component\HttpKernel\Bundle\Bundle;
68

79
/**
@@ -11,4 +13,8 @@
1113
*/
1214
class BMBackupManagerBundle extends Bundle
1315
{
16+
public function build(ContainerBuilder $container)
17+
{
18+
$container->addCompilerPass(new FlysystemFilesystemPass());
19+
}
1420
}

DependencyInjection/BMBackupManagerExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use League\Flysystem\Adapter\Local;
77
use League\Flysystem\AwsS3v3\AwsS3Adapter;
88
use League\Flysystem\Dropbox\DropboxAdapter;
9+
use League\Flysystem\FilesystemInterface;
910
use Mhetreramesh\Flysystem\BackblazeAdapter;
1011
use Srmklive\Dropbox\Adapter\DropboxAdapter as Dropbox2Adapter;
1112
use League\Flysystem\Rackspace\RackspaceAdapter;
@@ -41,6 +42,7 @@ public function load(array $configs, ContainerBuilder $container)
4142
'DropboxV2' => 'backup_manager.filesystems.dropbox_v2_filesystem',
4243
'Ftp' => 'backup_manager.filesystems.ftp_filesystem',
4344
'Sftp' => 'backup_manager.filesystems.sftp_filesystem',
45+
'Flysystem' => 'backup_manager.filesystems.flysystem_filesystem',
4446
];
4547

4648
$filesystemDef = $container->getDefinition('backup_manager.filesystems');
@@ -75,6 +77,7 @@ private function validateStorage(array $config)
7577
'DropboxV2' => ['package'=>'srmklive/flysystem-dropbox-v2:^1.0', 'test'=>Dropbox2Adapter::class],
7678
'Ftp' => ['package'=>'league/flysystem:^1.0', 'test'=>Ftp::class],
7779
'Sftp' => ['package'=>'league/flysystem-sftp:^1.0', 'test'=>SftpAdapter::class],
80+
'Flysystem' => ['package'=>'league/flysystem:^1.0', 'test'=> FilesystemInterface::class],
7881
];
7982

8083
foreach ($config as $key => $storageConfig) {
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace BM\BackupManagerBundle\DependencyInjection\Compiler;
4+
5+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6+
use Symfony\Component\DependencyInjection\ContainerBuilder;
7+
use Symfony\Component\DependencyInjection\Reference;
8+
9+
class FlysystemFilesystemPass implements CompilerPassInterface
10+
{
11+
public function process(ContainerBuilder $container)
12+
{
13+
$definition = $container->getDefinition('backup_manager.filesystems.flysystem_filesystem');
14+
15+
if (!empty($definition->getArguments())) {
16+
return;
17+
}
18+
19+
$filesystems = [];
20+
foreach ($container->findTaggedServiceIds('oneup_flysystem.filesystem') as $id => $attributes) {
21+
foreach ($attributes as $attribute) {
22+
if (!isset($attribute['key'])) {
23+
continue;
24+
}
25+
26+
$name = $attribute['key'];
27+
$filesystems[$name] = new Reference($id);
28+
}
29+
}
30+
31+
$arguments = [$filesystems];
32+
if ($container->hasDefinition('oneup_flysystem.mount_manager')) {
33+
$arguments[] = new Reference('oneup_flysystem.mount_manager');
34+
}
35+
36+
$definition->setArguments($arguments);
37+
}
38+
}

DependencyInjection/Configuration.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,11 @@ public function getConfigTreeBuilder()
5757
case 'Sftp':
5858
$this->validateAuthenticationType(['host', 'username', 'password', 'root', 'port', 'timeout', 'privateKey'], $config, 'Sftp');
5959
break;
60+
case 'Flysystem':
61+
$this->validateAuthenticationType(['name', 'prefix'], $config, 'Flysystem');
62+
break;
6063
default:
61-
$validTypes = ['Local', 'AwsS3', 'B2', 'Rackspace', 'Dropbox', 'DropboxV2', 'Ftp', 'Sftp'];
64+
$validTypes = ['Local', 'AwsS3', 'B2', 'Rackspace', 'Dropbox', 'DropboxV2', 'Ftp', 'Sftp', 'Flysystem'];
6265
throw new InvalidConfigurationException(sprintf('Type must be one of "%s", got "%s"', implode(', ', $validTypes), $config['type']));
6366
}
6467
}

Resources/config/services.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ services:
5050
class: BackupManager\Filesystems\SftpFilesystem
5151
public: false
5252

53+
backup_manager.filesystems.flysystem_filesystem:
54+
class: BackupManager\Filesystems\FlysystemFilesystem
55+
arguments: [] # in compiler pass
56+
public: false
57+
5358
backup_manager.filesystems:
5459
class: BackupManager\Filesystems\FilesystemProvider
5560
public: false

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,16 @@
2626
"matthiasnoback/symfony-dependency-injection-test": "^1.2 || ^2.3",
2727
"matthiasnoback/symfony-config-test": "^2.2 || ^3.1",
2828
"nyholm/symfony-bundle-test": "^1.3.1",
29+
"oneup/flysystem-bundle": "^3.0",
2930
"symfony/phpunit-bridge": "^3.4 || ^4.0"
3031
},
3132
"suggest": {
3233
"league/flysystem-aws-s3-v3": "To use AWS S3, version 3",
3334
"mhetreramesh/flysystem-backblaze": "To use B2",
3435
"srmklive/flysystem-dropbox-v2": "To use Dropbox",
3536
"league/flysystem-rackspace": "To use Rackspace",
36-
"league/flysystem-sftp": "To use sftp"
37+
"league/flysystem-sftp": "To use sftp",
38+
"oneup/flysystem-bundle": "To use Flysystem bundle"
3739
},
3840
"autoload": {
3941
"psr-4": { "BM\\BackupManagerBundle\\": "" }

0 commit comments

Comments
 (0)