jaroslavtyc/flowmedia-dir-sync

这只是我获得工作的技能证明

1.0.0 2020-09-30 16:40 UTC

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

例如

{
    "NewDirByDirSyncDirectName": null,
    "#CreateDir": "NewDirByDirSyncCreateDirAction"
}

处理它

php ./bin/dirsync --json-config=json_config_file_for_dir_sync.json

应在当前工作目录中创建两个空目录 NewDirByDirSyncDirectNameNewDirByDirSyncCreateDirAction

更多动作

创建自己的 动作 实现 \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