Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yosymfony/resource-watcher
A resource watcher for getting changes of your filesystem using Symfony Finder
https://github.com/yosymfony/resource-watcher
file php symfony watcher
Last synced: 1 day ago
JSON representation
A resource watcher for getting changes of your filesystem using Symfony Finder
- Host: GitHub
- URL: https://github.com/yosymfony/resource-watcher
- Owner: yosymfony
- License: mit
- Created: 2014-08-28T19:53:16.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-12-29T15:13:44.000Z (12 months ago)
- Last Synced: 2024-12-15T04:06:50.537Z (8 days ago)
- Topics: file, php, symfony, watcher
- Language: PHP
- Homepage:
- Size: 49.8 KB
- Stars: 70
- Watchers: 6
- Forks: 19
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
A simple resource watcher for getting changes of your filesystem.
[![Build Status](https://travis-ci.org/yosymfony/resource-watcher.png?branch=master)](https://travis-ci.org/yosymfony/resource-watcher)
[![Latest Stable Version](https://poser.pugx.org/yosymfony/resource-watcher/v/stable.png)](https://packagist.org/packages/yosymfony/resource-watcher)## Installation
Use [Composer](http://getcomposer.org/) to install this package:
```bash
composer require yosymfony/resource-watcher
```## How to use?
This package uses [Symfony Finder](http://symfony.com/doc/current/components/finder.html)
to set the criteria to discover file changes.```php
use Symfony\Component\Finder\Finder;
use Yosymfony\ResourceWatcher\Crc32ContentHash;
use Yosymfony\ResourceWatcher\ResourceWatcher;
use Yosymfony\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/yosymfony/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:
* `Yosymfony\ResourceWatcher\Crc32ContentHash`, which hashes the content of the file
* `Yosymfony\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`:```php
$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:
```bash
$ composer test
```