attla / resource-watcher
A simple resource watcher using Symfony Finder
Requires
- php: >=5.6
- symfony/finder: ^2.7|^3.0|^4.0|^5.0|^6.0
Requires (Dev)
- phpunit/phpunit: ^5.7
- symfony/filesystem: ^2.7|^3.0|^4.0|^5.0|^6.0
This package is auto-updated.
Last update: 2024-10-22 15:02:19 UTC
README
A simple resource watcher for getting changes of your filesystem.
Installation
Use Composer to install this package:
composer require attla/resource-watcher
How to use?
This package uses Symfony Finder to set the criteria to discover file changes.
use Symfony\Component\Finder\Finder; use Attla\ResourceWatcher\Crc32ContentHash; use Attla\ResourceWatcher\ResourceWatcher; use Attla\ResourceWatcher\ResourceCachePhpFile; $finder = new Finder(); $finder->files() ->name('*.md') ->in(__DIR__); $hashContent = new Crc32ContentHash(); $resourceCache = new ResourceCachePhpFile('/path-cache-file.php'); $watcher = new ResourceWatcher($resourceCache, $finder, $hashContent); $watcher->initialize(); // delete a file $result = $watcher->findChanges(); $result->getDeletedResources() // array of deleted filenames. e.g: "/home/Attla/README.md"
Finding changes
Every time the method findChanges()
of the class ResourceWatcher
is invoked,
it returns an object type ResourceWatcherResult
with information about all the
changes producced in the filesystem. The ResourceWatcherResult
class has the following methods:
getNewFiles()
: Returns an array with the paths of the new resources.getDeteledFiles()
: Returns an array with the paths of deleted resources.getUpdatedFiles()
: Returns an array with the paths of the updated resources.hasChanges()
: Are they changes in your resources?.
Hashing alternatives
Two hashing classes are included in the package:
Attla\ResourceWatcher\Crc32ContentHash
, which hashes the content of the fileAttla\ResourceWatcher\Crc32MetaDataHash
, which hashes the filename and its last modified timestamp
Rebuild cache
To rebuild the resource cache uses rebuild()
method of the class ResourceWatcher
.
Relative paths with the resource cache
Using relative paths with the resource cache is possible thanks to the
ResourceWatcher's method enableRelativePathWithCache
:
$watcher = new ResourceWatcher($resourceCache, $finder, $hashContent); $watcher->enableRelativePathWithCache()
The ResourceWatcherResult
object will has relative paths.
Unit tests
You can run the unit tests with the following command:
$ composer test