Skip to content

Commit 34c25a8

Browse files
committed
feat: extract unix persmission in a trait
1 parent 8837667 commit 34c25a8

File tree

5 files changed

+68
-60
lines changed

5 files changed

+68
-60
lines changed

src/Adapter/Builder/AbstractAdapterDefinitionBuilder.php

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111

1212
namespace League\FlysystemBundle\Adapter\Builder;
1313

14-
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
15-
use League\FlysystemBundle\Exception\MissingPackageException;
1614
use Symfony\Component\DependencyInjection\Definition;
1715
use Symfony\Component\OptionsResolver\OptionsResolver;
1816

@@ -42,62 +40,4 @@ abstract protected function getRequiredPackages(): array;
4240
abstract protected function configureOptions(OptionsResolver $resolver);
4341

4442
abstract protected function configureDefinition(Definition $definition, array $options, ?string $defaultVisibilityForDirectories);
45-
46-
protected function configureUnixOptions(OptionsResolver $resolver): void
47-
{
48-
$method = method_exists($resolver, 'setOptions') ? 'setOptions' : 'setDefault';
49-
50-
$resolver->$method('permissions', function (OptionsResolver $subResolver) use ($method) {
51-
$subResolver->$method('file', function (OptionsResolver $permsResolver) {
52-
$permsResolver->setDefault('public', 0644);
53-
$permsResolver->setAllowedTypes('public', 'scalar');
54-
55-
$permsResolver->setDefault('private', 0600);
56-
$permsResolver->setAllowedTypes('private', 'scalar');
57-
});
58-
59-
$subResolver->$method('dir', function (OptionsResolver $permsResolver) {
60-
$permsResolver->setDefault('public', 0755);
61-
$permsResolver->setAllowedTypes('public', 'scalar');
62-
63-
$permsResolver->setDefault('private', 0700);
64-
$permsResolver->setAllowedTypes('private', 'scalar');
65-
});
66-
});
67-
}
68-
69-
protected function createUnixDefinition(array $permissions, string $defaultVisibilityForDirectories): Definition
70-
{
71-
return (new Definition(PortableVisibilityConverter::class))
72-
->setFactory([PortableVisibilityConverter::class, 'fromArray'])
73-
->addArgument([
74-
'file' => [
75-
'public' => (int) $permissions['file']['public'],
76-
'private' => (int) $permissions['file']['private'],
77-
],
78-
'dir' => [
79-
'public' => (int) $permissions['dir']['public'],
80-
'private' => (int) $permissions['dir']['private'],
81-
],
82-
])
83-
->addArgument($defaultVisibilityForDirectories)
84-
->setShared(false)
85-
;
86-
}
87-
88-
private function ensureRequiredPackagesAvailable(): void
89-
{
90-
$missingPackages = [];
91-
foreach ($this->getRequiredPackages() as $requiredClass => $packageName) {
92-
if (!class_exists($requiredClass)) {
93-
$missingPackages[] = $packageName;
94-
}
95-
}
96-
97-
if (!$missingPackages) {
98-
return;
99-
}
100-
101-
throw new MissingPackageException(sprintf("Missing package%s, to use the \"%s\" adapter, run:\n\ncomposer require %s", \count($missingPackages) > 1 ? 's' : '', $this->getName(), implode(' ', $missingPackages)));
102-
}
10343
}

src/Adapter/Builder/FtpAdapterDefinitionBuilder.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
*/
2626
final class FtpAdapterDefinitionBuilder extends AbstractAdapterDefinitionBuilder
2727
{
28+
use UnixPermissionTrait;
29+
2830
public function getName(): string
2931
{
3032
return 'ftp';

src/Adapter/Builder/LocalAdapterDefinitionBuilder.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
*/
2424
final class LocalAdapterDefinitionBuilder extends AbstractAdapterDefinitionBuilder
2525
{
26+
use UnixPermissionTrait;
27+
2628
public function getName(): string
2729
{
2830
return 'local';

src/Adapter/Builder/SftpAdapterDefinitionBuilder.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
*/
2828
final class SftpAdapterDefinitionBuilder extends AbstractAdapterDefinitionBuilder
2929
{
30+
use UnixPermissionTrait;
31+
3032
public function getName(): string
3133
{
3234
return 'sftp';
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the flysystem-bundle project.
5+
*
6+
* (c) Titouan Galopin <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace League\FlysystemBundle\Adapter\Builder;
13+
14+
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
15+
use Symfony\Component\DependencyInjection\Definition;
16+
use Symfony\Component\OptionsResolver\OptionsResolver;
17+
18+
/**
19+
* @author Maxime Hélias <[email protected]>
20+
*/
21+
trait UnixPermissionTrait
22+
{
23+
protected function configureUnixOptions(OptionsResolver $resolver): void
24+
{
25+
$resolver->setDefault('permissions', function (OptionsResolver $subResolver) {
26+
$subResolver->setDefault('file', function (OptionsResolver $permsResolver) {
27+
$permsResolver->setDefault('public', 0644);
28+
$permsResolver->setAllowedTypes('public', 'scalar');
29+
30+
$permsResolver->setDefault('private', 0600);
31+
$permsResolver->setAllowedTypes('private', 'scalar');
32+
});
33+
34+
$subResolver->setDefault('dir', function (OptionsResolver $permsResolver) {
35+
$permsResolver->setDefault('public', 0755);
36+
$permsResolver->setAllowedTypes('public', 'scalar');
37+
38+
$permsResolver->setDefault('private', 0700);
39+
$permsResolver->setAllowedTypes('private', 'scalar');
40+
});
41+
});
42+
}
43+
44+
protected function createUnixDefinition(array $permissions, string $defaultVisibilityForDirectories): Definition
45+
{
46+
return (new Definition(PortableVisibilityConverter::class))
47+
->setFactory([PortableVisibilityConverter::class, 'fromArray'])
48+
->addArgument([
49+
'file' => [
50+
'public' => (int) $permissions['file']['public'],
51+
'private' => (int) $permissions['file']['private'],
52+
],
53+
'dir' => [
54+
'public' => (int) $permissions['dir']['public'],
55+
'private' => (int) $permissions['dir']['private'],
56+
],
57+
])
58+
->addArgument($defaultVisibilityForDirectories)
59+
->setShared(false)
60+
;
61+
}
62+
}

0 commit comments

Comments
 (0)