jaroslavtyc / flowmedia-dir-sync
这只是我获得工作的技能证明
1.0.0
2020-09-30 16:40 UTC
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: 2024-08-29 05:40:03 UTC
README
这不是一个适用于生产的代码!
请自行承担风险。
但如果你从中得到灵感,我会很高兴的 😉
目的
我应该能够创建一个 独立、自给自足 的库来通过 JSON 配置和 CLI 控制目录。使用面向对象编程和 PHP(我选择的版本)。
独立
这个库只需通过终端模拟器和 PHP 可执行文件即可运行。
例如
php ./bin/dirsync --dry-run
自给自足
不应使用其他库(甚至不包括 Symfony Console 这样的 shinnies)。
用法
创建一个带有配置指令的 JSON 文件
- 以井号
#
开头的键被视为 动作,值(标量、数组、对象...)然后用作Action->runAction
本身的参数- 有关详细信息,请参阅
\JaroslavTyc\DirSync\Actions\ActionInterface
- 有关详细信息,请参阅
- 不以井号
#
开头的键被视为目录名,并直接用作 创建目录动作 的值- 该 JSON 键指向的任何值都将被忽略(提示:使用
null
) - 有关详细信息,请参阅
\JaroslavTyc\DirSync\Actions\CreateDirAction
- 该 JSON 键指向的任何值都将被忽略(提示:使用
例如
{ "NewDirByDirSyncDirectName": null, "#CreateDir": "NewDirByDirSyncCreateDirAction" }
处理它
php ./bin/dirsync --json-config=json_config_file_for_dir_sync.json
应在当前工作目录中创建两个空目录 NewDirByDirSyncDirectName
和 NewDirByDirSyncCreateDirAction
。
更多动作
创建自己的 动作 实现 \JaroslavTyc\DirSync\Actions\ActionInterface
并将其注册到 \JaroslavTyc\DirSync\ActionsRunner
。
例如
<?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());
原始任务
所有这些都来自 原始 Flowmedia 任务。
与原始任务的差异
root dir
重命名为working dir
,因为 root dir 在 Linux 中有特定的含义working dir
(以前称为root dir
)必须明确提供给同步方法本身,以避免意外和混淆- 除了
working dir
以外的所有配置选项都被接口DirSyncOptionsInterface
包装,其中大多数最初都包含在原始任务的DirSyncInterface
中
安装
最简单的方法是通过 composer 获取它
php composer.phar require jaroslavtyc/flowmedia-dir-sync