jaroslavtyc / flowmedia-dir-sync
Just a proof of my skills to get a job
Installs: 5
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:HTML
pkg:composer/jaroslavtyc/flowmedia-dir-sync
Requires
- php: >= 7.1
- ext-json: *
- ext-posix: *
Requires (Dev)
- phpunit/phpunit: ^9.3
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2025-10-29 02:43:52 UTC
README
NOT a production-ready code!
Use at your own risk.
But I will be happy if you will get inspired by this 😉
Purpose
I should be able to create a standalone, independent library to control directories by a JSON configuration and CLI. With use of object-oriented programming and PHP (in a version of my choice).
Standalone
This library should be runnable just by a terminal emulator and a PHP executable.
for example:
php ./bin/dirsync --dry-run
Independent
No other libraries should be used (not even shinnies as the Symfony Console).
Usage
Create a JSON file with configuration directives:
- key starting with a hash sign
#is processed as an Action, value (scalar, array, object...) is then used as a parameter toAction->runActionitself- see
\JaroslavTyc\DirSync\Actions\ActionInterfacefor details
- see
- key not starting by a hash sign
#is considered as a dir name and is used for Create Dir Action directly as a value- any value pointed by that JSON key will be ignored (hint: use
nullthere) - see
\JaroslavTyc\DirSync\Actions\CreateDirActionfor details
- any value pointed by that JSON key will be ignored (hint: use
for example:
{
"NewDirByDirSyncDirectName": null,
"#CreateDir": "NewDirByDirSyncCreateDirAction"
}
Process it:
php ./bin/dirsync --json-config=json_config_file_for_dir_sync.json
Should create two empty directories NewDirByDirSyncDirectName and NewDirByDirSyncCreateDirAction in a current working directory.
More Actions
Create your own Action implementing \JaroslavTyc\DirSync\Actions\ActionInterface and register them to \JaroslavTyc\DirSync\ActionsRunner.
for example:
<?php namespace JaroslavTyc\DirSync; use JaroslavTyc\DirSync\Actions\ActionInterface; class DeleteDirAction implements ActionInterface { public function getName() : string { return '#DeleteDir'; } public function runAction($context,string $workingDir, bool $dryRun) { // some nasty destroying code } } $actionsRunner = new ActionsRunner(); $actionsRunner->registerAction(new DeleteDirAction());
Original task
All of this comes from the original Flowmedia task.
Differences against original task
root dirrenamed toworking dir, as root dir has specific meaning in Linuxworking dir(formerlyroot dir) has to be provided explicitly to the synchronization method itself to avoid accidents and confusion- all configuration options, except
working dir, are wrapped by interfaceDirSyncOptionsInterface, most of them originally enclosed by original taskDirSyncInterface
Installation
The easiest way is to get it via composer:
php composer.phar require jaroslavtyc/flowmedia-dir-sync