Codeception / Codeception/module-filesystem

Replace Filesystem, FTP with FlySystem in order to support more filesystems

Open
#8 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
PHP
Stars
20
Forks
7
PR merge metrics
No merged PRs in 30d

Description

"[FlySystem](http://flysystem.thephpleague.com/) is a filesystem abstraction which allows you to easily swap out a local filesystem for a remote one. Reducing technical debt and chance of vendor lock-in."

It could replace the custom FileSystem and FTP modules and offer support for many more filesystems. Here is a list of what's available today :
- Local
- Azure
- AWS S3 V2
- AWS S3 V3
- Copy.com
- Dropbox
- FTP / SFTP
- GridFS
- Memory
- Rackspace
- WebDAV
- PHPCR
- ZipArchive
### The API

http://flysystem.thephpleague.com/api/
#### Write Files

`$filesystem->write('path/to/file.txt', 'contents');`
#### Update Files

`$filesystem->update('path/to/file.txt', 'new contents');`
#### Write or Update Files

`$filesystem->put('path/to/file.txt', 'contents');`
#### Read Files

`$contents = $filesystem->read('path/to/file.txt');`
#### Check if a file exists

`$exists = $filesystem->has('path/to/file.txt');`
#### Delete Files

`$filesystem->delete('path/to/file.txt');`
#### Read and Delete

`$contents = $filesystem->readAndDelete('path/to/file.txt');`
#### Rename Files

`$filesystem->rename('filename.txt', 'newname.txt');`
#### Copy Files

`$filesystem->copy('filename.txt', 'duplicate.txt');`
#### Get Mimetypes

`$mimetype = $filesystem->getMimetype('path/to/file.txt');`
#### Get Timestamps

`$timestamp = $filesystem->getTimestamp('path/to/file.txt');`
#### Get File Sizes

`$size = $filesystem->getSize('path/to/file.txt');`
#### Create Directories

`$filesystem->createDir('path/to/nested/directory');`
#### Directories are also made implicitly when writing to a deeper path

`$filesystem->write('path/to/file.txt', 'contents');`
#### Delete Directories

`$filesystem->deleteDir('path/to/directory');`

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating the custom FileSystem and FTP modules named in the issue, then compare their APIs with the FlySystem API linked in the description. Map the existing module behavior and supported operations before deciding the migration scope; done means the replacement supports the required operations without losing current functionality and the module tests pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
operating-systems, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.